diff --git a/0nesheep_ip_master/authorship.json b/0nesheep_ip_master/authorship.json index 9560b168..411f7916 100644 --- a/0nesheep_ip_master/authorship.json +++ b/0nesheep_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":" LocalDate deadline;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":" public Deadline(String name, String deadline) throws InvalidCommandException{","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":" this.deadline \u003d LocalDate.parse(deadline);","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":" \"Invalid input format for date :( Please use the format yyyy-mm-dd instead!\");","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":" String formattedDate \u003d this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"0nesheep"},"content":" return String.format(\"%s %s (by: %s)\", \"[D]\", super.toString(), formattedDate);","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"0nesheep"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"0nesheep"},"content":" public String dataString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"0nesheep"},"content":" return String.format(\"%s|%s|%s\\n\", \"D\", super.dataString(), deadline);","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"0nesheep":26}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"import java.lang.reflect.Array;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":"import java.util.List;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":"import java.io.File;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" private static List\u003cString\u003e validCommands \u003d new ArrayList\u003c\u003e(List.of(\"todo\", \"deadline\", \"event\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":" private static String storePath \u003d \"./data/storage.txt\";","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":" public static void echoText(String text) {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" %s\\n\", text);","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"0nesheep"},"content":" public static void addList(Task task, ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"0nesheep"},"content":" list.add(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" Got it! I added:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" %s\\n\", task.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" You now have %d tasks in your list :D\\n\", list.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"0nesheep"},"content":" public static void printList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"0nesheep"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"0nesheep"},"content":" if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" Nothing added to list yet!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"0nesheep"},"content":" for (Task task : list) {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" %d. %s\\n\", count, task.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"0nesheep"},"content":" count++;","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"0nesheep"},"content":" private static void markTask(String[] split, ArrayList\u003cTask\u003e list) throws InvalidCommandException {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"0nesheep"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(\"Wrong format! Please include the number that you want me to mark \u003e:(\");","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"0nesheep"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"0nesheep"},"content":" int number \u003d Integer.parseInt(split[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"0nesheep"},"content":" if (number \u003c 1 || number \u003e list.size()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"0nesheep"},"content":" throw new InvalidTaskNumberException(\"Invalid number! Index does not exist \u003e:((\");","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"0nesheep"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"0nesheep"},"content":" Task task \u003d list.get(number - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"0nesheep"},"content":" task.markDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" Yippee! I have marked this task as done ;D\");","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" %s\\n\", task.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"0nesheep"},"content":" private static void unmarkTask(String[] split, ArrayList\u003cTask\u003e list) throws InvalidCommandException {","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"0nesheep"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(\"Wrong format! Please include the number that you want me to unmark \u003e:(\");","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"0nesheep"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"0nesheep"},"content":" int number \u003d Integer.parseInt(split[1]);","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"0nesheep"},"content":" if (number \u003c 1 || number \u003e list.size()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"0nesheep"},"content":" throw new InvalidTaskNumberException(\"Invalid number! Index does not exist \u003e:((\");","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"0nesheep"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"0nesheep"},"content":" Task task \u003d list.get(number - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"0nesheep"},"content":" task.markNotDone();","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" Awww...I have marked this task as not done yet :(\");","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" %s\\n\", task.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"0nesheep"},"content":" private static void deleteTask(String[] split, ArrayList\u003cTask\u003e list) throws InvalidCommandException {","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"0nesheep"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(\"Wrong format! Please include the number that you want me to delete \u003e:(\");","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"0nesheep"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"0nesheep"},"content":" int number \u003d Integer.parseInt(split[1]);","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"0nesheep"},"content":" if (number \u003c 1 || number \u003e list.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"0nesheep"},"content":" throw new InvalidTaskNumberException(\"Invalid number! Index does not exist \u003e:((\");","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"0nesheep"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"0nesheep"},"content":" Task task \u003d list.get(number - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"0nesheep"},"content":" list.remove(number - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" Successfully removed task!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" %s\\n\", task.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" You have %d tasks left in the list :D\\n\", list.size());","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":99,"author":{"gitId":"0nesheep"},"content":" private static void createTask(String[] split, ArrayList\u003cTask\u003e list) throws InvalidCommandException {","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"0nesheep"},"content":" Task newTask;","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"0nesheep"},"content":" if (!validCommands.contains(split[0].toLowerCase())) {","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(\"I don\u0027t quite understand that command :\u0027( Sorry...\");","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"0nesheep"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(\"You need to tell me the task name \u003e:0\");","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"0nesheep"},"content":" if (split[0].toLowerCase().equals(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"0nesheep"},"content":" newTask \u003d new ToDo(split[1].trim());","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"0nesheep"},"content":" } else if (split[0].toLowerCase().equals(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"0nesheep"},"content":" String[] deadlineSplit \u003d split[1].trim().split(\"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"0nesheep"},"content":" if (deadlineSplit.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"0nesheep"},"content":" \"Invalid format \u003e:( Make sure you used \u0027/by\u0027 to indicate the deadline!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"0nesheep"},"content":" newTask \u003d new Deadline(deadlineSplit[0].trim(), deadlineSplit[1].trim());","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"0nesheep"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"0nesheep"},"content":" String[] fromSplit \u003d split[1].split(\"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"0nesheep"},"content":" if (fromSplit.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"0nesheep"},"content":" \"Invalid format \u003e:( Make sure you used \u0027/from\u0027 to indicate event start time!\"","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"0nesheep"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"0nesheep"},"content":" String eventName \u003d fromSplit[0].trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"0nesheep"},"content":" String[] toSplit \u003d fromSplit[1].split(\"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"0nesheep"},"content":" if (toSplit.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"0nesheep"},"content":" \"Invalid format \u003e:( Make sure you used \u0027/to\u0027 to indicate event end time!\"","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"0nesheep"},"content":" );","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"0nesheep"},"content":" String from \u003d toSplit[0].trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"0nesheep"},"content":" String to \u003d toSplit[1].trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"0nesheep"},"content":" newTask \u003d new Event(eventName, from, to);","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"0nesheep"},"content":" addList(newTask, list);","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":138,"author":{"gitId":"0nesheep"},"content":" private static void loadTasks(Scanner scanner, ArrayList\u003cTask\u003e list) throws InvalidCommandException{","lastModifiedDate":"2024-02-01"},{"lineNumber":139,"author":{"gitId":"0nesheep"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":140,"author":{"gitId":"0nesheep"},"content":" String currentTask \u003d scanner.nextLine();","lastModifiedDate":"2024-02-01"},{"lineNumber":141,"author":{"gitId":"0nesheep"},"content":" String[] taskDetails \u003d currentTask.split(\"\\\\|\");","lastModifiedDate":"2024-02-01"},{"lineNumber":142,"author":{"gitId":"0nesheep"},"content":" Task newTask \u003d null;","lastModifiedDate":"2024-02-01"},{"lineNumber":143,"author":{"gitId":"0nesheep"},"content":" switch (taskDetails[0]) {","lastModifiedDate":"2024-02-01"},{"lineNumber":144,"author":{"gitId":"0nesheep"},"content":" case \"T\":","lastModifiedDate":"2024-02-01"},{"lineNumber":145,"author":{"gitId":"0nesheep"},"content":" newTask \u003d new ToDo(taskDetails[2]);","lastModifiedDate":"2024-02-01"},{"lineNumber":146,"author":{"gitId":"0nesheep"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":147,"author":{"gitId":"0nesheep"},"content":" case \"D\":","lastModifiedDate":"2024-02-01"},{"lineNumber":148,"author":{"gitId":"0nesheep"},"content":" newTask \u003d new Deadline(taskDetails[2], taskDetails[3]);","lastModifiedDate":"2024-02-01"},{"lineNumber":149,"author":{"gitId":"0nesheep"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":150,"author":{"gitId":"0nesheep"},"content":" case \"E\":","lastModifiedDate":"2024-02-01"},{"lineNumber":151,"author":{"gitId":"0nesheep"},"content":" newTask \u003d new Event(taskDetails[2], taskDetails[3], taskDetails[4]);","lastModifiedDate":"2024-02-01"},{"lineNumber":152,"author":{"gitId":"0nesheep"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":153,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":154,"author":{"gitId":"0nesheep"},"content":" if (newTask !\u003d null) {","lastModifiedDate":"2024-02-01"},{"lineNumber":155,"author":{"gitId":"0nesheep"},"content":" if (taskDetails[1].equals(\"true\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":156,"author":{"gitId":"0nesheep"},"content":" newTask.markDone();","lastModifiedDate":"2024-02-01"},{"lineNumber":157,"author":{"gitId":"0nesheep"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":158,"author":{"gitId":"0nesheep"},"content":" newTask.markNotDone();","lastModifiedDate":"2024-02-01"},{"lineNumber":159,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":160,"author":{"gitId":"0nesheep"},"content":" list.add(newTask);","lastModifiedDate":"2024-02-01"},{"lineNumber":161,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":162,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":163,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":164,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":165,"author":{"gitId":"0nesheep"},"content":" private static void resetSave() {","lastModifiedDate":"2024-02-01"},{"lineNumber":166,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":167,"author":{"gitId":"0nesheep"},"content":" Files.delete(Paths.get(storePath));","lastModifiedDate":"2024-02-01"},{"lineNumber":168,"author":{"gitId":"0nesheep"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":169,"author":{"gitId":"0nesheep"},"content":" System.err.println(\"Error deleting last saved file: \" + e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":170,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":171,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":172,"author":{"gitId":"0nesheep"},"content":" private static void storeData(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-02-01"},{"lineNumber":173,"author":{"gitId":"0nesheep"},"content":" for (Task task : list) {","lastModifiedDate":"2024-02-01"},{"lineNumber":174,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":175,"author":{"gitId":"0nesheep"},"content":" task.writeToData(storePath);","lastModifiedDate":"2024-02-01"},{"lineNumber":176,"author":{"gitId":"0nesheep"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":177,"author":{"gitId":"0nesheep"},"content":" System.err.println(\"Error writing file to storage: \" + e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":178,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":179,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":180,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":181,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":182,"author":{"gitId":"0nesheep"},"content":" String name \u003d \"Yippee\";","lastModifiedDate":"2024-01-25"},{"lineNumber":183,"author":{"gitId":"0nesheep"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":184,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":185,"author":{"gitId":"0nesheep"},"content":" //load previous tasks","lastModifiedDate":"2024-02-01"},{"lineNumber":186,"author":{"gitId":"0nesheep"},"content":" File directory \u003d new File(\"./data\");","lastModifiedDate":"2024-02-01"},{"lineNumber":187,"author":{"gitId":"0nesheep"},"content":" if (!directory.exists()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":188,"author":{"gitId":"0nesheep"},"content":" directory.mkdir();","lastModifiedDate":"2024-02-01"},{"lineNumber":189,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":190,"author":{"gitId":"0nesheep"},"content":" File file \u003d new File(storePath);","lastModifiedDate":"2024-02-01"},{"lineNumber":191,"author":{"gitId":"0nesheep"},"content":" Scanner fileSc \u003d null;","lastModifiedDate":"2024-02-01"},{"lineNumber":192,"author":{"gitId":"0nesheep"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":193,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":194,"author":{"gitId":"0nesheep"},"content":" file.createNewFile();","lastModifiedDate":"2024-02-01"},{"lineNumber":195,"author":{"gitId":"0nesheep"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":196,"author":{"gitId":"0nesheep"},"content":" System.err.println(\"Error trying to create new data storage: \" + e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":197,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":198,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":199,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":200,"author":{"gitId":"0nesheep"},"content":" fileSc \u003d new Scanner(file);","lastModifiedDate":"2024-02-01"},{"lineNumber":201,"author":{"gitId":"0nesheep"},"content":" } catch(FileNotFoundException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":202,"author":{"gitId":"0nesheep"},"content":" System.err.println(\"Storage data file does not exist: \" + e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":203,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":204,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":205,"author":{"gitId":"0nesheep"},"content":" loadTasks(fileSc, list);","lastModifiedDate":"2024-02-01"},{"lineNumber":206,"author":{"gitId":"0nesheep"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":207,"author":{"gitId":"0nesheep"},"content":" System.err.println(\"Error in stored data format: \" + e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":208,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":209,"author":{"gitId":"0nesheep"},"content":" fileSc.close();","lastModifiedDate":"2024-02-01"},{"lineNumber":210,"author":{"gitId":"0nesheep"},"content":" //greeting","lastModifiedDate":"2024-01-25"},{"lineNumber":211,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":212,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" Hello! I\u0027m %s\\n\", name);","lastModifiedDate":"2024-01-25"},{"lineNumber":213,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":214,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":215,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":216,"author":{"gitId":"0nesheep"},"content":" //scan for input","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"0nesheep"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":218,"author":{"gitId":"0nesheep"},"content":" String command \u003d sc.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":219,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":220,"author":{"gitId":"0nesheep"},"content":" //keep checking for commands until user says bye","lastModifiedDate":"2024-02-01"},{"lineNumber":221,"author":{"gitId":"0nesheep"},"content":" while (!command.toLowerCase().equals(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":222,"author":{"gitId":"0nesheep"},"content":" // split command by spaces","lastModifiedDate":"2024-01-25"},{"lineNumber":223,"author":{"gitId":"0nesheep"},"content":" String[] split \u003d command.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":224,"author":{"gitId":"0nesheep"},"content":" if (split[0].toLowerCase().equals(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":225,"author":{"gitId":"0nesheep"},"content":" printList(list);","lastModifiedDate":"2024-01-25"},{"lineNumber":226,"author":{"gitId":"0nesheep"},"content":" } else if (split[0].toLowerCase().equals(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":227,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":228,"author":{"gitId":"0nesheep"},"content":" markTask(split, list);","lastModifiedDate":"2024-01-25"},{"lineNumber":229,"author":{"gitId":"0nesheep"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":230,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":231,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" %s\\n\", e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":232,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":233,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":234,"author":{"gitId":"0nesheep"},"content":" } else if (split[0].toLowerCase().equals(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":235,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":236,"author":{"gitId":"0nesheep"},"content":" unmarkTask(split, list);","lastModifiedDate":"2024-01-25"},{"lineNumber":237,"author":{"gitId":"0nesheep"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":238,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":239,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" %s\\n\", e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":240,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":241,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":242,"author":{"gitId":"0nesheep"},"content":" } else if (split[0].toLowerCase().equals(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":243,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":244,"author":{"gitId":"0nesheep"},"content":" deleteTask(split, list);","lastModifiedDate":"2024-01-25"},{"lineNumber":245,"author":{"gitId":"0nesheep"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":246,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":247,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" %s\\n\", e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":248,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":249,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":250,"author":{"gitId":"0nesheep"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":251,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":252,"author":{"gitId":"0nesheep"},"content":" createTask(split, list);","lastModifiedDate":"2024-01-25"},{"lineNumber":253,"author":{"gitId":"0nesheep"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":254,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":255,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" %s\\n\", e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":256,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":257,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":258,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":259,"author":{"gitId":"0nesheep"},"content":" command \u003d sc.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":260,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":261,"author":{"gitId":"0nesheep"},"content":" sc.close();","lastModifiedDate":"2024-02-01"},{"lineNumber":262,"author":{"gitId":"0nesheep"},"content":" //exit","lastModifiedDate":"2024-01-24"},{"lineNumber":263,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":264,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" Bye! Hope to see you again soon wooo!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":265,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-24"},{"lineNumber":266,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":267,"author":{"gitId":"0nesheep"},"content":" resetSave();","lastModifiedDate":"2024-02-01"},{"lineNumber":268,"author":{"gitId":"0nesheep"},"content":" storeData(list);","lastModifiedDate":"2024-02-01"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":270,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"0nesheep":266,"-":4}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":" LocalDate from;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":" LocalDate to;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":" public Event(String name, String from, String to) throws InvalidCommandException {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":" this.from \u003d LocalDate.parse(from);","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" this.to \u003d LocalDate.parse(to);","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":" \"Invalid input format for date :( Please use the format yyyy-mm-dd instead!\");","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"0nesheep"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"0nesheep"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"0nesheep"},"content":" String formattedFrom \u003d this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"0nesheep"},"content":" String formattedTo \u003d this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"0nesheep"},"content":" return String.format(\"%s %s (from: %s to: %s)\", \"[E]\", super.toString(), formattedFrom, formattedTo);","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"0nesheep"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"0nesheep"},"content":" public String dataString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"0nesheep"},"content":" return String.format(\"%s|%s|%s|%s\\n\", \"E\", super.dataString(), this.from, this.to);","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"0nesheep":32}},{"path":"src/main/java/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"public class InvalidCommandException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":" public InvalidCommandException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"0nesheep":5}},{"path":"src/main/java/InvalidTaskNumberException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"public class InvalidTaskNumberException extends InvalidCommandException {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":" public InvalidTaskNumberException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"0nesheep":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"import java.io.File;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"public class Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":" private String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" public void markDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":" public void markNotDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"0nesheep"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"0nesheep"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"0nesheep"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"0nesheep"},"content":" String checkBox \u003d isDone ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"0nesheep"},"content":" return String.format(\"%s %s\", checkBox, name);","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"0nesheep"},"content":" public String dataString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"0nesheep"},"content":" return String.format(\"%s|%s\", this.isDone, this.name);","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"0nesheep"},"content":" public void writeToData(String filePath) throws IOException {","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"0nesheep"},"content":" FileWriter fileWriter \u003d new FileWriter(filePath, true);","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"0nesheep"},"content":" String writeData \u003d dataString();","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"0nesheep"},"content":" fileWriter.write(writeData);","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"0nesheep"},"content":" fileWriter.close();","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"0nesheep":38}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":" return String.format(\"%s %s\", \"[T]\", super.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":" public String dataString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":" return String.format(\"%s|%s\\n\", \"T\", super.dataString());","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"0nesheep":18}},{"path":"src/main/java/data/storage.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"D|false|something|2022-09-28","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"D|false|something else|2021-08-16","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"E|false|another thing|1973-11-12|2073-11-12","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"0nesheep":3}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"todo catch up with friends","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"deadline tutorial /by 30 February","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"deadline tutorial2 /by 32 March","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":"event lunch with friends /from tomorrow 1pm /to tomorrow 3pm","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":"mark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":"unmark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":"invalidcommand","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":"todo","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":"deadline something","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":"event something /from now","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":"delete","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":"delete 0","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":"delete 1","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"0nesheep"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"0nesheep"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"0nesheep":20}}] +[{"path":"StorageTest.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"T|false|Task A","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"D|true|Task B|2022-02-02","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"0nesheep":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":"0nesheep"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-06"},{"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":"0nesheep"},"content":"checkstyle {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":" testImplementation \u0027junit:junit:4.13.1\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"0nesheep"},"content":" mainClass.set(\"yippee.Yippee\")","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"0nesheep"},"content":" archiveBaseName \u003d \"Yippee\"","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"0nesheep":8,"-":40}},{"path":"src/main/java/yippee/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"import java.util.List;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"import yippee.commands.Command;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":"import yippee.commands.CreateTaskCommand;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"import yippee.commands.DeleteCommand;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":"import yippee.commands.ExitCommand;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":"import yippee.commands.ListCommand;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":"import yippee.commands.MarkCommand;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":"public class Parser {","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" private static final List\u003cString\u003e VALID_TASKS \u003d new ArrayList\u003c\u003e(List.of(\"todo\", \"deadline\", \"event\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":" private Ui ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":" public Parser() {","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"0nesheep"},"content":" public Command parseCommand(String command) throws InvalidCommandException {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"0nesheep"},"content":" String[] split \u003d command.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"0nesheep"},"content":" String commandName \u003d split[0].toLowerCase().trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"0nesheep"},"content":" if (commandName.equals(\"bye\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"0nesheep"},"content":" return new ExitCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"0nesheep"},"content":" } else if (commandName.equals(\"list\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"0nesheep"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"0nesheep"},"content":" } else if (commandName.equals(\"mark\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"0nesheep"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"0nesheep"},"content":" \"Wrong format! Please include the number that you want me to unmark \u003e:(\");","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"0nesheep"},"content":" int number \u003d Integer.parseInt(split[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"0nesheep"},"content":" return new MarkCommand(false, number);","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"0nesheep"},"content":" } else if (commandName.equals(\"unmark\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"0nesheep"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"0nesheep"},"content":" \"Wrong format! Please include the number that you want me to unmark \u003e:(\");","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"0nesheep"},"content":" int number \u003d Integer.parseInt(split[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"0nesheep"},"content":" return new MarkCommand(true, number);","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"0nesheep"},"content":" } else if (commandName.equals(\"delete\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"0nesheep"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"0nesheep"},"content":" \"Wrong format! Please include the number that you want me to unmark \u003e:(\");","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"0nesheep"},"content":" int number \u003d Integer.parseInt(split[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"0nesheep"},"content":" return new DeleteCommand(number);","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"0nesheep"},"content":" } else if (VALID_TASKS.contains(commandName)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"0nesheep"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(\"You need to tell me the task name \u003e:0\");","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"0nesheep"},"content":" String taskType \u003d split[0].toLowerCase();","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"0nesheep"},"content":" String taskName \u003d split[1].toLowerCase();","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"0nesheep"},"content":" return new CreateTaskCommand(taskType, taskName);","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"0nesheep"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(\"I don\u0027t know that command :( sorry...\");","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"0nesheep":60}},{"path":"src/main/java/yippee/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"import java.io.File;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.YippeeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.YippeeFileException;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":"import yippee.tasks.Deadline;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":"import yippee.tasks.Event;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":"import yippee.tasks.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":"import yippee.tasks.ToDo;","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":"public class Storage {","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"0nesheep"},"content":" private String filePath;","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"0nesheep"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"0nesheep"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"0nesheep"},"content":" public TaskList load() throws YippeeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"0nesheep"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"0nesheep"},"content":" //load previous tasks","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"0nesheep"},"content":" File directory \u003d new File(\"yippee/data\");","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"0nesheep"},"content":" if (!directory.exists()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"0nesheep"},"content":" directory.mkdir();","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"0nesheep"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"0nesheep"},"content":" Scanner fileSc \u003d null;","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"0nesheep"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"0nesheep"},"content":" file.createNewFile();","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"0nesheep"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"0nesheep"},"content":" throw new YippeeFileException(\"Error creating the file : \" + e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"0nesheep"},"content":" fileSc \u003d new Scanner(file);","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"0nesheep"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"0nesheep"},"content":" throw new YippeeFileException(\"Storage data file does not exist: \" + e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"0nesheep"},"content":" loadTasks(fileSc, list);","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"0nesheep"},"content":" fileSc.close();","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"0nesheep"},"content":" return list;","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"0nesheep"},"content":" private static void loadTasks(Scanner scanner, TaskList list) throws InvalidCommandException {","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"0nesheep"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"0nesheep"},"content":" String currentTask \u003d scanner.nextLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"0nesheep"},"content":" String[] taskDetails \u003d currentTask.split(\"\\\\|\");","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"0nesheep"},"content":" Task newTask \u003d null;","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"0nesheep"},"content":" switch (taskDetails[0]) {","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"0nesheep"},"content":" case \"T\":","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"0nesheep"},"content":" newTask \u003d new ToDo(taskDetails[2]);","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"0nesheep"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"0nesheep"},"content":" case \"D\":","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"0nesheep"},"content":" newTask \u003d new Deadline(taskDetails[2], taskDetails[3]);","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"0nesheep"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"0nesheep"},"content":" case \"E\":","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"0nesheep"},"content":" newTask \u003d new Event(taskDetails[2], taskDetails[3], taskDetails[4]);","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"0nesheep"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"0nesheep"},"content":" default:","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"0nesheep"},"content":" newTask \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"0nesheep"},"content":" if (newTask !\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"0nesheep"},"content":" if (taskDetails[1].equals(\"true\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"0nesheep"},"content":" newTask.markDone();","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"0nesheep"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"0nesheep"},"content":" newTask.markNotDone();","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"0nesheep"},"content":" list.addStoredTask(newTask);","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"0nesheep"},"content":" public void resetSave() {","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"0nesheep"},"content":" Files.delete(Paths.get(this.filePath));","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"0nesheep"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"0nesheep"},"content":" System.err.println(\"Error deleting last saved file: \" + e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"0nesheep"},"content":" public void storeData(TaskList taskList) {","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"0nesheep"},"content":" ArrayList\u003cTask\u003e list \u003d taskList.getList();","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"0nesheep"},"content":" for (Task task : list) {","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"0nesheep"},"content":" task.writeToData(this.filePath);","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"0nesheep"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"0nesheep"},"content":" System.err.println(\"Error writing file to storage: \" + e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"0nesheep":97}},{"path":"src/main/java/yippee/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.InvalidTaskNumberException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":"import yippee.tasks.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":"public class TaskList {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":" private Ui ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":" public TaskList() {","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":" public void addStoredTask(Task newTask) {","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":" this.tasks.add(newTask);","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"0nesheep"},"content":" public void addNewTask(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"0nesheep"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"0nesheep"},"content":" ui.addTaskRespond(task, this.tasks.size());","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"0nesheep"},"content":" public void deleteTask(int deleteNumber) throws InvalidCommandException {","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"0nesheep"},"content":" if (deleteNumber \u003c 1 || deleteNumber \u003e tasks.size()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"0nesheep"},"content":" throw new InvalidTaskNumberException(\"Invalid number! Index does not exist \u003e:((\");","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"0nesheep"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"0nesheep"},"content":" Task task \u003d tasks.get(deleteNumber - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"0nesheep"},"content":" tasks.remove(deleteNumber - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"0nesheep"},"content":" ui.deleteTaskRespond(task, this.tasks.size());","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"0nesheep"},"content":" public void markTask(int number) throws InvalidCommandException {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"0nesheep"},"content":" if (number \u003c 1 || number \u003e tasks.size()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"0nesheep"},"content":" throw new InvalidTaskNumberException(\"Invalid number! Index does not exist \u003e:((\");","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"0nesheep"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"0nesheep"},"content":" Task task \u003d tasks.get(number - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"0nesheep"},"content":" task.markDone();","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"0nesheep"},"content":" ui.markTaskRespond(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"0nesheep"},"content":" public void unmarkTask(int number) throws InvalidCommandException {","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"0nesheep"},"content":" if (number \u003c 1 || number \u003e tasks.size()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"0nesheep"},"content":" throw new InvalidTaskNumberException(\"Invalid number! Index does not exist \u003e:((\");","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"0nesheep"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"0nesheep"},"content":" Task task \u003d tasks.get(number - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"0nesheep"},"content":" task.markNotDone();","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"0nesheep"},"content":" ui.unmarkTaskRespond(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"0nesheep"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"0nesheep"},"content":" return this.tasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"0nesheep"},"content":" public void printList() {","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"0nesheep"},"content":" int count \u003d 1;","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"0nesheep"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" Nothing added to list yet!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"0nesheep"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" %d. %s\\n\", count, task.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"0nesheep"},"content":" count++;","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"0nesheep":68}},{"path":"src/main/java/yippee/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.YippeeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"import yippee.tasks.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"public class Ui {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":" private Scanner sc;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":" public Ui() {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":" public void showLine() {","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":" public void printError(YippeeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" %s\\n\", e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"0nesheep"},"content":" public void echoText(String text) {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"0nesheep"},"content":" showLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" %s\\n\", text);","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"0nesheep"},"content":" showLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"0nesheep"},"content":" public String readCommand() {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"0nesheep"},"content":" return sc.nextLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"0nesheep"},"content":" public void addTaskRespond(Task task, int size) {","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" Got it! I added:\");","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" %s\\n\", task.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" You now have %d tasks in your list :D\\n\", size);","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"0nesheep"},"content":" public void deleteTaskRespond(Task task, int size) {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" Successfully removed task!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" %s\\n\", task.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" You have %d tasks left in the list :D\\n\", size);","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"0nesheep"},"content":" public void markTaskRespond(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" Yippee! I have marked this task as done ;D\");","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" %s\\n\", task.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"0nesheep"},"content":" public void unmarkTaskRespond(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" Awww...I have marked this task as not done yet :(\");","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" %s\\n\", task.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"0nesheep"},"content":" public void endCommands() {","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"0nesheep"},"content":" this.sc.close();","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" Bye! Hope to see you again soon wooo!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"0nesheep"},"content":" showLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"0nesheep":56}},{"path":"src/main/java/yippee/Yippee.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"import yippee.commands.Command;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.YippeeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"public class Yippee {","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":" private String storePath;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":" private Storage storage;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":" private TaskList taskList;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":" private Ui ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":" public Yippee(String filePath) {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":" this.storePath \u003d filePath;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":" this.taskList \u003d storage.load();","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":" } catch (YippeeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":" ui.printError(e);","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"0nesheep"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"0nesheep"},"content":" public void greet() {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"0nesheep"},"content":" String name \u003d \"Yippee\";","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"0nesheep"},"content":" System.out.printf(\" Hello! I\u0027m %s\\n\", name);","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"0nesheep"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"0nesheep"},"content":" public void run() {","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"0nesheep"},"content":" greet();","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"0nesheep"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"0nesheep"},"content":" while (!isExit) {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"0nesheep"},"content":" String commandString \u003d this.ui.readCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"0nesheep"},"content":" ui.showLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"0nesheep"},"content":" Command command \u003d new Parser().parseCommand(commandString);","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"0nesheep"},"content":" command.execute(taskList, ui, storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"0nesheep"},"content":" isExit \u003d command.isExit();","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"0nesheep"},"content":" } catch (YippeeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"0nesheep"},"content":" ui.printError(e);","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"0nesheep"},"content":" } finally {","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"0nesheep"},"content":" if (!isExit) {","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"0nesheep"},"content":" ui.showLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"0nesheep"},"content":" this.ui.endCommands();","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"0nesheep"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"0nesheep"},"content":" new Yippee(\"yippee/data/storage.txt\").run();","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"0nesheep":53}},{"path":"src/main/java/yippee/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee.commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"import yippee.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"import yippee.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"import yippee.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"public abstract class Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":" private boolean isExit;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":" Command(boolean isExit) {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":" this.isExit \u003d isExit;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" return this.isExit;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws InvalidCommandException;","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"0nesheep":17}},{"path":"src/main/java/yippee/commands/CreateTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee.commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"import yippee.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"import yippee.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"import yippee.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":"import yippee.tasks.Deadline;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"import yippee.tasks.Event;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":"import yippee.tasks.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":"import yippee.tasks.ToDo;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":"public class CreateTaskCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":" private String taskType;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":" private String details;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" public CreateTaskCommand(String taskType, String details) {","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":" super(false);","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":" this.details \u003d details;","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"0nesheep"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws InvalidCommandException {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"0nesheep"},"content":" Task newTask;","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"0nesheep"},"content":" if (taskType.equals(\"todo\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"0nesheep"},"content":" newTask \u003d new ToDo(details);","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"0nesheep"},"content":" } else if (taskType.equals(\"deadline\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"0nesheep"},"content":" String[] deadlineSplit \u003d details.trim().split(\"/by\");","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"0nesheep"},"content":" if (deadlineSplit.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"0nesheep"},"content":" \"Invalid format \u003e:( Make sure you used \u0027/by\u0027 to indicate the deadline!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"0nesheep"},"content":" newTask \u003d new Deadline(deadlineSplit[0].trim(), deadlineSplit[1].trim());","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"0nesheep"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"0nesheep"},"content":" String[] fromSplit \u003d details.split(\"/from\");","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"0nesheep"},"content":" if (fromSplit.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"0nesheep"},"content":" \"Invalid format \u003e:( Make sure you used \u0027/from\u0027 to indicate event start time!\"","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"0nesheep"},"content":" );","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"0nesheep"},"content":" String eventName \u003d fromSplit[0].trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"0nesheep"},"content":" String[] toSplit \u003d fromSplit[1].split(\"/to\");","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"0nesheep"},"content":" if (toSplit.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"0nesheep"},"content":" \"Invalid format \u003e:( Make sure you used \u0027/to\u0027 to indicate event end time!\"","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"0nesheep"},"content":" );","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"0nesheep"},"content":" String from \u003d toSplit[0].trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"0nesheep"},"content":" String to \u003d toSplit[1].trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"0nesheep"},"content":" newTask \u003d new Event(eventName, from, to);","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"0nesheep"},"content":" tasks.addNewTask(newTask);","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"0nesheep":54}},{"path":"src/main/java/yippee/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee.commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"import yippee.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"import yippee.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"import yippee.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":" private int deleteNumber;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":" public DeleteCommand(int number) {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":" super(false);","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":" this.deleteNumber \u003d number;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws InvalidCommandException {","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" tasks.deleteTask(this.deleteNumber);","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"0nesheep":17}},{"path":"src/main/java/yippee/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee.commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"import yippee.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"import yippee.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"import yippee.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":" public ExitCommand() {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":" super(true);","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws InvalidCommandException {","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":" storage.resetSave();","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" storage.storeData(tasks);","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"0nesheep":16}},{"path":"src/main/java/yippee/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee.commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"import yippee.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"import yippee.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"import yippee.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":" private boolean isExit \u003d false;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":" public ListCommand() {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":" super(false);","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws InvalidCommandException {","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":" tasks.printList();","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"0nesheep":15}},{"path":"src/main/java/yippee/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee.commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"import yippee.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"import yippee.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"import yippee.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":" private boolean isUnmarkCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":" private boolean isExit \u003d false;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":" private int number;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":" public MarkCommand(boolean isUnmark, int number) {","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":" super(false);","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" this.isUnmarkCommand \u003d isUnmark;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":" this.number \u003d number;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws InvalidCommandException {","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"0nesheep"},"content":" if (isUnmarkCommand) {","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"0nesheep"},"content":" tasks.unmarkTask(number);","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"0nesheep"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"0nesheep"},"content":" tasks.markTask(number);","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"0nesheep":25}},{"path":"src/main/java/yippee/data/storage.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"D|false|something|2022-09-28","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"E|false|another thing|1973-11-12|2073-11-12","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"E|true|haha|2015-03-28|2006-08-29","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"T|false|something ","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"D|false|aha|2023-12-31","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"0nesheep":5}},{"path":"src/main/java/yippee/exceptions/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee.exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"public class InvalidCommandException extends YippeeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":" public InvalidCommandException(String message) {","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":" super(message);","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"0nesheep":7}},{"path":"src/main/java/yippee/exceptions/InvalidTaskNumberException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee.exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"public class InvalidTaskNumberException extends InvalidCommandException {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":" public InvalidTaskNumberException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"0nesheep":7}},{"path":"src/main/java/yippee/exceptions/YippeeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee.exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"public class YippeeException extends Exception {","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":" public YippeeException(String message) {","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":" super(message);","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"0nesheep":7}},{"path":"src/main/java/yippee/exceptions/YippeeFileException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee.exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"public class YippeeFileException extends YippeeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":" public YippeeFileException(String message) {","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":" super(message);","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"0nesheep":7}},{"path":"src/main/java/yippee/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee.tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":" private LocalDate deadline;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":" public Deadline(String name, String deadline) throws InvalidCommandException {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":" this.deadline \u003d LocalDate.parse(deadline);","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":" \"Invalid input format for date :( Please use the format yyyy-mm-dd instead!\");","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"0nesheep"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"0nesheep"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"0nesheep"},"content":" String formattedDate \u003d this.deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"0nesheep"},"content":" return String.format(\"%s %s (by: %s)\", \"[D]\", super.toString(), formattedDate);","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"0nesheep"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"0nesheep"},"content":" public String dataString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"0nesheep"},"content":" return String.format(\"%s|%s|%s\\n\", \"D\", super.dataString(), deadline);","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"0nesheep":30}},{"path":"src/main/java/yippee/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee.tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":" private LocalDate from;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":" private LocalDate to;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":" public Event(String name, String from, String to) throws InvalidCommandException {","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" this.from \u003d LocalDate.parse(from);","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":" this.to \u003d LocalDate.parse(to);","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":" throw new InvalidCommandException(","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":" \"Invalid input format for date :( Please use the format yyyy-mm-dd instead!\");","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"0nesheep"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"0nesheep"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"0nesheep"},"content":" String formattedFrom \u003d this.from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"0nesheep"},"content":" String formattedTo \u003d this.to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"0nesheep"},"content":" return String.format(\"%s %s (from: %s to: %s)\", \"[E]\", super.toString(), formattedFrom, formattedTo);","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"0nesheep"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"0nesheep"},"content":" public String dataString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"0nesheep"},"content":" return String.format(\"%s|%s|%s|%s\\n\", \"E\", super.dataString(), this.from, this.to);","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"0nesheep":33}},{"path":"src/main/java/yippee/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee.tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"public class Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":" private String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":" public void markDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":" public void markNotDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"0nesheep"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"0nesheep"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"0nesheep"},"content":" String checkBox \u003d isDone ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"0nesheep"},"content":" return String.format(\"%s %s\", checkBox, name);","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"0nesheep"},"content":" public String dataString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"0nesheep"},"content":" return String.format(\"%s|%s\", this.isDone, this.name);","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"0nesheep"},"content":" public void writeToData(String filePath) throws IOException {","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"0nesheep"},"content":" FileWriter fileWriter \u003d new FileWriter(filePath, true);","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"0nesheep"},"content":" String writeData \u003d dataString();","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"0nesheep"},"content":" fileWriter.write(writeData);","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"0nesheep"},"content":" fileWriter.close();","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"0nesheep":37}},{"path":"src/main/java/yippee/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee.tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":" super(name);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":" return String.format(\"%s %s\", \"[T]\", super.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" public String dataString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":" return String.format(\"%s|%s\\n\", \"T\", super.dataString());","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"0nesheep":17}},{"path":"src/test/java/yippee/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.YippeeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.YippeeFileException;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"import yippee.tasks.Deadline;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":"import yippee.tasks.Event;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"import yippee.tasks.ToDo;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":"import java.io.File;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":"public class StorageTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"0nesheep"},"content":" public void storeDataTest() throws YippeeException, IOException {","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"0nesheep"},"content":" File file \u003d new File(\"storageTest.txt\");","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"0nesheep"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"0nesheep"},"content":" file.createNewFile();","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"0nesheep"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"0nesheep"},"content":" throw new YippeeFileException(\"Error creating the file : \" + e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"0nesheep"},"content":" Scanner fileSc \u003d new Scanner(file);","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"0nesheep"},"content":" Storage testStorage \u003d new Storage(\"storageTest.txt\");","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"0nesheep"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"0nesheep"},"content":" testList.addStoredTask(new ToDo(\"Task A\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"0nesheep"},"content":" testList.addStoredTask(new Deadline(\"Task B\", \"2022-09-28\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"0nesheep"},"content":" testList.addStoredTask(new Event(\"Task C\", \"2023-09-09\", \"2023-09-18\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"0nesheep"},"content":" testStorage.storeData(testList);","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"0nesheep"},"content":" String currentTask \u003d fileSc.nextLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"0nesheep"},"content":" assertEquals(\"T|false|Task A\", currentTask);","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"0nesheep"},"content":" currentTask \u003d fileSc.nextLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"0nesheep"},"content":" assertEquals(\"D|false|Task B|2022-09-28\", currentTask);","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"0nesheep"},"content":" currentTask \u003d fileSc.nextLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"0nesheep"},"content":" assertEquals(\"E|false|Task C|2023-09-09|2023-09-18\", currentTask);","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"0nesheep"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"0nesheep"},"content":" public void testLoadSuccessful() throws YippeeException, IOException {","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"0nesheep"},"content":" File file \u003d new File(\"storageTest.txt\");","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"0nesheep"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"0nesheep"},"content":" file.createNewFile();","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"0nesheep"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"0nesheep"},"content":" throw new YippeeFileException(\"Error creating the file : \" + e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"0nesheep"},"content":" String testContent \u003d \"T|false|Task A\\nD|true|Task B|2022-02-02\";","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"0nesheep"},"content":" FileWriter writer \u003d new FileWriter(\"storageTest.txt\");","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"0nesheep"},"content":" writer.write(testContent);","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"0nesheep"},"content":" writer.close();","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"0nesheep"},"content":" Storage storage \u003d new Storage(\"storageTest.txt\");","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"0nesheep"},"content":" TaskList testTasks \u003d storage.load();","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"0nesheep"},"content":" assertEquals(2, testTasks.getList().size());","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"0nesheep":68}},{"path":"src/test/java/yippee/tasks/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee.tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.YippeeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":" public void createCorrectTest(){","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":" String taskName \u003d \"a task\";","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":" Deadline testDeadline \u003d new Deadline(taskName, \"2022-12-31\");","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" assertEquals(\"[D] [ ] a task (by: Dec 31 2022)\", testDeadline.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":" } catch (YippeeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"0nesheep"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"0nesheep"},"content":" public void createWrongTest(){","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"0nesheep"},"content":" String taskName \u003d \"a task\";","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"0nesheep"},"content":" Deadline testDeadline \u003d new Deadline(taskName, \"huh\");","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"0nesheep"},"content":" } catch (YippeeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"0nesheep"},"content":" assertEquals(","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"0nesheep"},"content":" \"Invalid input format for date :( Please use the format yyyy-mm-dd instead!\",","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"0nesheep"},"content":" e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"0nesheep":31}},{"path":"src/test/java/yippee/tasks/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"package yippee.tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"import yippee.exceptions.YippeeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":"public class EventTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":" public void createCorrectTest(){","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":" String taskName \u003d \"a task\";","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":" Event testEvent \u003d new Event(taskName, \"2022-12-31\", \"2023-01-01\");","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":" assertEquals(\"[E] [ ] a task (from: Dec 31 2022 to: Jan 1 2023)\",","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":" testEvent.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":" } catch (YippeeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"0nesheep"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"0nesheep"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"0nesheep"},"content":" public void createWrongTest(){","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"0nesheep"},"content":" String taskName \u003d \"a task\";","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"0nesheep"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"0nesheep"},"content":" Event testEvent \u003d new Event(taskName, \"2022-12-300\", \"2023-01-01\");","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"0nesheep"},"content":" } catch (YippeeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"0nesheep"},"content":" assertEquals(","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"0nesheep"},"content":" \"Invalid input format for date :( Please use the format yyyy-mm-dd instead!\",","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"0nesheep"},"content":" e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"0nesheep"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"0nesheep"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"0nesheep":32}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"0nesheep"},"content":"todo catch up with friends","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"0nesheep"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"0nesheep"},"content":"deadline tutorial /by 30 February","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"0nesheep"},"content":"deadline tutorial2 /by 32 March","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"0nesheep"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"0nesheep"},"content":"event lunch with friends /from tomorrow 1pm /to tomorrow 3pm","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"0nesheep"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"0nesheep"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"0nesheep"},"content":"mark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"0nesheep"},"content":"unmark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"0nesheep"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"0nesheep"},"content":"invalidcommand","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"0nesheep"},"content":"todo","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"0nesheep"},"content":"deadline something","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"0nesheep"},"content":"event something /from now","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"0nesheep"},"content":"delete","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"0nesheep"},"content":"delete 0","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"0nesheep"},"content":"delete 1","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"0nesheep"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"0nesheep"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"0nesheep":20}}] diff --git a/0nesheep_ip_master/commits.json b/0nesheep_ip_master/commits.json index b768ae95..057326e3 100644 --- a/0nesheep_ip_master/commits.json +++ b/0nesheep_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"0nesheep":[{"date":"2024-01-24","commitResults":[{"hash":"7636642d358d73041042095e2517e0bd85d16f57","isMergeCommit":false,"messageTitle":"Skeleton setup","messageBody":"","tags":["level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}},{"hash":"788b52ae66a5649f099ef6dc0dbe0188cf390948","isMergeCommit":false,"messageTitle":"Added echo","messageBody":"","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":6}}},{"hash":"6a7ed4cf763f3ed1cc87a5ef811f7355ebe0d251","isMergeCommit":false,"messageTitle":"Adding and displaying list","messageBody":"","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":6}}},{"hash":"a4d125e0c4ab828fab390d1ec83cfa09ee5aadef","isMergeCommit":false,"messageTitle":"Implemented marking/unmarking task as done","messageBody":"","tags":["level-3"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":13}}},{"hash":"396e0e19ae68da4c587ebe6835d3d52e942a379c","isMergeCommit":false,"messageTitle":"Added task types (todo, deadline, events)","messageBody":"","tags":["level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":6}}}]},{"date":"2024-01-25","commitResults":[{"hash":"81dbcfbcf7a069f68707eb8f9b591f50680e50a1","isMergeCommit":false,"messageTitle":"Updated Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"7b5a35cdbdf2848942272568a777b942f3f104cc","isMergeCommit":false,"messageTitle":"Updated error catching, exception classes, and tests","messageBody":"","tags":["level-5","A-Exceptions"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":102,"deletions":50}}},{"hash":"efcd82114151b569cbf1054830b6e3d774a850a8","isMergeCommit":false,"messageTitle":"Added deletion","messageBody":"","tags":["level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":28,"deletions":2}}}]},{"date":"2024-02-01","commitResults":[{"hash":"849bda91bbc15ed8954e068989b4fb6895146c44","isMergeCommit":false,"messageTitle":"Add read file function when bot starts","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":8}}},{"hash":"a1922fe6927d2094c2cda4dffcf2d374d722f18f","isMergeCommit":false,"messageTitle":"Add function to store task after input","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":46,"deletions":22}}},{"hash":"728461ed634a54139ff5598cc9327f9f31799aef","isMergeCommit":false,"messageTitle":"Edit functions for better polymorphism","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":13,"deletions":17}}},{"hash":"2d0d43bdbf8333d35904046cd41fb105f673a0c4","isMergeCommit":false,"messageTitle":"Integrate new functions and add update for marked/unmarked","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":10}}},{"hash":"30ca3f431c0b3f4d19e7b35b2efa37131816041c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["level-7"],"fileTypesAndContributionMap":{}},{"hash":"5d086b4baea5e05270e41e7696023078387db8e8","isMergeCommit":false,"messageTitle":"Edit task classes to use LocalDate for date inputs","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":38,"deletions":17}}},{"hash":"5f35b3026f7ef3dbb6475480c69b46a96a69af8c","isMergeCommit":false,"messageTitle":"Improve error catching for invalid dates","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":6,"deletions":8}}},{"hash":"438855059beee43ed354bf8c61ff8a17f1b03df9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"0nesheep":{"java":390,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":23}},"authorContributionVariance":{"0nesheep":11103.494},"authorDisplayNameMap":{"0nesheep":"CS2103T-F10-2 LIU ..YANG"}} +{"authorDailyContributionsMap":{"0nesheep":[{"date":"2024-01-24","commitResults":[{"hash":"7636642d358d73041042095e2517e0bd85d16f57","isMergeCommit":false,"messageTitle":"Skeleton setup","messageBody":"","tags":["level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}},{"hash":"788b52ae66a5649f099ef6dc0dbe0188cf390948","isMergeCommit":false,"messageTitle":"Added echo","messageBody":"","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":6}}},{"hash":"6a7ed4cf763f3ed1cc87a5ef811f7355ebe0d251","isMergeCommit":false,"messageTitle":"Adding and displaying list","messageBody":"","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":6}}},{"hash":"a4d125e0c4ab828fab390d1ec83cfa09ee5aadef","isMergeCommit":false,"messageTitle":"Implemented marking/unmarking task as done","messageBody":"","tags":["level-3"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":13}}},{"hash":"396e0e19ae68da4c587ebe6835d3d52e942a379c","isMergeCommit":false,"messageTitle":"Added task types (todo, deadline, events)","messageBody":"","tags":["level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":6}}}]},{"date":"2024-01-25","commitResults":[{"hash":"81dbcfbcf7a069f68707eb8f9b591f50680e50a1","isMergeCommit":false,"messageTitle":"Updated Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"7b5a35cdbdf2848942272568a777b942f3f104cc","isMergeCommit":false,"messageTitle":"Updated error catching, exception classes, and tests","messageBody":"","tags":["level-5","A-Exceptions"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":102,"deletions":50}}},{"hash":"efcd82114151b569cbf1054830b6e3d774a850a8","isMergeCommit":false,"messageTitle":"Added deletion","messageBody":"","tags":["level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":28,"deletions":2}}}]},{"date":"2024-02-01","commitResults":[{"hash":"849bda91bbc15ed8954e068989b4fb6895146c44","isMergeCommit":false,"messageTitle":"Add read file function when bot starts","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":8}}},{"hash":"a1922fe6927d2094c2cda4dffcf2d374d722f18f","isMergeCommit":false,"messageTitle":"Add function to store task after input","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":46,"deletions":22}}},{"hash":"728461ed634a54139ff5598cc9327f9f31799aef","isMergeCommit":false,"messageTitle":"Edit functions for better polymorphism","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":2},"java":{"insertions":13,"deletions":17}}},{"hash":"2d0d43bdbf8333d35904046cd41fb105f673a0c4","isMergeCommit":false,"messageTitle":"Integrate new functions and add update for marked/unmarked","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":10}}},{"hash":"30ca3f431c0b3f4d19e7b35b2efa37131816041c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["level-7"],"fileTypesAndContributionMap":{}},{"hash":"5d086b4baea5e05270e41e7696023078387db8e8","isMergeCommit":false,"messageTitle":"Edit task classes to use LocalDate for date inputs","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":38,"deletions":17}}},{"hash":"5f35b3026f7ef3dbb6475480c69b46a96a69af8c","isMergeCommit":false,"messageTitle":"Improve error catching for invalid dates","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":6,"deletions":8}}},{"hash":"438855059beee43ed354bf8c61ff8a17f1b03df9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-8\u0027","messageBody":"","tags":["level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-03","commitResults":[{"hash":"9ad675cb6480f47fa5acd8d05a762c9441e51907","isMergeCommit":false,"messageTitle":"Add preliminary reordering for more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":271,"deletions":128}}},{"hash":"e2caf12eebe0a94f5392e3a1f5ea7445107ec07a","isMergeCommit":false,"messageTitle":"Finish separation of classes for OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":375,"deletions":307}}},{"hash":"878b1994c53fa181b5eaaa4c9f8491ce719e1740","isMergeCommit":false,"messageTitle":"Divide more classes into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":65,"deletions":35}}}]},{"date":"2024-02-05","commitResults":[{"hash":"a42a1277d0f8f70e8d84d85d9e9391cbe8d081b1","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"2f5e25bac20c30c2a10dbcd03a0d0f587d464d6c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"6e401cb2f38cda713a4c5ee5021b690ab5ee039d","isMergeCommit":false,"messageTitle":"Fix style errors using gradle checkStyle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":41,"deletions":53}}},{"hash":"b61288ffc43285743510b74812f8e25ea0dd40d4","isMergeCommit":false,"messageTitle":"Add JUnit test for storage and some tasks","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"txt":{"insertions":2,"deletions":0},"java":{"insertions":135,"deletions":0}}},{"hash":"ab8caf03402843a8c12ceab6837c71f4499faa4d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-07","commitResults":[{"hash":"c438e697b940e0f290ff5f1d333885a16e055522","isMergeCommit":false,"messageTitle":"Rename files to reflect bot name","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"txt":{"insertions":0,"deletions":0},"java":{"insertions":116,"deletions":120}}}]}]},"authorFileTypeContributionMap":{"0nesheep":{"java":754,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":8,"txt":27}},"authorContributionVariance":{"0nesheep":71089.85},"authorDisplayNameMap":{"0nesheep":"CS2103T-F10-2 LIU ..YANG"}} diff --git a/AdityaB4_ip_master/authorship.json b/AdityaB4_ip_master/authorship.json index 9c00ce41..4c826c75 100644 --- a/AdityaB4_ip_master/authorship.json +++ b/AdityaB4_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"# Chimp project template","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"AdityaB4"},"content":"3. After that, locate the `src/main/java/Chimp.java` file, right-click it, and choose `Run Chimp.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-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"AdityaB4":2,"-":22}},{"path":"data/chimp.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"1. [T] [ ] abcd","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":"2. [T] [ ] abcbdbcabsdca","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":"3. [D] [ ] sleep (by: 10pm )","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"AdityaB4":3}},{"path":"src/main/java/Chimp.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"import java.security.InvalidParameterException;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"AdityaB4"},"content":"public class Chimp {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"AdityaB4"},"content":" private static final String divider \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"AdityaB4"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"AdityaB4"},"content":" Chimp() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"AdityaB4"},"content":" list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"AdityaB4"},"content":" public static void main(String[] args) throws InvalidParameterException {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"AdityaB4"},"content":" Chimp chimp \u003d new Chimp();","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"AdityaB4"},"content":" HashMap\u003cString, String\u003e phrases \u003d chimp.getPhrases();","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"AdityaB4"},"content":" chimp.say(phrases.get(\"greet\"));","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"AdityaB4"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"AdityaB4"},"content":" String inp \u003d sc.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"AdityaB4"},"content":" while (!inp.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"AdityaB4"},"content":" inp \u003d inp.toLowerCase();","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"AdityaB4"},"content":" String command \u003d inp.split(\" \")[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"AdityaB4"},"content":" String arg \u003d null;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"AdityaB4"},"content":" if (inp.split(\" \").length \u003e 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"AdityaB4"},"content":" // split at first space, and take everything on the right","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"AdityaB4"},"content":" arg \u003d inp.substring(inp.indexOf(\u0027 \u0027), inp.length());","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"AdityaB4"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"AdityaB4"},"content":" commandHandler(chimp, phrases, inp, command, arg);","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"AdityaB4"},"content":" // Update store if needed","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"AdityaB4"},"content":" if (Storage.isSaveCommand(command)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"AdityaB4"},"content":" Storage.saveOutputToFile(Storage.listToString(chimp.list));","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"AdityaB4"},"content":" } catch (InvalidCommandException | CommandParseException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"AdityaB4"},"content":" chimp.say(phrases.get(\"hoo\") + \" - \" + e);","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"AdityaB4"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"AdityaB4"},"content":" chimp.say(phrases.get(\"hoo\") + \" - \" + \"Invalid number of arguments provided\");","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"AdityaB4"},"content":" } finally {","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"AdityaB4"},"content":" inp \u003d sc.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"AdityaB4"},"content":" chimp.say(phrases.get(\"bye\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"AdityaB4"},"content":" sc.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"AdityaB4"},"content":" private static void commandHandler(Chimp chimp, HashMap\u003cString, String\u003e phrases, String inp, String command,","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"AdityaB4"},"content":" String arg) throws InvalidCommandException, CommandParseException {","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"AdityaB4"},"content":" int num;","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"AdityaB4"},"content":" switch (command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"AdityaB4"},"content":" case \"list\":","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"AdityaB4"},"content":" chimp.print();","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"AdityaB4"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"AdityaB4"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"AdityaB4"},"content":" num \u003d Integer.parseInt(arg);","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"AdityaB4"},"content":" if (num \u003c 1 || num \u003e chimp.list.size())","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"AdityaB4"},"content":" throw new CommandParseException(\"mark must have number argument\");","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"AdityaB4"},"content":" chimp.list.get(num - 1).mark();","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"AdityaB4"},"content":" chimp.say(phrases.get(\"mark\"), chimp.list.get(num - 1));","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"AdityaB4"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"AdityaB4"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"AdityaB4"},"content":" num \u003d Integer.parseInt(arg);","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"AdityaB4"},"content":" if (num \u003c 1 || num \u003e chimp.list.size())","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"AdityaB4"},"content":" throw new CommandParseException(\"unmark must have number argument\");","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"AdityaB4"},"content":" chimp.list.get(num - 1).unmark();","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"AdityaB4"},"content":" chimp.say(phrases.get(\"unmark\"), chimp.list.get(num - 1));","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"AdityaB4"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"AdityaB4"},"content":" case \"todo\": // TODO: Exception handling","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"AdityaB4"},"content":" if (arg \u003d\u003d null || arg.equals(\"\"))","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"AdityaB4"},"content":" throw new CommandParseException(\"todo must have a desc\");","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"AdityaB4"},"content":" chimp.addToList(arg);","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"AdityaB4"},"content":" chimp.say(chimp.list.get(chimp.list.size() - 1));","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"AdityaB4"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"AdityaB4"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"AdityaB4"},"content":" String fromSubCommand \u003d arg.split(\"/\")[1];","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"AdityaB4"},"content":" String from \u003d fromSubCommand.substring(fromSubCommand.indexOf(\u0027 \u0027));","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"AdityaB4"},"content":" from \u003d from.strip();","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"AdityaB4"},"content":" if (from \u003d\u003d null || from.equals(\"\"))","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"AdityaB4"},"content":" throw new CommandParseException(\"deadline needs by date/time!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"AdityaB4"},"content":" String toSubCommand \u003d arg.split(\"/\")[2];","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"AdityaB4"},"content":" String to \u003d toSubCommand.substring(toSubCommand.indexOf(\u0027 \u0027));","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"AdityaB4"},"content":" to \u003d to.strip();","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"AdityaB4"},"content":" if (to \u003d\u003d null || to.equals(\"\"))","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"AdityaB4"},"content":" throw new CommandParseException(\"deadline needs by date/time!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"AdityaB4"},"content":" String text \u003d arg.split(\"/\")[0].strip();","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"AdityaB4"},"content":" chimp.addToList(text, from, to);","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"AdityaB4"},"content":" chimp.say(chimp.list.get(chimp.list.size() - 1));","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"AdityaB4"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"AdityaB4"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"AdityaB4"},"content":" String bySubCommand \u003d arg.split(\"/\")[1];","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"AdityaB4"},"content":" String by \u003d bySubCommand.substring(3);","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"AdityaB4"},"content":" by \u003d by.strip();","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"AdityaB4"},"content":" if (by \u003d\u003d null || by.equals(\"\"))","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"AdityaB4"},"content":" throw new CommandParseException(\"deadline needs by date/time!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"AdityaB4"},"content":" // TODO: switch case scoping best practice?","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"AdityaB4"},"content":" text \u003d arg.split(\"/\")[0].strip();","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"AdityaB4"},"content":" chimp.addToList(text, by);","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"AdityaB4"},"content":" chimp.say(chimp.list.get(chimp.list.size() - 1));","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"AdityaB4"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"AdityaB4"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"AdityaB4"},"content":" num \u003d Integer.parseInt(arg.strip());","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"AdityaB4"},"content":" System.out.println(num);","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"AdityaB4"},"content":" if (num - 1 \u003c 0 || num - 1 \u003e\u003d chimp.list.size())","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"AdityaB4"},"content":" throw new CommandParseException(\"Invalid number argument provided to delete\");","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"AdityaB4"},"content":" Task task \u003d chimp.list.get(num - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"AdityaB4"},"content":" chimp.list.remove(num - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"AdityaB4"},"content":" chimp.say(phrases.get(\"delete\"), task);","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"AdityaB4"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"AdityaB4"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"AdityaB4"},"content":" throw new InvalidCommandException(\"command \\\"\" + command + \"\\\" is invalid\");","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"AdityaB4"},"content":" private HashMap\u003cString, String\u003e getPhrases() {","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"AdityaB4"},"content":" HashMap\u003cString, String\u003e phrases \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"AdityaB4"},"content":" String greet \u003d \" Hello! I\u0027m Chimp\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"AdityaB4"},"content":" \" What can I do for you?\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"AdityaB4"},"content":" String bye \u003d \"Bye. Hope to see you again soon!\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":124,"author":{"gitId":"AdityaB4"},"content":" String mark \u003d \"Nice! I\u0027ve marked this task as done: \\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"AdityaB4"},"content":" String unmark \u003d \"OK, I\u0027ve marked this task as not done yet: \\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"AdityaB4"},"content":" String hoo \u003d \"HOO-HOO-HOO-HOO, I don\u0027t know what that means\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"AdityaB4"},"content":" String delete \u003d \"Noted. I\u0027ve removed this task:\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"AdityaB4"},"content":" phrases.put(\"greet\", greet);","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"AdityaB4"},"content":" phrases.put(\"bye\", bye);","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"AdityaB4"},"content":" phrases.put(\"mark\", mark);","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"AdityaB4"},"content":" phrases.put(\"unmark\", unmark);","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"AdityaB4"},"content":" phrases.put(\"hoo\", hoo);","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"AdityaB4"},"content":" phrases.put(\"delete\", delete);","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"AdityaB4"},"content":" return phrases;","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"AdityaB4"},"content":" // TODO: Is this a maintainable way of doing things?","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"AdityaB4"},"content":" private void addToList(String task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"AdityaB4"},"content":" this.list.add(new Todo(task, TaskStatus.UNMARKED));","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":144,"author":{"gitId":"AdityaB4"},"content":" private void addToList(String task, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":145,"author":{"gitId":"AdityaB4"},"content":" this.list.add(new Deadline(task, TaskStatus.UNMARKED, by));","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"AdityaB4"},"content":" private void addToList(String task, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"AdityaB4"},"content":" this.list.add(new Event(task, TaskStatus.UNMARKED, from, to));","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"AdityaB4"},"content":" private void say(String phrase) {","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"AdityaB4"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"AdityaB4"},"content":" System.out.println(phrase);","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"AdityaB4"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":157,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"AdityaB4"},"content":" private void say(Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"AdityaB4"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"AdityaB4"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"AdityaB4"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"AdityaB4"},"content":" System.out.println(\"Now you have \" + this.list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"AdityaB4"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":166,"author":{"gitId":"AdityaB4"},"content":" private void say(String phrase, Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"AdityaB4"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"AdityaB4"},"content":" System.out.println(phrase);","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"AdityaB4"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"AdityaB4"},"content":" System.out.println(\"Now you have \" + this.list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":171,"author":{"gitId":"AdityaB4"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":174,"author":{"gitId":"AdityaB4"},"content":" private void print() {","lastModifiedDate":"2024-01-24"},{"lineNumber":175,"author":{"gitId":"AdityaB4"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"AdityaB4"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"AdityaB4"},"content":" for (int i \u003d 0; i \u003c this.list.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"AdityaB4"},"content":" System.out.println((i + 1) + \". \" + this.list.get(i));","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"AdityaB4"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":182,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"AdityaB4":182}},{"path":"src/main/java/ChimpException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"public abstract class ChimpException extends Exception{","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":" ChimpException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"AdityaB4"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"AdityaB4"},"content":" public abstract String toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"AdityaB4":7}},{"path":"src/main/java/CommandParseException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"public class CommandParseException extends ChimpException{","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":" CommandParseException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"AdityaB4"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"AdityaB4"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"AdityaB4"},"content":" return super.getMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"AdityaB4":9}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":" private String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":" Deadline(String text, TaskStatus status, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":" super(text, status);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"AdityaB4"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"AdityaB4"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"AdityaB4"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"AdityaB4"},"content":" return \"[D] \" + super.toString() + \" (by: \" + by + \" )\";","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AdityaB4":12}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":" private String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":" private String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"AdityaB4"},"content":" Event(String text, TaskStatus status, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"AdityaB4"},"content":" super(text, status);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"AdityaB4"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"AdityaB4"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"AdityaB4"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"AdityaB4"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"AdityaB4"},"content":" return \"[E] \" + super.toString() + \" (from: \" + from + \" to: \" + to + \" )\";","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AdityaB4":15}},{"path":"src/main/java/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"public class InvalidCommandException extends ChimpException {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":" InvalidCommandException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"AdityaB4"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"AdityaB4"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"AdityaB4"},"content":" return super.getMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"AdityaB4":9}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":"import java.nio.file.FileAlreadyExistsException;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"AdityaB4"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"AdityaB4"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"AdityaB4"},"content":"import java.util.List;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"AdityaB4"},"content":"public class Storage {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"AdityaB4"},"content":" public static boolean isSaveCommand(String command) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"AdityaB4"},"content":" HashSet\u003cString\u003e saveCommands \u003d new HashSet\u003c\u003e(","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"AdityaB4"},"content":" List.of(","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"AdityaB4"},"content":" \"mark\",","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"AdityaB4"},"content":" \"unmark\",","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"AdityaB4"},"content":" \"todo\",","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"AdityaB4"},"content":" \"event\",","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"AdityaB4"},"content":" \"deadline\",","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"AdityaB4"},"content":" \"delete\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"AdityaB4"},"content":" return saveCommands.contains(command);","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"AdityaB4"},"content":" public static String listToString(List\u003cTask\u003e list) {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"AdityaB4"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"AdityaB4"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"AdityaB4"},"content":" sb.append(i + 1).append(\". \").append(list.get(i)).append(\"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"AdityaB4"},"content":" return sb.toString();","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"AdityaB4"},"content":" public static void saveOutputToFile(String output) {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"AdityaB4"},"content":" Path filePath \u003d Path.of(\"./data/chimp.txt\");","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"AdityaB4"},"content":" // Create file if it does not exist","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"AdityaB4"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"AdityaB4"},"content":" Path directoryPath \u003d filePath.getParent();","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"AdityaB4"},"content":" if (directoryPath !\u003d null) {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"AdityaB4"},"content":" Files.createDirectories(directoryPath);","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"AdityaB4"},"content":" Files.createFile(filePath);","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"AdityaB4"},"content":" } catch (FileAlreadyExistsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"AdityaB4"},"content":" // Ignore this error","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"AdityaB4"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"AdityaB4"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"AdityaB4"},"content":" // Write to file","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"AdityaB4"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"AdityaB4"},"content":" Files.newBufferedWriter(filePath, StandardOpenOption.TRUNCATE_EXISTING);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"AdityaB4"},"content":" Files.write(filePath, output.getBytes(), StandardOpenOption.APPEND);","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"AdityaB4"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"AdityaB4"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"AdityaB4":54}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":" String text;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":" TaskStatus status;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"AdityaB4"},"content":" Task(String text, TaskStatus status) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"AdityaB4"},"content":" this.text \u003d text;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"AdityaB4"},"content":" this.status \u003d status;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"AdityaB4"},"content":" public void mark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"AdityaB4"},"content":" this.status \u003d TaskStatus.MARKED;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"AdityaB4"},"content":" public void unmark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"AdityaB4"},"content":" this.status \u003d TaskStatus.UNMARKED;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"AdityaB4"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"AdityaB4"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"AdityaB4"},"content":" String mark \u003d status \u003d\u003d TaskStatus.MARKED ? \"X\" : \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"AdityaB4"},"content":" return \"[\" + mark + \"] \" + text;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AdityaB4":23}},{"path":"src/main/java/TaskStatus.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"public enum TaskStatus {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":" MARKED,","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":" UNMARKED","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AdityaB4":4}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":" Todo(String text, TaskStatus status) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":" super(text, status);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"AdityaB4"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"AdityaB4"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"AdityaB4"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AdityaB4":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"deadline 2103 /by 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AdityaB4":2}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"AdityaB4"},"content":"java -classpath ..\\bin Chimp \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":{"AdityaB4":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":"AdityaB4"},"content":"java -classpath ../bin Chimp \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":"AdityaB4"},"content":"#dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT # \u003c- PLEASE UNCOMMENT THIS IF NEEDED FOR GRADING","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"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":{"AdityaB4":2,"-":36}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"# Chimp project template","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"AdityaB4"},"content":"3. After that, locate the `src/main/java/Chimp.java` file, right-click it, and choose `Run Chimp.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-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"AdityaB4":2,"-":22}},{"path":"data/chimp.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"1. [T] [ ] abcd","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":"2. [T] [ ] abcbdbcabsdca","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":"3. [D] [ ] sleep (by: 10pm )","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"AdityaB4":3}},{"path":"src/main/java/Chimp.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"import java.security.InvalidParameterException;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"AdityaB4"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"AdityaB4"},"content":"public class Chimp {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"AdityaB4"},"content":" private static final String divider \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"AdityaB4"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"AdityaB4"},"content":" Chimp() {","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"AdityaB4"},"content":" list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"AdityaB4"},"content":" public static void main(String[] args) throws InvalidParameterException {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"AdityaB4"},"content":" Chimp chimp \u003d new Chimp();","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"AdityaB4"},"content":" HashMap\u003cString, String\u003e phrases \u003d chimp.getPhrases();","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"AdityaB4"},"content":" chimp.say(phrases.get(\"greet\"));","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"AdityaB4"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"AdityaB4"},"content":" String inp \u003d sc.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"AdityaB4"},"content":" while (!inp.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"AdityaB4"},"content":" inp \u003d inp.toLowerCase();","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"AdityaB4"},"content":" String command \u003d inp.split(\" \")[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"AdityaB4"},"content":" String arg \u003d null;","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"AdityaB4"},"content":" if (inp.split(\" \").length \u003e 1) {","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"AdityaB4"},"content":" // split at first space, and take everything on the right","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"AdityaB4"},"content":" arg \u003d inp.substring(inp.indexOf(\u0027 \u0027), inp.length());","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"AdityaB4"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"AdityaB4"},"content":" commandHandler(chimp, phrases, inp, command, arg);","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"AdityaB4"},"content":" // Update store if needed","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"AdityaB4"},"content":" if (Storage.isSaveCommand(command)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"AdityaB4"},"content":" Storage.saveOutputToFile(Storage.listToString(chimp.list));","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"AdityaB4"},"content":" } catch (InvalidCommandException | CommandParseException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"AdityaB4"},"content":" chimp.say(phrases.get(\"hoo\") + \" - \" + e);","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"AdityaB4"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"AdityaB4"},"content":" chimp.say(phrases.get(\"hoo\") + \" - \" + \"Invalid number of arguments provided\");","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"AdityaB4"},"content":" } finally {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"AdityaB4"},"content":" inp \u003d sc.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"AdityaB4"},"content":" chimp.say(phrases.get(\"bye\"));","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"AdityaB4"},"content":" sc.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"AdityaB4"},"content":" private static void commandHandler(Chimp chimp, HashMap\u003cString, String\u003e phrases, String inp, String command,","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"AdityaB4"},"content":" String arg) throws InvalidCommandException, CommandParseException {","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"AdityaB4"},"content":" int num;","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"AdityaB4"},"content":" switch (command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"AdityaB4"},"content":" case \"list\":","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"AdityaB4"},"content":" chimp.print();","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"AdityaB4"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"AdityaB4"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"AdityaB4"},"content":" num \u003d Integer.parseInt(arg);","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"AdityaB4"},"content":" if (num \u003c 1 || num \u003e chimp.list.size())","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"AdityaB4"},"content":" throw new CommandParseException(\"mark must have number argument\");","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"AdityaB4"},"content":" chimp.list.get(num - 1).mark();","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"AdityaB4"},"content":" chimp.say(phrases.get(\"mark\"), chimp.list.get(num - 1));","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"AdityaB4"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"AdityaB4"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"AdityaB4"},"content":" num \u003d Integer.parseInt(arg);","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"AdityaB4"},"content":" if (num \u003c 1 || num \u003e chimp.list.size())","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"AdityaB4"},"content":" throw new CommandParseException(\"unmark must have number argument\");","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"AdityaB4"},"content":" chimp.list.get(num - 1).unmark();","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"AdityaB4"},"content":" chimp.say(phrases.get(\"unmark\"), chimp.list.get(num - 1));","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"AdityaB4"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"AdityaB4"},"content":" case \"todo\": // TODO: Exception handling","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"AdityaB4"},"content":" if (arg \u003d\u003d null || arg.equals(\"\"))","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"AdityaB4"},"content":" throw new CommandParseException(\"todo must have a desc\");","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"AdityaB4"},"content":" chimp.addToList(arg);","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"AdityaB4"},"content":" chimp.say(chimp.list.get(chimp.list.size() - 1));","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"AdityaB4"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"AdityaB4"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"AdityaB4"},"content":" String fromSubCommand \u003d arg.split(\"/\")[1];","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"AdityaB4"},"content":" String from \u003d fromSubCommand.substring(fromSubCommand.indexOf(\u0027 \u0027));","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"AdityaB4"},"content":" from \u003d from.strip();","lastModifiedDate":"2024-01-24"},{"lineNumber":80,"author":{"gitId":"AdityaB4"},"content":" if (from \u003d\u003d null || from.equals(\"\"))","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"AdityaB4"},"content":" throw new CommandParseException(\"deadline needs by date/time!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"AdityaB4"},"content":" String toSubCommand \u003d arg.split(\"/\")[2];","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"AdityaB4"},"content":" String to \u003d toSubCommand.substring(toSubCommand.indexOf(\u0027 \u0027));","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"AdityaB4"},"content":" to \u003d to.strip();","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"AdityaB4"},"content":" if (to \u003d\u003d null || to.equals(\"\"))","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"AdityaB4"},"content":" throw new CommandParseException(\"deadline needs by date/time!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"AdityaB4"},"content":" LocalDate fromDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"AdityaB4"},"content":" LocalDate toDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"AdityaB4"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"AdityaB4"},"content":" fromDate \u003d LocalDate.parse(from);","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"AdityaB4"},"content":" toDate \u003d LocalDate.parse(to);","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"AdityaB4"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"AdityaB4"},"content":" throw new CommandParseException(\"Invalid date format provided to event\");","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"AdityaB4"},"content":" String text \u003d arg.split(\"/\")[0].strip();","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"AdityaB4"},"content":" chimp.addToList(text, fromDate, toDate);","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"AdityaB4"},"content":" chimp.say(chimp.list.get(chimp.list.size() - 1));","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"AdityaB4"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"AdityaB4"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"AdityaB4"},"content":" String bySubCommand \u003d arg.split(\"/\")[1];","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"AdityaB4"},"content":" String by \u003d bySubCommand.substring(3);","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"AdityaB4"},"content":" by \u003d by.strip();","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"AdityaB4"},"content":" LocalDate byDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"AdityaB4"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"AdityaB4"},"content":" byDate \u003d LocalDate.parse(by);","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"AdityaB4"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":111,"author":{"gitId":"AdityaB4"},"content":" throw new CommandParseException(\"Invalid date format provided to deadline\");","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":113,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"AdityaB4"},"content":" if (by \u003d\u003d null || by.equals(\"\"))","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"AdityaB4"},"content":" throw new CommandParseException(\"deadline needs by date/time!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"AdityaB4"},"content":" // TODO: switch case scoping best practice?","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"AdityaB4"},"content":" text \u003d arg.split(\"/\")[0].strip();","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"AdityaB4"},"content":" chimp.addToList(text, byDate);","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"AdityaB4"},"content":" chimp.say(chimp.list.get(chimp.list.size() - 1));","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"AdityaB4"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"AdityaB4"},"content":" case \"delete\":","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"AdityaB4"},"content":" num \u003d Integer.parseInt(arg.strip());","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"AdityaB4"},"content":" System.out.println(num);","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"AdityaB4"},"content":" if (num - 1 \u003c 0 || num - 1 \u003e\u003d chimp.list.size())","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"AdityaB4"},"content":" throw new CommandParseException(\"Invalid number argument provided to delete\");","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"AdityaB4"},"content":" Task task \u003d chimp.list.get(num - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"AdityaB4"},"content":" chimp.list.remove(num - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"AdityaB4"},"content":" chimp.say(phrases.get(\"delete\"), task);","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"AdityaB4"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"AdityaB4"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":132,"author":{"gitId":"AdityaB4"},"content":" throw new InvalidCommandException(\"command \\\"\" + command + \"\\\" is invalid\");","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"AdityaB4"},"content":" private HashMap\u003cString, String\u003e getPhrases() {","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"AdityaB4"},"content":" HashMap\u003cString, String\u003e phrases \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"AdityaB4"},"content":" String greet \u003d \" Hello! I\u0027m Chimp\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"AdityaB4"},"content":" \" What can I do for you?\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"AdityaB4"},"content":" String bye \u003d \"Bye. Hope to see you again soon!\\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"AdityaB4"},"content":" String mark \u003d \"Nice! I\u0027ve marked this task as done: \\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"AdityaB4"},"content":" String unmark \u003d \"OK, I\u0027ve marked this task as not done yet: \\n\";","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"AdityaB4"},"content":" String hoo \u003d \"HOO-HOO-HOO-HOO, I don\u0027t know what that means\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"AdityaB4"},"content":" String delete \u003d \"Noted. I\u0027ve removed this task:\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"AdityaB4"},"content":" phrases.put(\"greet\", greet);","lastModifiedDate":"2024-01-24"},{"lineNumber":147,"author":{"gitId":"AdityaB4"},"content":" phrases.put(\"bye\", bye);","lastModifiedDate":"2024-01-24"},{"lineNumber":148,"author":{"gitId":"AdityaB4"},"content":" phrases.put(\"mark\", mark);","lastModifiedDate":"2024-01-24"},{"lineNumber":149,"author":{"gitId":"AdityaB4"},"content":" phrases.put(\"unmark\", unmark);","lastModifiedDate":"2024-01-24"},{"lineNumber":150,"author":{"gitId":"AdityaB4"},"content":" phrases.put(\"hoo\", hoo);","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"AdityaB4"},"content":" phrases.put(\"delete\", delete);","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"AdityaB4"},"content":" return phrases;","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"AdityaB4"},"content":" // TODO: Is this a maintainable way of doing things?","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"AdityaB4"},"content":" private void addToList(String task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"AdityaB4"},"content":" this.list.add(new Todo(task, TaskStatus.UNMARKED));","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":161,"author":{"gitId":"AdityaB4"},"content":" private void addToList(String task, LocalDate by) {","lastModifiedDate":"2024-02-06"},{"lineNumber":162,"author":{"gitId":"AdityaB4"},"content":" this.list.add(new Deadline(task, TaskStatus.UNMARKED, by));","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":164,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":165,"author":{"gitId":"AdityaB4"},"content":" private void addToList(String task, LocalDate from, LocalDate to) {","lastModifiedDate":"2024-02-06"},{"lineNumber":166,"author":{"gitId":"AdityaB4"},"content":" this.list.add(new Event(task, TaskStatus.UNMARKED, from, to));","lastModifiedDate":"2024-01-24"},{"lineNumber":167,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":168,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":169,"author":{"gitId":"AdityaB4"},"content":" private void say(String phrase) {","lastModifiedDate":"2024-01-24"},{"lineNumber":170,"author":{"gitId":"AdityaB4"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":171,"author":{"gitId":"AdityaB4"},"content":" System.out.println(phrase);","lastModifiedDate":"2024-01-24"},{"lineNumber":172,"author":{"gitId":"AdityaB4"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":173,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":174,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":175,"author":{"gitId":"AdityaB4"},"content":" private void say(Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":176,"author":{"gitId":"AdityaB4"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":177,"author":{"gitId":"AdityaB4"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":178,"author":{"gitId":"AdityaB4"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":179,"author":{"gitId":"AdityaB4"},"content":" System.out.println(\"Now you have \" + this.list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":180,"author":{"gitId":"AdityaB4"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":181,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":182,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":183,"author":{"gitId":"AdityaB4"},"content":" private void say(String phrase, Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":184,"author":{"gitId":"AdityaB4"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":185,"author":{"gitId":"AdityaB4"},"content":" System.out.println(phrase);","lastModifiedDate":"2024-01-24"},{"lineNumber":186,"author":{"gitId":"AdityaB4"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-24"},{"lineNumber":187,"author":{"gitId":"AdityaB4"},"content":" System.out.println(\"Now you have \" + this.list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-25"},{"lineNumber":188,"author":{"gitId":"AdityaB4"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":189,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":190,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":191,"author":{"gitId":"AdityaB4"},"content":" private void print() {","lastModifiedDate":"2024-01-24"},{"lineNumber":192,"author":{"gitId":"AdityaB4"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"AdityaB4"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"AdityaB4"},"content":" for (int i \u003d 0; i \u003c this.list.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"AdityaB4"},"content":" System.out.println((i + 1) + \". \" + this.list.get(i));","lastModifiedDate":"2024-01-24"},{"lineNumber":196,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":197,"author":{"gitId":"AdityaB4"},"content":" System.out.println(divider);","lastModifiedDate":"2024-01-24"},{"lineNumber":198,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"AdityaB4":199}},{"path":"src/main/java/ChimpException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"public abstract class ChimpException extends Exception{","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":" ChimpException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"AdityaB4"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"AdityaB4"},"content":" public abstract String toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"AdityaB4":7}},{"path":"src/main/java/CommandParseException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"public class CommandParseException extends ChimpException{","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":" CommandParseException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"AdityaB4"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"AdityaB4"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"AdityaB4"},"content":" return super.getMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"AdityaB4":9}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"AdityaB4"},"content":" private LocalDate by;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"AdityaB4"},"content":" Deadline(String text, TaskStatus status, LocalDate by) {","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"AdityaB4"},"content":" super(text, status);","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"AdityaB4"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"AdityaB4"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"AdityaB4"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"AdityaB4"},"content":" return \"[D] \"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"AdityaB4"},"content":" + super.toString()","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"AdityaB4"},"content":" + \" (by: \"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"AdityaB4"},"content":" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"AdityaB4"},"content":" + \" )\";","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AdityaB4":20}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"AdityaB4"},"content":" private LocalDate from;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"AdityaB4"},"content":" private LocalDate to;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"AdityaB4"},"content":" Event(String text, TaskStatus status, LocalDate from, LocalDate to) {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"AdityaB4"},"content":" super(text, status);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"AdityaB4"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"AdityaB4"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"AdityaB4"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"AdityaB4"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"AdityaB4"},"content":" return \"[E] \"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"AdityaB4"},"content":" + super.toString()","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"AdityaB4"},"content":" + \" (from: \"","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"AdityaB4"},"content":" + from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"AdityaB4"},"content":" + \" to: \"","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"AdityaB4"},"content":" + to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"AdityaB4"},"content":" + \" )\";","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AdityaB4":24}},{"path":"src/main/java/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"public class InvalidCommandException extends ChimpException {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":" InvalidCommandException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"AdityaB4"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"AdityaB4"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"AdityaB4"},"content":" return super.getMessage();","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"AdityaB4":9}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":"import java.nio.file.FileAlreadyExistsException;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"AdityaB4"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"AdityaB4"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"AdityaB4"},"content":"import java.util.List;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"AdityaB4"},"content":"public class Storage {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"AdityaB4"},"content":" public static boolean isSaveCommand(String command) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"AdityaB4"},"content":" HashSet\u003cString\u003e saveCommands \u003d new HashSet\u003c\u003e(","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"AdityaB4"},"content":" List.of(","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"AdityaB4"},"content":" \"mark\",","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"AdityaB4"},"content":" \"unmark\",","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"AdityaB4"},"content":" \"todo\",","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"AdityaB4"},"content":" \"event\",","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"AdityaB4"},"content":" \"deadline\",","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"AdityaB4"},"content":" \"delete\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"AdityaB4"},"content":" return saveCommands.contains(command);","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"AdityaB4"},"content":" public static String listToString(List\u003cTask\u003e list) {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"AdityaB4"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"AdityaB4"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"AdityaB4"},"content":" sb.append(i + 1).append(\". \").append(list.get(i)).append(\"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"AdityaB4"},"content":" return sb.toString();","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"AdityaB4"},"content":" public static void saveOutputToFile(String output) {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"AdityaB4"},"content":" Path filePath \u003d Path.of(\"./data/chimp.txt\");","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"AdityaB4"},"content":" // Create file if it does not exist","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"AdityaB4"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"AdityaB4"},"content":" Path directoryPath \u003d filePath.getParent();","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"AdityaB4"},"content":" if (directoryPath !\u003d null) {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"AdityaB4"},"content":" Files.createDirectories(directoryPath);","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"AdityaB4"},"content":" Files.createFile(filePath);","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"AdityaB4"},"content":" } catch (FileAlreadyExistsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"AdityaB4"},"content":" // Ignore this error","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"AdityaB4"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"AdityaB4"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"AdityaB4"},"content":" // Write to file","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"AdityaB4"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"AdityaB4"},"content":" Files.newBufferedWriter(filePath, StandardOpenOption.TRUNCATE_EXISTING);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"AdityaB4"},"content":" Files.write(filePath, output.getBytes(), StandardOpenOption.APPEND);","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"AdityaB4"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"AdityaB4"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"AdityaB4":54}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":" String text;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":" TaskStatus status;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"AdityaB4"},"content":" Task(String text, TaskStatus status) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"AdityaB4"},"content":" this.text \u003d text;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"AdityaB4"},"content":" this.status \u003d status;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"AdityaB4"},"content":" public void mark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"AdityaB4"},"content":" this.status \u003d TaskStatus.MARKED;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"AdityaB4"},"content":" public void unmark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"AdityaB4"},"content":" this.status \u003d TaskStatus.UNMARKED;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"AdityaB4"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"AdityaB4"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"AdityaB4"},"content":" String mark \u003d status \u003d\u003d TaskStatus.MARKED ? \"X\" : \" \";","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"AdityaB4"},"content":" return \"[\" + mark + \"] \" + text;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AdityaB4":23}},{"path":"src/main/java/TaskStatus.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"public enum TaskStatus {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":" MARKED,","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":" UNMARKED","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AdityaB4":4}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":" Todo(String text, TaskStatus status) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"AdityaB4"},"content":" super(text, status);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"AdityaB4"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"AdityaB4"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"AdityaB4"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"AdityaB4"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"AdityaB4"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"AdityaB4"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AdityaB4":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AdityaB4"},"content":"deadline 2103 /by 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"AdityaB4"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AdityaB4":2}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"AdityaB4"},"content":"java -classpath ..\\bin Chimp \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":{"AdityaB4":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":"AdityaB4"},"content":"java -classpath ../bin Chimp \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":"AdityaB4"},"content":"#dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT # \u003c- PLEASE UNCOMMENT THIS IF NEEDED FOR GRADING","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"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":{"AdityaB4":2,"-":36}}] diff --git a/AdityaB4_ip_master/commits.json b/AdityaB4_ip_master/commits.json index 343243dd..23a4d5bd 100644 --- a/AdityaB4_ip_master/commits.json +++ b/AdityaB4_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"AdityaB4":[{"date":"2024-01-23","commitResults":[{"hash":"1067639dc42fb8f52df0e0cf87ddf40c2682dcf6","isMergeCommit":false,"messageTitle":"Rename Duke to Chimp and setup greet text","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-24","commitResults":[{"hash":"e8793389c54d16013e4afe13ad0f50f2ba51f1a8","isMergeCommit":false,"messageTitle":"Add Echo and Bye","messageBody":"Chimp now repeats what you say\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":7}}},{"hash":"8272e594384b664c9d2947a3016df98d01ab2c40","isMergeCommit":false,"messageTitle":"Add Storage and Listing","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":6}}},{"hash":"04e85cdea4d6ca29b2a7315540fd1438fe0c6a60","isMergeCommit":false,"messageTitle":"Add Task and TaskStatus","messageBody":"TaskStatus is an enum to track marked and unmarked tasks\n","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":0}}},{"hash":"87d1736205a1ce72ec5edd31af26b63416dfa666","isMergeCommit":false,"messageTitle":"Add mark and unmark functionality, refactor to use switch for commands","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":9}}},{"hash":"0e8b1242af562fcc410b3a7921db6e21b0c9b7f9","isMergeCommit":false,"messageTitle":"Add Event subclasses and remove accidental import in Chimp.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":1}}},{"hash":"978a0acc2682e4c530b04e57e168f2b4c3c568ff","isMergeCommit":false,"messageTitle":"Add time strings for Events and Deadlines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":4}}},{"hash":"f30f077969e07d827e54c90a975dc82a53b9dc0b","isMergeCommit":false,"messageTitle":"Add command handling for todo, deadline, event and fix argument parsing bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":19}}},{"hash":"2cbcd9f9b9ec5ab3b426292a34841169e360b9c1","isMergeCommit":false,"messageTitle":"Uncomment todo case","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"1a3fa16fecb8402f24ed9e96ad785d994082b56c","isMergeCommit":false,"messageTitle":"Setup automated text ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"sh":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-25","commitResults":[{"hash":"0dd8eff59b0ffc40052434fc2ac8f4cda00c877f","isMergeCommit":false,"messageTitle":"Add invalid command message and refactor code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":12}}},{"hash":"32e20337711ad63e61343671c1956f87c8602a94","isMergeCommit":false,"messageTitle":"Add custom Exception classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"e13815337cb395e7396e6a01fc6faa33d571e142","isMergeCommit":false,"messageTitle":"Extract command handling to method and add error handling","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":51}}},{"hash":"eb2fd3144c320350b190ae077666188794411afd","isMergeCommit":false,"messageTitle":"Fix todo description bug","messageBody":"todo command previously said todo in the description\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"af2ae012974ad3ec438b64db1bdadfa2d50aa79d","isMergeCommit":false,"messageTitle":"Add delete command with error handling","messageBody":"","tags":["Level-6","A-Enums","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}}]},{"date":"2024-02-06","commitResults":[{"hash":"f87174ae674ff81bce6370b83864859676da888f","isMergeCommit":false,"messageTitle":"Add Storage.java and integrate with Chimp.java","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":65,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"AdityaB4":{"java":325,"md":2,"fxml":0,"sh":2,"bat":1,"gradle":0,"txt":5}},"authorContributionVariance":{"AdityaB4":5880.448},"authorDisplayNameMap":{"AdityaB4":"CS2103T-W12-2 BAJA..ITYA"}} +{"authorDailyContributionsMap":{"AdityaB4":[{"date":"2024-01-23","commitResults":[{"hash":"1067639dc42fb8f52df0e0cf87ddf40c2682dcf6","isMergeCommit":false,"messageTitle":"Rename Duke to Chimp and setup greet text","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-24","commitResults":[{"hash":"e8793389c54d16013e4afe13ad0f50f2ba51f1a8","isMergeCommit":false,"messageTitle":"Add Echo and Bye","messageBody":"Chimp now repeats what you say\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":7}}},{"hash":"8272e594384b664c9d2947a3016df98d01ab2c40","isMergeCommit":false,"messageTitle":"Add Storage and Listing","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":6}}},{"hash":"04e85cdea4d6ca29b2a7315540fd1438fe0c6a60","isMergeCommit":false,"messageTitle":"Add Task and TaskStatus","messageBody":"TaskStatus is an enum to track marked and unmarked tasks\n","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":0}}},{"hash":"87d1736205a1ce72ec5edd31af26b63416dfa666","isMergeCommit":false,"messageTitle":"Add mark and unmark functionality, refactor to use switch for commands","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":9}}},{"hash":"0e8b1242af562fcc410b3a7921db6e21b0c9b7f9","isMergeCommit":false,"messageTitle":"Add Event subclasses and remove accidental import in Chimp.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":1}}},{"hash":"978a0acc2682e4c530b04e57e168f2b4c3c568ff","isMergeCommit":false,"messageTitle":"Add time strings for Events and Deadlines","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":4}}},{"hash":"f30f077969e07d827e54c90a975dc82a53b9dc0b","isMergeCommit":false,"messageTitle":"Add command handling for todo, deadline, event and fix argument parsing bug","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":19}}},{"hash":"2cbcd9f9b9ec5ab3b426292a34841169e360b9c1","isMergeCommit":false,"messageTitle":"Uncomment todo case","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"1a3fa16fecb8402f24ed9e96ad785d994082b56c","isMergeCommit":false,"messageTitle":"Setup automated text ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"sh":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-25","commitResults":[{"hash":"0dd8eff59b0ffc40052434fc2ac8f4cda00c877f","isMergeCommit":false,"messageTitle":"Add invalid command message and refactor code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":12}}},{"hash":"32e20337711ad63e61343671c1956f87c8602a94","isMergeCommit":false,"messageTitle":"Add custom Exception classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"e13815337cb395e7396e6a01fc6faa33d571e142","isMergeCommit":false,"messageTitle":"Extract command handling to method and add error handling","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":51}}},{"hash":"eb2fd3144c320350b190ae077666188794411afd","isMergeCommit":false,"messageTitle":"Fix todo description bug","messageBody":"todo command previously said todo in the description\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"af2ae012974ad3ec438b64db1bdadfa2d50aa79d","isMergeCommit":false,"messageTitle":"Add delete command with error handling","messageBody":"","tags":["Level-6","A-Enums","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}}]},{"date":"2024-02-06","commitResults":[{"hash":"f87174ae674ff81bce6370b83864859676da888f","isMergeCommit":false,"messageTitle":"Add Storage.java and integrate with Chimp.java","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":65,"deletions":4}}},{"hash":"dbadf1c50530f3d33501d236497e6bac3d9175b3","isMergeCommit":false,"messageTitle":"Change time types to LocalDate","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":7}}},{"hash":"0cda5a77610cf903ea04cd52e3fff7c5e5f706d7","isMergeCommit":false,"messageTitle":"Add parsing and error handling for LocalDates","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}},{"hash":"2753ef676db9258a6debda2a766b28013e511526","isMergeCommit":false,"messageTitle":"Display from, to, by formatted to pattern","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"AdityaB4":{"java":359,"md":2,"fxml":0,"sh":2,"bat":1,"gradle":0,"txt":5}},"authorContributionVariance":{"AdityaB4":6279.428},"authorDisplayNameMap":{"AdityaB4":"CS2103T-W12-2 BAJA..ITYA"}} diff --git a/Anant1902_ip_master/authorship.json b/Anant1902_ip_master/authorship.json index 69ef7b9c..8ec659af 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":"Anant1902"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-03"},{"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":"Anant1902"},"content":" mainClass.set(\"drake.Drake\")","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":"Anant1902"},"content":" archiveBaseName \u003d \"drake\"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":"checkstyle {","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"-":40,"Anant1902":7}},{"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.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"import drake.task.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"import drake.task.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"import drake.task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"import drake.task.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"import drake.task.Todo;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"enum Command {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" BYE, LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, INVALID, FIND;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" // Method to get the appropriate enum value from a string input","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" public static Command fromString(String commandString) {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" switch (commandString.toLowerCase()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" case \"bye\":","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" return BYE;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" case \"list\":","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" return LIST;","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" return MARK;","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" return UNMARK;","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" return TODO;","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" return DEADLINE;","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" return EVENT;","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" return DELETE;","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" case \"find\":","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" return FIND;","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" return INVALID;","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":"public class Drake {","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" private final Ui UI;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" private final Storage STORAGE;","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" private final TaskList TASKS;","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" private boolean isRunning;","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" public Drake(String FILE_PATH) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" UI \u003d new Ui();","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" STORAGE \u003d new Storage(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" TASKS \u003d new TaskList(STORAGE.loadTasks());","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" isRunning \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" public void run() throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":" UI.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":" while (isRunning) {","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Anant1902"},"content":" String input \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"Anant1902"},"content":" String[] words \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"Anant1902"},"content":" String commandWord \u003d words[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"Anant1902"},"content":" Command command \u003d Command.fromString(commandWord);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"Anant1902"},"content":" switch (command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"Anant1902"},"content":" case BYE:","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"Anant1902"},"content":" isRunning \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Anant1902"},"content":" STORAGE.saveTasks(TASKS.getTasks());","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Anant1902"},"content":" UI.showGoodbye();","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"Anant1902"},"content":" case LIST:","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"Anant1902"},"content":" UI.showTaskList(TASKS);","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":77,"author":{"gitId":"Anant1902"},"content":" case MARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"Anant1902"},"content":" int markIndex \u003d Parser.parseTaskIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"Anant1902"},"content":" TASKS.markTask(markIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Anant1902"},"content":" UI.showMarkTask(TASKS.getTask(markIndex));","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"Anant1902"},"content":" case UNMARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"Anant1902"},"content":" int unmarkIndex \u003d Parser.parseTaskIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"Anant1902"},"content":" TASKS.unmarkTask(unmarkIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Anant1902"},"content":" UI.showUnmarkTask(TASKS.getTask(unmarkIndex));","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"Anant1902"},"content":" case TODO:","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"Anant1902"},"content":" String todoDescription \u003d Parser.parseDescription(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Anant1902"},"content":" Todo newTodo \u003d new Todo(todoDescription);","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"Anant1902"},"content":" TASKS.addTask(newTodo);","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Anant1902"},"content":" UI.showAddTask(newTodo, TASKS.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"Anant1902"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"Anant1902"},"content":" Object[] deadlineDetails \u003d Parser.parseDeadline (input);","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"Anant1902"},"content":" Deadline newDeadline \u003d new Deadline((String) deadlineDetails[0],","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Anant1902"},"content":" (LocalDateTime) deadlineDetails[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Anant1902"},"content":" TASKS.addTask(newDeadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Anant1902"},"content":" UI.showAddTask(newDeadline, TASKS.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Anant1902"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"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-30"},{"lineNumber":102,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"Anant1902"},"content":" case EVENT:","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"Anant1902"},"content":" String[] eventDetails \u003d Parser.parseEvent(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"Anant1902"},"content":" Event newEvent \u003d new Event(eventDetails[0], eventDetails[1], eventDetails[2]);","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"Anant1902"},"content":" TASKS.addTask(newEvent);","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Anant1902"},"content":" UI.showAddTask(newEvent, TASKS.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"Anant1902"},"content":" case DELETE:","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"Anant1902"},"content":" int deleteIndex \u003d Parser.parseTaskIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"Anant1902"},"content":" Task deletedTask \u003d TASKS.deleteTask(deleteIndex);","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Anant1902"},"content":" UI.showDeleteTask(deletedTask, TASKS.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"Anant1902"},"content":" case FIND:","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Anant1902"},"content":" String keyword \u003d Parser.parseKeyword(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Anant1902"},"content":" ArrayList\u003cTask\u003e matchingTasks \u003d TASKS.findTasksByKeyword(keyword);","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Anant1902"},"content":" UI.showMatchingTasks(matchingTasks);","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Anant1902"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Anant1902"},"content":" case INVALID:","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"Anant1902"},"content":" throw new NotValidCommand(\"That\u0027s not a valid command!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"Anant1902"},"content":" } catch (NotValidCommand | TodoLeftBlank e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"Anant1902"},"content":" UI.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"Anant1902"},"content":" scanner.close();","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"Anant1902"},"content":" public static void main(String[] args) throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"Anant1902"},"content":" new Drake(\"./list.dat\").run();","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Anant1902":133}},{"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":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" * Handles parsing of user input into various components such as commands, task indices, descriptions, and deadlines.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" public static int parseTaskIndex(String input) throws NumberFormatException {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" String[] words \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" if (words.length \u003c 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" throw new IllegalArgumentException(\"No task index provided.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" return Integer.parseInt(words[1]) - 1; // Subtract 1 to convert to zero-based index","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-30"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" * Parses the task description from the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" * @return The task description.","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" * @throws TodoLeftBlank if the description part of the input is empty.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" public static String parseDescription(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" if (parts.length \u003c 2 || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"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":32,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" return parts[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" }","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":" * Parses the deadline task from the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" * ","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" * @return An Object array where the first element is the task description and the second element is the deadline as a LocalDateTime.","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" * @throws Exception if the deadline format is incorrect or if the \u0027deadline\u0027 keyword is misspelled.","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" public static Object[] parseDeadline(String input) throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.split(\" /by \");","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" throw new IllegalArgumentException(\"Deadline time not provided.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" if (!parts[0].split(\" \")[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" throw new Exception(\"Looks like you spelt deadline wrong. Please try again!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" String description \u003d parts[0].substring(parts[0].indexOf(\u0027 \u0027) + 1).trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" LocalDate date;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" date \u003d LocalDate.parse(parts[1], DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" by \u003d date.atStartOfDay();","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" throw new Exception(\"Date is of the wrong format!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":" } ","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":" return new Object[]{description, by};","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Anant1902"},"content":" * Parses an event task from the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Anant1902"},"content":" * ","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Anant1902"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Anant1902"},"content":" * @return A String array where the first element is the event title, the second element is the start time, and the third element is the end time.","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Anant1902"},"content":" public static String[] parseEvent(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.substring(6).split(\"/\");","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Anant1902"},"content":" String title \u003d parts[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Anant1902"},"content":" String from \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Anant1902"},"content":" String to \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Anant1902"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Anant1902"},"content":" for (int i \u003d 1; i \u003c parts.length; i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Anant1902"},"content":" if (parts[i].split(\" \")[0].equals(\"from\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"Anant1902"},"content":" from \u003d parts[i].substring(5);","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Anant1902"},"content":" if (parts[i].split(\" \")[0].equals(\"to\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"Anant1902"},"content":" to \u003d parts[i].substring(3);","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"Anant1902"},"content":" return new String[]{title, from, to};","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Anant1902"},"content":" public static String parseKeyword(String input) {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Anant1902"},"content":" if (parts.length \u003c 2 || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Anant1902"},"content":" throw new IllegalArgumentException(\"Keyword for search is missing.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Anant1902"},"content":" return parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":95}},{"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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" * Handles storage operations for tasks, such as saving to and loading from a file.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" private final String FILE_PATH;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" * Constructs a new Storage object.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" * @param filePath The file path where tasks will be saved and loaded from.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" public Storage(String FILE_PATH) {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" this.FILE_PATH \u003d FILE_PATH;","lastModifiedDate":"2024-01-30"},{"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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" * Saves the list of tasks to the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" * ","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" * @param tasks The ArrayList of Task objects to be saved.","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" public void saveTasks(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" try (ObjectOutputStream oos \u003d new ObjectOutputStream(new FileOutputStream(FILE_PATH))) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" oos.writeObject(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Error saving list!: \" + 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":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" * Loads and returns the list of tasks from the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" * If the file does not exist, returns an empty list.","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" * If the file exists but an error occurs during reading, also returns an empty list.","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" * ","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" * @return The ArrayList of Task objects loaded from the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" @SuppressWarnings(\"unchecked\")","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" public ArrayList\u003cTask\u003e loadTasks() {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" try (ObjectInputStream ois \u003d new ObjectInputStream(new FileInputStream(file))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" return (ArrayList\u003cTask\u003e) ois.readObject();","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" } catch (ClassNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Class not found!: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":56}},{"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":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import drake.task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"import drake.task.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" * Handles UI operations for the chatbot.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"public class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" * Displays a welcome message to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" System.out.println(\" What\u0027s up everyone. I\u0027m Drake.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" System.out.println(\" How can I help?\");","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" * Displays a goodbye message to the user.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" System.out.println(\" See you later, alligator! \");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" * Displays an error message.","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" * @param message The error message to be displayed.","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" * Displays a task along with a custom message and the total number of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" * @param message The custom message to display before the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" * @param task The task to be displayed.","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" * @param size The total number of tasks in the list.","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" public void showTask(String message, Task task, int size) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":" * Displays the list of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":" * @param tasks The TaskList containing the tasks to display.","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Anant1902"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"You asked for the tasks in your list? Here:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Anant1902"},"content":" ArrayList\u003cTask\u003e taskList \u003d tasks.getTasks();","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Anant1902"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Anant1902"},"content":" System.out.println((i + 1) + \". \" + taskList.get(i));","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","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-30"},{"lineNumber":74,"author":{"gitId":"Anant1902"},"content":" * Displays a message confirming the addition of a task, the task itself, and the new total number of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Anant1902"},"content":" * @param task The task that has been added.","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Anant1902"},"content":" * @param size The new total number of tasks in the list.","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Anant1902"},"content":" public void showAddTask(Task task, int size) {","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Anant1902"},"content":" * Displays a message confirming that a task has been marked as done.","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Anant1902"},"content":" * @param task The task that has been marked.","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Anant1902"},"content":" public void showMarkTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Cool. I now declare this task marked as, done:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Anant1902"},"content":" * Displays a message confirming that a task has been marked as not done.","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Anant1902"},"content":" * @param task The task that has been unmarked.","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Anant1902"},"content":" public void showUnmarkTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Anant1902"},"content":" * Displays a message confirming the deletion of a task, the task itself, and the new total number of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Anant1902"},"content":" * @param task The task that has been deleted.","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Anant1902"},"content":" * @param size The new total number of tasks in the list.","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Anant1902"},"content":" public void showDeleteTask(Task task, int size) {","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"Anant1902"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"Anant1902"},"content":" public void showMatchingTasks(ArrayList\u003cTask\u003e matchingTasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"Anant1902"},"content":" for (int i \u003d 0; i \u003c matchingTasks.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Anant1902"},"content":" System.out.println((i + 1) + \". \" + matchingTasks.get(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":134}},{"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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" * Represents a list of tasks and provides methods to manipulate this list.","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"public class TaskList {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" private final ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" public TaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" * Constructs a TaskList with a predefined list of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" * @param tasks The ArrayList of Task objects to initialize the TaskList with.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" this.tasks \u003d tasks;","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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" * @param task The Task object to be added.","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" tasks.add(task);","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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" * @return The deleted Task object.","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" * @throws IndexOutOfBoundsException If the index is out of the range of the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" public Task deleteTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" throw new IndexOutOfBoundsException(\"Task index is out of bounds.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" return tasks.remove(index);","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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" * Retrieves a task from the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" * @param index The index of the task to retrieve.","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" * @return The Task object at the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" * @throws IndexOutOfBoundsException If the index is out of the range of the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" public Task getTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" throw new IndexOutOfBoundsException(\"Task index is out of bounds.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Anant1902"},"content":" * Returns the number of tasks in the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Anant1902"},"content":" * @return The size of the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Anant1902"},"content":" public int size() {","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Anant1902"},"content":" return tasks.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Anant1902"},"content":" * Provides access to the list of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Anant1902"},"content":" * @return The ArrayList of Task objects.","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Anant1902"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Anant1902"},"content":" return tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Anant1902"},"content":" * Marks a task in the task list as done.","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Anant1902"},"content":" * @param index The index of the task to be marked as done.","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Anant1902"},"content":" * @throws IndexOutOfBoundsException If the index is out of the range of the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Anant1902"},"content":" public void markTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Anant1902"},"content":" getTask(index).isDone \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Anant1902"},"content":" * Unmarks a task in the task list, indicating it is not done.","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Anant1902"},"content":" * @param index The index of the task to be unmarked.","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Anant1902"},"content":" * @throws IndexOutOfBoundsException If the index is out of the range of the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Anant1902"},"content":" public void unmarkTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"Anant1902"},"content":" getTask(index).isDone \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"Anant1902"},"content":" public ArrayList\u003cTask\u003e findTasksByKeyword(String keyword) {","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Anant1902"},"content":" ArrayList\u003cTask\u003e matchingTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Anant1902"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Anant1902"},"content":" if (task.description.contains(keyword)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Anant1902"},"content":" matchingTasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Anant1902"},"content":" return matchingTasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":111}},{"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.Drake \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":{"-":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":"Anant1902"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-03"},{"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":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" mainClass.set(\"drake.Drake\")","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" archiveBaseName \u003d \"drake\"","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":"checkstyle {","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"-":40,"Anant1902":22}},{"path":"src/main/java/drake/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" * containing text from the speaker.","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" private Label dialog;","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" private void flip() {","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" db.flip();","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":" return db;","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Anant1902":61}},{"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.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDateTime;","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":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"import drake.task.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"import drake.task.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"import drake.task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"import drake.task.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"import drake.task.Todo;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":"enum Command {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" BYE, LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, INVALID, FIND;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" public static Command fromString(String commandString) {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" switch (commandString.toLowerCase()) {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" case \"bye\":","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" return BYE;","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" case \"list\":","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" return LIST;","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" return MARK;","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" return UNMARK;","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" return TODO;","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" return DEADLINE;","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" return EVENT;","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" return DELETE;","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" case \"find\":","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" return FIND;","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" return INVALID;","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" * This is the main class for the Drake application, which is a task manager program.","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" * It initializes the application, loads existing tasks, and enters a command loop that","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" * allows users to interact with their task list through various commands.","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":"public class Drake {","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":" private Ui ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"Anant1902"},"content":" private Storage storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"Anant1902"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"Anant1902"},"content":" private boolean isRunning;","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Anant1902"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"Anant1902"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"Anant1902"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"Anant1902"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"Anant1902"},"content":" private Scene scene;","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"Anant1902"},"content":" private Image user \u003d new Image(this.getClass().getResourceAsStream(\"/images/user.jpeg\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"Anant1902"},"content":" private Image duke \u003d new Image(this.getClass().getResourceAsStream(\"/images/drake.jpeg\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"Anant1902"},"content":" * Constructs a new instance of the Drake application.","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"Anant1902"},"content":" * @param filePath The path to the file where tasks are stored and retrieved from.","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"Anant1902"},"content":" public Drake(String filePath) {","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"Anant1902"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"Anant1902"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"Anant1902"},"content":" tasks \u003d new TaskList(storage.loadTasks());","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"Anant1902"},"content":" isRunning \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"Anant1902"},"content":" * Constructs a new instance of the Drake application.","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"Anant1902"},"content":" public Drake() {","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"Anant1902"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"Anant1902"},"content":" storage \u003d new Storage(\"./list.dat\");","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"Anant1902"},"content":" tasks \u003d new TaskList(storage.loadTasks());","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"Anant1902"},"content":" isRunning \u003d true;","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"Anant1902"},"content":" * Gets the response from Drake.","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"Anant1902"},"content":" * @param input the user\u0027s input.","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"Anant1902"},"content":" * @return the response from Drake.","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"Anant1902"},"content":" protected String getResponse(String input) {","lastModifiedDate":"2024-02-07"},{"lineNumber":102,"author":{"gitId":"Anant1902"},"content":" String[] words \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"Anant1902"},"content":" String commandWord \u003d words[0];","lastModifiedDate":"2024-01-24"},{"lineNumber":104,"author":{"gitId":"Anant1902"},"content":" Command command \u003d Command.fromString(commandWord);","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"Anant1902"},"content":" switch (command) {","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"Anant1902"},"content":" case BYE:","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"Anant1902"},"content":" return handleBye();","lastModifiedDate":"2024-02-07"},{"lineNumber":109,"author":{"gitId":"Anant1902"},"content":" case LIST:","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"Anant1902"},"content":" return handleList();","lastModifiedDate":"2024-02-07"},{"lineNumber":111,"author":{"gitId":"Anant1902"},"content":" case MARK:","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"Anant1902"},"content":" return handleMark(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":113,"author":{"gitId":"Anant1902"},"content":" case UNMARK:","lastModifiedDate":"2024-02-07"},{"lineNumber":114,"author":{"gitId":"Anant1902"},"content":" return handleUnmark(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":115,"author":{"gitId":"Anant1902"},"content":" case TODO:","lastModifiedDate":"2024-02-07"},{"lineNumber":116,"author":{"gitId":"Anant1902"},"content":" return handleTodo(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":117,"author":{"gitId":"Anant1902"},"content":" case DEADLINE:","lastModifiedDate":"2024-02-07"},{"lineNumber":118,"author":{"gitId":"Anant1902"},"content":" return handleDeadline(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":119,"author":{"gitId":"Anant1902"},"content":" case EVENT:","lastModifiedDate":"2024-02-07"},{"lineNumber":120,"author":{"gitId":"Anant1902"},"content":" return handleEvent(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":121,"author":{"gitId":"Anant1902"},"content":" case DELETE:","lastModifiedDate":"2024-02-07"},{"lineNumber":122,"author":{"gitId":"Anant1902"},"content":" return handleDelete(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":123,"author":{"gitId":"Anant1902"},"content":" case FIND:","lastModifiedDate":"2024-02-07"},{"lineNumber":124,"author":{"gitId":"Anant1902"},"content":" return handleFind(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":125,"author":{"gitId":"Anant1902"},"content":" default:","lastModifiedDate":"2024-02-07"},{"lineNumber":126,"author":{"gitId":"Anant1902"},"content":" throw new NotValidCommand(\"That\u0027s not a valid command!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":127,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":128,"author":{"gitId":"Anant1902"},"content":" } catch (NotValidCommand | TodoLeftBlank e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":129,"author":{"gitId":"Anant1902"},"content":" return ui.showError(e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":130,"author":{"gitId":"Anant1902"},"content":" } catch (Exception e) { // General exception catch for unforeseen errors","lastModifiedDate":"2024-02-07"},{"lineNumber":131,"author":{"gitId":"Anant1902"},"content":" return ui.showError(\"An unexpected error occurred.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":132,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":133,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":134,"author":{"gitId":"Anant1902"},"content":" private String handleBye() throws IOException {","lastModifiedDate":"2024-02-07"},{"lineNumber":135,"author":{"gitId":"Anant1902"},"content":" isRunning \u003d false;","lastModifiedDate":"2024-02-07"},{"lineNumber":136,"author":{"gitId":"Anant1902"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2024-02-07"},{"lineNumber":137,"author":{"gitId":"Anant1902"},"content":" return ui.showGoodbye();","lastModifiedDate":"2024-02-07"},{"lineNumber":138,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":139,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":140,"author":{"gitId":"Anant1902"},"content":" private String handleList() {","lastModifiedDate":"2024-02-07"},{"lineNumber":141,"author":{"gitId":"Anant1902"},"content":" return ui.showTaskList(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":142,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":143,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":144,"author":{"gitId":"Anant1902"},"content":" private String handleMark(String input) {","lastModifiedDate":"2024-02-07"},{"lineNumber":145,"author":{"gitId":"Anant1902"},"content":" int markIndex \u003d Parser.parseTaskIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"Anant1902"},"content":" tasks.markTask(markIndex);","lastModifiedDate":"2024-02-03"},{"lineNumber":147,"author":{"gitId":"Anant1902"},"content":" return ui.showMarkTask(tasks.getTask(markIndex));","lastModifiedDate":"2024-02-07"},{"lineNumber":148,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":149,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":150,"author":{"gitId":"Anant1902"},"content":" private String handleUnmark(String input) {","lastModifiedDate":"2024-02-07"},{"lineNumber":151,"author":{"gitId":"Anant1902"},"content":" int unmarkIndex \u003d Parser.parseTaskIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"Anant1902"},"content":" tasks.unmarkTask(unmarkIndex);","lastModifiedDate":"2024-02-03"},{"lineNumber":153,"author":{"gitId":"Anant1902"},"content":" return ui.showUnmarkTask(tasks.getTask(unmarkIndex));","lastModifiedDate":"2024-02-07"},{"lineNumber":154,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":155,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":156,"author":{"gitId":"Anant1902"},"content":" private String handleTodo(String input) {","lastModifiedDate":"2024-02-07"},{"lineNumber":157,"author":{"gitId":"Anant1902"},"content":" String todoDescription \u003d Parser.parseDescription(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":158,"author":{"gitId":"Anant1902"},"content":" Todo newTodo \u003d new Todo(todoDescription);","lastModifiedDate":"2024-01-28"},{"lineNumber":159,"author":{"gitId":"Anant1902"},"content":" tasks.addTask(newTodo);","lastModifiedDate":"2024-02-03"},{"lineNumber":160,"author":{"gitId":"Anant1902"},"content":" return ui.showAddTask(newTodo, tasks.size());","lastModifiedDate":"2024-02-07"},{"lineNumber":161,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":162,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":163,"author":{"gitId":"Anant1902"},"content":" private String handleDeadline(String input) {","lastModifiedDate":"2024-02-07"},{"lineNumber":164,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":165,"author":{"gitId":"Anant1902"},"content":" Object[] deadlineDetails \u003d Parser.parseDeadline(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":166,"author":{"gitId":"Anant1902"},"content":" Deadline newDeadline \u003d new Deadline((String) deadlineDetails[0],","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"Anant1902"},"content":" (LocalDateTime) deadlineDetails[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"Anant1902"},"content":" tasks.addTask(newDeadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":169,"author":{"gitId":"Anant1902"},"content":" return ui.showAddTask(newDeadline, tasks.size());","lastModifiedDate":"2024-02-07"},{"lineNumber":170,"author":{"gitId":"Anant1902"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":171,"author":{"gitId":"Anant1902"},"content":" return ui.showError(\"Oops, format error! Type in a date in the form yy-mm-dd and try again!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":172,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":173,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":174,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":175,"author":{"gitId":"Anant1902"},"content":" private String handleEvent(String input) {","lastModifiedDate":"2024-02-07"},{"lineNumber":176,"author":{"gitId":"Anant1902"},"content":" String[] eventDetails \u003d Parser.parseEvent(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":177,"author":{"gitId":"Anant1902"},"content":" Event newEvent \u003d new Event(eventDetails[0], eventDetails[1], eventDetails[2]);","lastModifiedDate":"2024-01-28"},{"lineNumber":178,"author":{"gitId":"Anant1902"},"content":" tasks.addTask(newEvent);","lastModifiedDate":"2024-02-03"},{"lineNumber":179,"author":{"gitId":"Anant1902"},"content":" return ui.showAddTask(newEvent, tasks.size());","lastModifiedDate":"2024-02-07"},{"lineNumber":180,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":181,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":182,"author":{"gitId":"Anant1902"},"content":" private String handleDelete(String input) {","lastModifiedDate":"2024-02-07"},{"lineNumber":183,"author":{"gitId":"Anant1902"},"content":" int deleteIndex \u003d Parser.parseTaskIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":184,"author":{"gitId":"Anant1902"},"content":" Task deletedTask \u003d tasks.deleteTask(deleteIndex);","lastModifiedDate":"2024-02-03"},{"lineNumber":185,"author":{"gitId":"Anant1902"},"content":" return ui.showDeleteTask(deletedTask, tasks.size());","lastModifiedDate":"2024-02-07"},{"lineNumber":186,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":187,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":188,"author":{"gitId":"Anant1902"},"content":" private String handleFind(String input) {","lastModifiedDate":"2024-02-07"},{"lineNumber":189,"author":{"gitId":"Anant1902"},"content":" String keyword \u003d Parser.parseKeyword(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"Anant1902"},"content":" ArrayList\u003cTask\u003e matchingTasks \u003d tasks.findTasksByKeyword(keyword);","lastModifiedDate":"2024-02-03"},{"lineNumber":191,"author":{"gitId":"Anant1902"},"content":" return ui.showMatchingTasks(matchingTasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":192,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":193,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"Anant1902"},"content":" public static void main(String[] args) throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"Anant1902"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-07"},{"lineNumber":196,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":197,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Anant1902":197}},{"path":"src/main/java/drake/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"public class Launcher {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Anant1902":11}},{"path":"src/main/java/drake/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" private Drake duke \u003d new Drake();","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" stage.setTitle(\"Drake\");","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" stage.show();","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setWelcomeMessage(Ui.showWelcome());","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Anant1902":33}},{"path":"src/main/java/drake/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" private Drake drake;","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/user.jpeg\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" private Image drakeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/drake.jpeg\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" public void initialize() {","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" public void setDuke(Drake d) {","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" drake \u003d d;","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" String response \u003d drake.getResponse(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" DialogBox.getDukeDialog(response, drakeImage)","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" );","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" userInput.clear();","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" * Sets a welcome message.","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" * @param message Welcome message.","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" public void setWelcomeMessage(String message) {","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":" dialogContainer.getChildren().addAll(DialogBox.getDukeDialog(message, drakeImage));","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Anant1902":61}},{"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":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" * This exception is thrown when an attempt is made to execute an invalid command","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" * in the Drake application. It serves as a specific signal that a user has attempted","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" * to input a command that the application does not recognize or cannot process.","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"public class NotValidCommand extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" public NotValidCommand(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":12}},{"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":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" * Handles parsing of user input into various components such as commands, task indices, descriptions, and deadlines.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" * Parses an event task from the user input. It assumes the input contains","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" * the event details after the \u0027event\u0027 keyword.","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" * @param input The user input string that contains the event details.","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" * @return A String array with three elements: the event title, the start time, and the end time.","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" * @throws IllegalArgumentException If the input does not contain valid \u0027from\u0027 and \u0027to\u0027 times for the event.","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" public static int parseTaskIndex(String input) throws NumberFormatException {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" String[] words \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" if (words.length \u003c 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" throw new IllegalArgumentException(\"No task index provided.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" return Integer.parseInt(words[1]) - 1; // Subtract 1 to convert to zero-based index","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" * Parses the task description from the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" * @return The task description.","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" * @throws TodoLeftBlank if the description part of the input is empty.","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" public static String parseDescription(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" if (parts.length \u003c 2 || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"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":40,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" return parts[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" * Parses the deadline task from the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" * @return An Object array where the first element is the task description and the second element","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" * is the deadline as a LocalDateTime.","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" * @throws Exception if the deadline format is incorrect or if the \u0027deadline\u0027 keyword is misspelled.","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" public static Object[] parseDeadline(String input) throws Exception {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.split(\" /by \");","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" throw new IllegalArgumentException(\"Deadline time not provided.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" if (!parts[0].split(\" \")[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" throw new Exception(\"Looks like you spelt deadline wrong. Please try again!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" String description \u003d parts[0].substring(parts[0].indexOf(\u0027 \u0027) + 1).trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":" LocalDate date;","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":" LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Anant1902"},"content":" date \u003d LocalDate.parse(parts[1], DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Anant1902"},"content":" by \u003d date.atStartOfDay();","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Anant1902"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Anant1902"},"content":" throw new Exception(\"Date is of the wrong format!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Anant1902"},"content":" return new Object[]{description, by};","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":"","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Anant1902"},"content":" * Parses an event task from the user input.","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Anant1902"},"content":" * @param input The user input string.","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Anant1902"},"content":" * @return A String array where the first element is the event title,","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"Anant1902"},"content":" * the second element is the start time, and the third element is the end time.","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Anant1902"},"content":" public static String[] parseEvent(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.substring(6).split(\"/\");","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"Anant1902"},"content":" String title \u003d parts[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"Anant1902"},"content":" String from \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Anant1902"},"content":" String to \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"Anant1902"},"content":" for (int i \u003d 1; i \u003c parts.length; i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"Anant1902"},"content":" if (parts[i].split(\" \")[0].equals(\"from\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"Anant1902"},"content":" from \u003d parts[i].substring(5);","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"Anant1902"},"content":" if (parts[i].split(\" \")[0].equals(\"to\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"Anant1902"},"content":" to \u003d parts[i].substring(3);","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"Anant1902"},"content":" return new String[]{title, from, to};","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"Anant1902"},"content":" * Parses the search keyword from the user input. It assumes the input contains","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"Anant1902"},"content":" * the keyword after the \u0027find\u0027 command.","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"Anant1902"},"content":" * @param input The user input string that contains the search keyword.","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"Anant1902"},"content":" * @return The search keyword.","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"Anant1902"},"content":" * @throws IllegalArgumentException If the keyword for search is missing or empty.","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"Anant1902"},"content":" public static String parseKeyword(String input) {","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Anant1902"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Anant1902"},"content":" if (parts.length \u003c 2 || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Anant1902"},"content":" throw new IllegalArgumentException(\"Keyword for search is missing.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Anant1902"},"content":" return parts[1].trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":108}},{"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":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"import java.io.File;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"import java.io.FileInputStream;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"import java.io.ObjectInputStream;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"import java.io.ObjectOutputStream;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"import drake.task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" * Handles storage operations for tasks, such as saving to and loading from a file.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" private final String filePath;","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" * Constructs a new Storage object.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" * @param filePath The file path where tasks will be saved and loaded from.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" * Saves the list of tasks to the file.*","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" * @param tasks The ArrayList of Task objects to be saved.","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" public void saveTasks(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" try (ObjectOutputStream oos \u003d new ObjectOutputStream(new FileOutputStream(filePath))) {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" oos.writeObject(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Error saving list!: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" * Loads and returns the list of tasks from the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" * If the file does not exist, returns an empty list.","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" * If the file exists but an error occurs during reading, also returns an empty list.","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" * @return The ArrayList of Task objects loaded from the file.","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" @SuppressWarnings(\"unchecked\")","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" public ArrayList\u003cTask\u003e loadTasks() {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" try (ObjectInputStream ois \u003d new ObjectInputStream(new FileInputStream(file))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" return (ArrayList\u003cTask\u003e) ois.readObject();","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" } catch (ClassNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" System.out.println(\"Class not found!: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" return new ArrayList\u003c\u003e();","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/TodoLeftBlank.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"package drake;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" * Exception thrown when an attempt to create a todo task is made without specifying a description.","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" * This is a subclass of StringIndexOutOfBoundsException, which is typically thrown to indicate that","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" * an index is either negative or greater than the size of the string.","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"public class TodoLeftBlank extends StringIndexOutOfBoundsException {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" public TodoLeftBlank(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":12}},{"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-02-03"},{"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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" * Handles UI operations for the chatbot.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"public class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" * Returns a welcome message to the user.","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" public static String showWelcome() {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" return \"____________________________________________________________\\n\" + \" What\u0027s up everyone. I\u0027m Drake.\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" + \" How can I help?\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" + \"____________________________________________________________\";","lastModifiedDate":"2024-02-07"},{"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-30"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" * Returns a goodbye message to the user.","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" public String showGoodbye() {","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" return \"____________________________________________________________\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" + \" See you later, alligator! \\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" + \"____________________________________________________________\";","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" * Returns an error message.","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" * @param message The error message to be returned.","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" public String showError(String message) {","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" return \"____________________________________________________________\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" + message + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" + \"____________________________________________________________\";","lastModifiedDate":"2024-02-07"},{"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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" * Returns the list of tasks as a string.","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" * @param tasks The TaskList containing the tasks to display.","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" public String showTaskList(TaskList tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" sb.append(\"____________________________________________________________\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":" sb.append(\"You asked for the tasks in your list? Here:\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" ArrayList\u003cTask\u003e taskList \u003d tasks.getTasks();","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" sb.append(i + 1).append(\". \").append(taskList.get(i)).append(\"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" sb.append(\"____________________________________________________________\");","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" return sb.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":" * Returns a message confirming the addition of a task, the task itself, and the new total number of tasks.","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":" * @param task The task that has been added.","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Anant1902"},"content":" * @param size The new total number of tasks in the list.","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Anant1902"},"content":" public String showAddTask(Task task, int size) {","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"Anant1902"},"content":" return \"____________________________________________________________\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"Anant1902"},"content":" + \"Got it. I\u0027ve added this task:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"Anant1902"},"content":" + task + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"Anant1902"},"content":" + \"Now you have \" + size + \" tasks in the list.\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"Anant1902"},"content":" + \"____________________________________________________________\";","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Anant1902"},"content":" * Returns a message confirming that a task has been marked as done.","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Anant1902"},"content":" * @param task The task that has been marked.","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Anant1902"},"content":" public String showMarkTask(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"Anant1902"},"content":" return \"____________________________________________________________\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"Anant1902"},"content":" + \"Cool. I now declare this task marked as, done:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"Anant1902"},"content":" + task + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"Anant1902"},"content":" + \"____________________________________________________________\";","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Anant1902"},"content":" * Returns a message confirming that a task has been marked as not done.","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Anant1902"},"content":" * @param task The task that has been unmarked.","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Anant1902"},"content":" public String showUnmarkTask(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"Anant1902"},"content":" return \"____________________________________________________________\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"Anant1902"},"content":" + \"OK, I\u0027ve marked this task as not done yet:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"Anant1902"},"content":" + task + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"Anant1902"},"content":" + \"____________________________________________________________\";","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Anant1902"},"content":" * Returns a message confirming the deletion of a task, the task itself, and the new total number of tasks.","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Anant1902"},"content":" * @param task The task that has been deleted.","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Anant1902"},"content":" * @param size The new total number of tasks in the list.","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Anant1902"},"content":" public String showDeleteTask(Task task, int size) {","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"Anant1902"},"content":" return \"____________________________________________________________\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"Anant1902"},"content":" + \"Noted. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"Anant1902"},"content":" + task + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":106,"author":{"gitId":"Anant1902"},"content":" + \"Now you have \" + size + \" tasks in the list.\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":107,"author":{"gitId":"Anant1902"},"content":" + \"____________________________________________________________\";","lastModifiedDate":"2024-02-07"},{"lineNumber":108,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"Anant1902"},"content":" * Returns a message showing tasks that match the input.","lastModifiedDate":"2024-02-07"},{"lineNumber":112,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"Anant1902"},"content":" * @param matchingTasks The tasks that match the input.","lastModifiedDate":"2024-02-03"},{"lineNumber":114,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":115,"author":{"gitId":"Anant1902"},"content":" public String showMatchingTasks(ArrayList\u003cTask\u003e matchingTasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":116,"author":{"gitId":"Anant1902"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":117,"author":{"gitId":"Anant1902"},"content":" sb.append(\"____________________________________________________________\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":118,"author":{"gitId":"Anant1902"},"content":" sb.append(\"Here are the matching tasks in your list:\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":119,"author":{"gitId":"Anant1902"},"content":" for (int i \u003d 0; i \u003c matchingTasks.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Anant1902"},"content":" sb.append(i + 1).append(\". \").append(matchingTasks.get(i)).append(\"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":121,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Anant1902"},"content":" sb.append(\"____________________________________________________________\");","lastModifiedDate":"2024-02-07"},{"lineNumber":123,"author":{"gitId":"Anant1902"},"content":" return sb.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":124,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":125}},{"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":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" * Represents a deadline task with a specific due date and time.","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":" * Inherits from the {@code Task} class and includes additional information","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" * for the deadline date and time.","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" * Creates a {@code Deadline} task with the specified description and due date/time.","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" * @param description The description of the deadline.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" * @param by The LocalDateTime by which the task is due.","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" return \"[D]\" + super.toString() + \"(by: \" + this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"Anant1902":29}},{"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":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" * Represents an event task with a start and end time.","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" * Inherits from the {@code Task} class and includes additional information","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" * specific to events, such as the start time and end time.","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" protected String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" protected String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" * Creates an {@code Event} task with the specified description, start time, and end time.","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" * @param description The description of the event.","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" * @param from The start time of the event.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" * @param to The end time of the event.","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" return \"[E]\" + super.toString() + \"(from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":29}},{"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":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" * Represents a general task. This class is intended to be a superclass for various types of tasks","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":" * such as todos, deadlines, and events. It implements Serializable so that its instances","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" * can be serialized into a file for persistent storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"public class Task implements Serializable { // adapted skeleton from cs2103t course website","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" * Constructs a new Task with the given description. The task is initially not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" return (isDone ? \"[X] \" : \"[ ] \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" return getStatusIcon() + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":32}},{"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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" * Represents a list of tasks and provides methods to manipulate this list.","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"public class TaskList {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":" private final ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" public TaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" * Constructs a TaskList with a predefined list of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" * @param tasks The ArrayList of Task objects to initialize the TaskList with.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" this.tasks \u003d tasks;","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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" * @param task The Task object to be added.","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" tasks.add(task);","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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" * @param index The index of the task to be deleted.","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" * @return The deleted Task object.","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" * @throws IndexOutOfBoundsException If the index is out of the range of the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" public Task deleteTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" throw new IndexOutOfBoundsException(\"Task index is out of bounds.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" return tasks.remove(index);","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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Anant1902"},"content":" * Retrieves a task from the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Anant1902"},"content":" * @param index The index of the task to retrieve.","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Anant1902"},"content":" * @return The Task object at the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Anant1902"},"content":" * @throws IndexOutOfBoundsException If the index is out of the range of the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Anant1902"},"content":" public Task getTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Anant1902"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Anant1902"},"content":" throw new IndexOutOfBoundsException(\"Task index is out of bounds.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Anant1902"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Anant1902"},"content":" * Returns the number of tasks in the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Anant1902"},"content":" * @return The size of the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Anant1902"},"content":" public int size() {","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Anant1902"},"content":" return tasks.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Anant1902"},"content":" * Provides access to the list of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Anant1902"},"content":" * @return The ArrayList of Task objects.","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Anant1902"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Anant1902"},"content":" return tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Anant1902"},"content":" * Marks a task in the task list as done.","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Anant1902"},"content":" * @param index The index of the task to be marked as done.","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Anant1902"},"content":" * @throws IndexOutOfBoundsException If the index is out of the range of the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Anant1902"},"content":" public void markTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"Anant1902"},"content":" getTask(index).isDone \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Anant1902"},"content":" * Un-marks a task in the task list, indicating it is not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Anant1902"},"content":" * @param index The index of the task to be unmarked.","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Anant1902"},"content":" * @throws IndexOutOfBoundsException If the index is out of the range of the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Anant1902"},"content":" public void unmarkTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"Anant1902"},"content":" getTask(index).isDone \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"Anant1902"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"Anant1902"},"content":" * Searches through all tasks and returns a list of tasks whose descriptions contain the specified keyword.","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"Anant1902"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"Anant1902"},"content":" * @param keyword The string to search for within the task descriptions.","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"Anant1902"},"content":" * @return An {@code ArrayList\u003cTask\u003e} containing all tasks that have the specified keyword in their description.","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"Anant1902"},"content":" public ArrayList\u003cTask\u003e findTasksByKeyword(String keyword) {","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Anant1902"},"content":" ArrayList\u003cTask\u003e matchingTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Anant1902"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Anant1902"},"content":" if (task.description.contains(keyword)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Anant1902"},"content":" matchingTasks.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Anant1902"},"content":" return matchingTasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Anant1902":116}},{"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":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":" * Represents a Todo task with a description.","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":" * Inherits from the {@code Task} class and includes additional information","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" super(description);","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 \"[T]\" + super.toString();","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":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Anant1902":18}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"\u003c?import javafx.scene.paint.Color?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"\u003c?import javafx.scene.paint.LinearGradient?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"\u003c?import javafx.scene.paint.Stop?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"\u003c?import javafx.scene.text.TextFlow?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" \u003cTextFlow fx:id\u003d\"textFlow\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" \u003cLabel fx:id\u003d\"dialog\" style\u003d\"-fx-padding: 20;\" text\u003d\"Label\" wrapText\u003d\"true\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" \u003cfont\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" \u003cFont name\u003d\"Chalkboard SE Bold\" size\u003d\"14.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" \u003c/font\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" \u003ctextFill\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" \u003cLinearGradient endX\u003d\"1.0\" endY\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" \u003cstops\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" \u003cStop\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" \u003ccolor\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" \u003cColor red\u003d\"1.0\" green\u003d\"1.0\" blue\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" \u003c/color\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" \u003c/Stop\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" \u003cStop offset\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" \u003ccolor\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" \u003cColor red\u003d\"1.0\" green\u003d\"1.0\" blue\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" \u003c/color\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" \u003c/Stop\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" \u003c/stops\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" \u003c/LinearGradient\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" \u003c/textFill\u003e\u003c/Label\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":" \u003c/TextFlow\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Anant1902":42}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"Anant1902"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Anant1902"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"\u003c?import javafx.scene.effect.DropShadow?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"drake.MainWindow\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" \u003ceffect\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" \u003cDropShadow /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" \u003c/effect\u003e\u003c/Button\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"557.0\" prefWidth\u003d\"402.0\" style\u003d\"-fx-background-color: brown;\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Anant1902":23}},{"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 static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" public void parseDeadlineSuccessTest() throws Exception {","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" String testInput \u003d \"deadline eat dinner /by 2024-12-01\";","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":" Object[] actualOutput \u003d Parser.parseDeadline(testInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" Object[] expectedOutput \u003d {\"eat dinner\", LocalDate.parse(\"2024-12-01\",","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")).atStartOfDay()};","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" assertEquals(expectedOutput, actualOutput);","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" public void parseDeadlineWrongDateFormatTest() {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" String testInput \u003d \"deadline eat dinner /by 2024-14-01\";","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":" Object[] actualOutput \u003d Parser.parseDeadline(testInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" Object[] expectedWrongOutput \u003d {\"eat dinner\", LocalDate.parse(\"2024-14-01\",","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")).atStartOfDay()};","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" assertEquals(actualOutput, expectedWrongOutput);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" fail(); //This block should not be run.","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" assertEquals(\"Date is of the wrong format!\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"Anant1902"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Anant1902"},"content":" public void parseDeadlineWrongSpellingFormatTest() {","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Anant1902"},"content":" String testInput \u003d \"dedline eat dinner /by 2024-12-01\";","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"Anant1902"},"content":" Parser.parseDeadline(testInput);","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"Anant1902"},"content":" fail(); //This block should not be run.","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Anant1902"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Anant1902"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Anant1902"},"content":" assertEquals(\"Looks like you spelt deadline wrong. Please try again!\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Anant1902":49}},{"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 static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Anant1902"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Anant1902"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"Anant1902"},"content":"public class TaskListTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Anant1902"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Anant1902"},"content":" public void getTaskSuccessTest() {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"Anant1902"},"content":" TaskList input \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Anant1902"},"content":" Task task1 \u003d new Todo(\"sleep\");","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Anant1902"},"content":" input.addTask(task1);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Anant1902"},"content":" input.addTask(new Todo(\"eat\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Anant1902"},"content":" Task actualOutput \u003d input.getTask(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Anant1902"},"content":" assertEquals(task1, actualOutput);","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Anant1902"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Anant1902"},"content":" public void getTaskOutOfBoundsTest() {","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"Anant1902"},"content":" TaskList input \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Anant1902"},"content":" Task task1 \u003d new Todo(\"sleep\");","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Anant1902"},"content":" input.addTask(task1);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Anant1902"},"content":" input.addTask(new Todo(\"eat\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Anant1902"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Anant1902"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Anant1902"},"content":" Task actualOutput \u003d input.getTask(3);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Anant1902"},"content":" assertEquals(task1, actualOutput);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Anant1902"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Anant1902"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Anant1902"},"content":" assertEquals(\"Task index is out of bounds.\", e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Anant1902"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"Anant1902"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Anant1902":35}},{"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.Drake \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":{"-":36,"Anant1902":2}}] diff --git a/Anant1902_ip_master/commits.json b/Anant1902_ip_master/commits.json index 6c14946e..7aa18abb 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}}}]},{"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}}},{"hash":"2648a1d20a0ddcab6ec415f637880e8eb5aa04e7","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":162,"deletions":11}}},{"hash":"1f3ac52fdb10580d775b9ca82ce4a574264bbde2","isMergeCommit":false,"messageTitle":"Follow coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":39},"sh":{"insertions":1,"deletions":1}}},{"hash":"0a720bdec06b0ee2fae509cb7aa5ebd38feaafe1","isMergeCommit":false,"messageTitle":"Add find feat","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":3}}},{"hash":"cb709c05cccea2a0c09bb1c2d128183b566c6a86","isMergeCommit":false,"messageTitle":"Fix errors in coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":68}}},{"hash":"945acb6aea2a287a0cd0fa54b26bcb24a20aff18","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-javaDoc\u0027 into branch-A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c98da161d9414a1adb960a5a22769f60a365a4e2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027 into branch-A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0300ac8afc6ffebf865b559147f235ca9468dc3f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-03","commitResults":[{"hash":"b6c0f9cca596532f0af07f7a77c2cc999bd643f8","isMergeCommit":false,"messageTitle":"Configure checkstyle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":3,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Anant1902":{"java":708,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":7,"txt":16}},"authorContributionVariance":{"Anant1902":48641.188},"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}}},{"hash":"2648a1d20a0ddcab6ec415f637880e8eb5aa04e7","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":162,"deletions":11}}},{"hash":"1f3ac52fdb10580d775b9ca82ce4a574264bbde2","isMergeCommit":false,"messageTitle":"Follow coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":39},"sh":{"insertions":1,"deletions":1}}},{"hash":"0a720bdec06b0ee2fae509cb7aa5ebd38feaafe1","isMergeCommit":false,"messageTitle":"Add find feat","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":3}}},{"hash":"cb709c05cccea2a0c09bb1c2d128183b566c6a86","isMergeCommit":false,"messageTitle":"Fix errors in coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":68}}},{"hash":"945acb6aea2a287a0cd0fa54b26bcb24a20aff18","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-javaDoc\u0027 into branch-A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c98da161d9414a1adb960a5a22769f60a365a4e2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027 into branch-A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0300ac8afc6ffebf865b559147f235ca9468dc3f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-03","commitResults":[{"hash":"b6c0f9cca596532f0af07f7a77c2cc999bd643f8","isMergeCommit":false,"messageTitle":"Configure checkstyle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":3,"deletions":1}}},{"hash":"fec22ec78e8344e3b494b3caa03c108518a392d0","isMergeCommit":false,"messageTitle":"Fix UI with checkstyle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":17}}},{"hash":"dbb16b0403148d743dbbddfb12f0213b3d471590","isMergeCommit":false,"messageTitle":"Fix checkstyle for all","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"java":{"insertions":163,"deletions":92}}}]},{"date":"2024-02-07","commitResults":[{"hash":"07b69498859c8e5e840859b97f196896647e80b2","isMergeCommit":false,"messageTitle":"Add working GUI","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":0},"fxml":{"insertions":65,"deletions":0},"java":{"insertions":351,"deletions":131}}}]}]},"authorFileTypeContributionMap":{"Anant1902":{"java":988,"md":0,"fxml":65,"sh":2,"bat":0,"gradle":22,"txt":16}},"authorContributionVariance":{"Anant1902":51672.363},"authorDisplayNameMap":{"Anant1902":"CS2103T-F13-1 ANAN..NKER"}} diff --git a/Austintjh19_ip_master/authorship.json b/Austintjh19_ip_master/authorship.json index 00a092ff..8832dddb 100644 --- a/Austintjh19_ip_master/authorship.json +++ b/Austintjh19_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":"Austintjh19"},"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":"Austintjh19"},"content":"checkstyle {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"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":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" mainClass.set(\"osiris.Main\")","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" archiveBaseName \u003d \"Osiris\"","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" archiveClassifier \u003d \"1\"","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Austintjh19":23,"-":39}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":" * The Main class serves as the entry point for the Osiris chat application.","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" * It initializes an instance of the Osiris chatBot and starts the chat session.","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"public class Main {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" final Osiris chatBot \u003d new Osiris();","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" chatBot.startChat();","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":15}},{"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 java.util.Scanner;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import osiris.interpreters.UserInputInterpreter;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import osiris.task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import osiris.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" * The Osiris class represents the main chatBot application.","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" * It manages user interactions, interprets commands, and handles task management.","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"public class Osiris {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" /** Represents the task manager responsible for managing tasks within the system. */","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" private final TaskManager taskManager \u003d new TaskManager();","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" /** Represents the user interface component of the application. */","lastModifiedDate":"2024-02-03"},{"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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" * Initiates the chat session with the user.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" * Manages user input, interprets commands, and handles task management.","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" public void startChat() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" taskManager.initialise();","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" userInterface.displayIntroductions();","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" boolean isTerminate \u003d false;","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" while (!isTerminate) {","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" userInterface.displayOsirisPromptMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" Command userCommand \u003d UserInputInterpreter.getInstance().interpretUserInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" userCommand.execute(taskManager, userInterface);","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" isTerminate \u003d userCommand.isTerminateChat();","lastModifiedDate":"2024-02-03"},{"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":" userInterface.displayGoodbyes();","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":46}},{"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 java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import osiris.task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import osiris.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Command class representing the addition of a deadline task.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"public class AddDeadlineTaskCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" /** Keyword used to identify the command. */","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"deadline\";","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" /** Name of the Task. */","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" private final String taskName;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" /** Deadline date associated with the task. */","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" private final LocalDate deadline;","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" * Constructs an AddDeadlineTaskCommand object with the specified task name and deadline.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the deadline task.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" * @param deadline The deadline of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" public AddDeadlineTaskCommand(String taskName, LocalDate deadline) {","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" this.deadline \u003d deadline;","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" * Executes the command to add a deadline task.","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" * @return true if the command is executed successfully, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.addDeadlineTask(taskName, false, deadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" userInterface.displayDeadlineTaskAdditionNotification(taskManager.getTask(","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" taskManager.getTotalTaskCount() - 1).toString(), taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":49}},{"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 java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import osiris.task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import osiris.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Command class representing the addition of an event task.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"public class AddEventTaskCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" /** Keyword used to identify the command. */","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"event\";","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" /** Name of the Task. */","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" private final String taskName;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" /** Start Date Time associated with the Task. */","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" private final LocalDateTime startDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" /** End Date Time associated with the Task. */","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" private final LocalDateTime endDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" * Constructs an AddEventTaskCommand object with the specified task name, start date and end date.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the event task.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" * @param startDateTime The start date and time of the event.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" * @param endDateTime The end date and time of the event.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" public AddEventTaskCommand(String taskName, LocalDateTime startDateTime, LocalDateTime endDateTime) {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" * Executes the command to add an event task.","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" * @return true if the command is executed successfully, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.addEventTask(taskName, false, startDateTime, endDateTime);","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" userInterface.displayEventTaskAdditionNotification(taskManager.getTask(","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" taskManager.getTotalTaskCount() - 1).toString(), taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":55}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" * Command class representing the addition of a to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"public class AddToDoTaskCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" /** Keyword used to identify the command. */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"todo\";","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" /** Name of the Task. */","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" private final String taskName;","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" * Constructs an AddToDoTaskCommand object with the specified task name.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" public AddToDoTaskCommand(String taskName) {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" * Executes the command to add a to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" * @return true if the command is executed successfully, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.addToDoTask(taskName, false);","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" userInterface.displayToDoTaskAdditionNotification(taskManager.getTask(","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" taskManager.getTotalTaskCount() - 1).toString(), taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":42}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" * Abstract class representing a command to be executed.","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" /** Whether the command for the chat to be terminated has been called. */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" private boolean isTerminateChat \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" * Sets the termination status of the chat.","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" * @param isTerminateChat A boolean value indicating whether the chat should be terminated.","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" public void setIsTerminateChat(boolean isTerminateChat) {","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" this.isTerminateChat \u003d isTerminateChat;","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" * Checks if the command is to terminate the chat.","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" * @return true if the command is to terminate the chat, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" public boolean isTerminateChat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" return isTerminateChat;","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" * Executes the command.","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" * @return true if the command is executed successfully, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" public abstract boolean execute(TaskManager taskManager, Ui userInterface);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":40}},{"path":"src/main/java/osiris/commands/DeleteTaskCommand.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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" * Command class representing the \"delete\" command to remove a task.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" /** Keyword used to identify the command. */","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"delete\";","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" /** Index to delete. */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" private final int taskIndex;","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" * Constructs a DeleteTaskCommand with the specified task index.","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" * @param taskIndex The index of the task to be removed.","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" public DeleteTaskCommand(int taskIndex) {","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" this.taskIndex \u003d taskIndex;","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" * Executes the \"delete\" command to remove a task.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" * @return Always returns true.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" Task deletedTask \u003d taskManager.deleteTask(taskIndex - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" if (deletedTask !\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" userInterface.displayDeleteTaskNotification(deletedTask.toString(), taskManager.getTotalTaskCount());","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":42}},{"path":"src/main/java/osiris/commands/FindTasksCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import osiris.task.TaskManager;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import osiris.ui.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Represents a command to find tasks based on a search string.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"public class FindTasksCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" /** Keyword used to identify the command. */","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"find\";","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" /** The String to be searched. */","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" private final String searchSting;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" * Constructs a FindTasksCommand object with the specified search string.","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" * @param searchString The search string to find relevant tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" public FindTasksCommand(String searchString) {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" this.searchSting \u003d searchString;","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" * Executes the find tasks command, searching for relevant tasks based on the search string.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance managing the tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance for interacting with the user.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" * @return True if the command execution is successful, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e relevantTasks \u003d taskManager.findTask(searchSting);","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" userInterface.printFoundUserTasks(relevantTasks);","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"Austintjh19":41}},{"path":"src/main/java/osiris/commands/MarkTaskCompleteCommand.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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" * Command class to mark a task as completed.","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"public class MarkTaskCompleteCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" /** Keyword used to identify the command. */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"mark\";","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" /** Index to mark as completed. */","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" private final int taskIndex;","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" * Constructs a MarkTaskCompletedCommand object with the specified task index.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" * @param taskIndex The index of the task to be marked as completed.","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" public MarkTaskCompleteCommand(int taskIndex) {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" this.taskIndex \u003d taskIndex;","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" * Executes the mark task completed command.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" * @return true if the command is executed successfully, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.markTaskComplete(taskIndex - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" userInterface.displayMarkTaskCompleteNotification(taskManager.getTask(taskIndex - 1).toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":42}},{"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":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" * Command class to mark a task as incomplete.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"public class MarkTaskIncompleteCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" /** Keyword used to identify the command. */","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"unmark\";","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" /** Index to mark as incomplete. */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" private final int taskIndex;","lastModifiedDate":"2024-01-31"},{"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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" * Constructs a MarkTaskIncompleteCommand object with the specified task index.","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" * @param taskIndex The index of the task to be marked as incomplete.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" public MarkTaskIncompleteCommand(int taskIndex) {","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" * Executes the mark task incomplete command.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" * @return true if the command is executed successfully, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.markTaskIncomplete(taskIndex - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" userInterface.displayMarkTaskIncompleteNotification(taskManager.getTask(taskIndex - 1).toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":43}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" * Command class representing a no-operation command.","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" * This command does nothing when executed.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Called when an exception is thrown.","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"public class NoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" * Executes the no-operation command.","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" * @return Always returns true.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-30"}],"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 java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import osiris.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import osiris.task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import osiris.ui.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" * Command class representing the \"list\" command to print user tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"public class PrintUserTasksCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" /** Keyword used to identify the command. */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"list\";","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" * Executes the \"list\" command to print user tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" * @return Always returns true.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cTask\u003e taskList \u003d taskManager.getUserTasks();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e taskDetailsArrayList \u003d taskList.stream().map(Task::toString)","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" .collect(Collectors.toCollection(ArrayList::new));","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" userInterface.printUserTasks(taskDetailsArrayList);","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/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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" * Command class representing the \"bye\" command to terminate the chat.","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"public class TerminateChatCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" /** Keyword used to identify the command. */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"bye\";","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" * Checks if the chat should be terminated.","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" * @return Always returns true to indicate termination.","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" public boolean isTerminateChat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" return true;","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" * Executes the \"bye\" command to terminate the chat.","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" * @return Always returns true.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" taskManager.terminate();","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":35}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" * Command class representing an unsupported command.","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"public class UnsupportedCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" * Executes the unsupported command by displaying a message through the user interface.","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" * @return Always returns true.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" public boolean execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" userInterface.displayUnsupportedCommandMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":23}},{"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 java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * A singleton class for date and time formatters used in the application.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"public class DateTimeFormatters {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" /** A singleton DateTimeFormatters instance. */","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" private static DateTimeFormatters instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" /** Private constructor to initialise a DateTimeFormatters instance. */","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" private DateTimeFormatters() {}","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" * Returns the singleton instance of the DateTimeFormatters class.","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" * @return The DateTimeFormatters instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" public static DateTimeFormatters getInstance() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" if (instance \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" instance \u003d new DateTimeFormatters();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" return instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" * Formats the user input string to a LocalDate object.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" * @param dateStr The date string provided by the user.","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" * @return The LocalDate object parsed from the string.","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" public LocalDate formatUserInputDate(String dateStr) {","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" return LocalDate.parse(dateStr, dateTimeFormatter);","lastModifiedDate":"2024-01-31"},{"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: \" + dateStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Please try /by dd-mm-yyyy for a deadline tasks.\");","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" * Formats the user input string to a LocalDateTime object.","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" * @param dateTimeStr The date and time string provided by the user.","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" * @return The LocalDateTime object parsed from the string.","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" public LocalDateTime formatUserInputDateTime(String dateTimeStr) {","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" return LocalDateTime.parse(dateTimeStr, dateTimeFormatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date-time string: \" + dateTimeStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Please provide date time range \u0027dd-MM-yyyy HHmm\u0027 format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" return null;","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":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" * Formats the user input strings to an array of LocalDateTime objects representing a range.","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" * @param fromDateTimeStr The starting date and time string.","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" * @param toDateTimeStr The ending date and time string.","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" * @return An array of LocalDateTime objects representing the date time range.","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" public LocalDateTime[] formatUserInputDateTimeRange(String fromDateTimeStr, String toDateTimeStr) {","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter startDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter endDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(fromDateTimeStr, startDateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(toDateTimeStr, endDateTimeFormatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" return new LocalDateTime[]{startDateTime, endDateTime};","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 range.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Please provide date time range in \u0027dd-MM-yyyy HHmm\u0027 format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" return null;","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":"","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" * Formats the stored date string to a LocalDate object.","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" * @param dateStr The stored date string.","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" * @return The LocalDate object parsed from the string.","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" public LocalDate formatStoredDate(String dateStr) {","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" return LocalDate.parse(dateStr, dateTimeFormatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date-time string: \u0027\" + dateStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" * Formats the stored date and time string to a LocalDateTime object.","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" * @param dateTimeStr The stored date and time string.","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":" * @return The LocalDateTime object parsed from the string.","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" public LocalDateTime formatStoredDateTime(String dateTimeStr) {","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\");","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" return LocalDateTime.parse(dateTimeStr, dateTimeFormatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date-time string: \u0027\" + dateTimeStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":" * Formats the stored date time range strings to an array of LocalDateTime objects.","lastModifiedDate":"2024-01-31"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":" * @param fromDateTimeStr The starting date and time string.","lastModifiedDate":"2024-01-31"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":" * @param toDateTimeStr The ending date and time string.","lastModifiedDate":"2024-02-03"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":" * @return An array of LocalDateTime objects representing the date time range.","lastModifiedDate":"2024-01-31"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":" public LocalDateTime[] formatStoredDateTimeRange(String fromDateTimeStr, String toDateTimeStr) {","lastModifiedDate":"2024-02-03"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter startDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\");","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter endDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\");","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(fromDateTimeStr, startDateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(toDateTimeStr, endDateTimeFormatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":137,"author":{"gitId":"Austintjh19"},"content":" return new LocalDateTime[]{startDateTime, endDateTime};","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date time range: \" + fromDateTimeStr + \" OR \" + toDateTimeStr);","lastModifiedDate":"2024-02-03"},{"lineNumber":140,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Austintjh19"},"content":" }","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"}],"authorContributionMap":{"Austintjh19":144}},{"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 java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.AddDeadlineTaskCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.AddEventTaskCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.AddToDoTaskCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.Command;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.FindTasksCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.MarkTaskCompleteCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.MarkTaskIncompleteCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.NoCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.PrintUserTasksCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.DeleteTaskCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.TerminateChatCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.UnsupportedCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"import osiris.formatters.DateTimeFormatters;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":"import osiris.validation.InputsValidator;","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" * Interprets user input and returns the appropriate command.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"public class UserInputInterpreter {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" /** A singleton UserInputInterpreter instance. */","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" private static UserInputInterpreter instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" /** Private constructor to initialise an UserInputInterpreter instance. */","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" private UserInputInterpreter() {}","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" * Returns the singleton instance of the UserInputInterpreter.","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" * @return The UserInputInterpreter instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" public static UserInputInterpreter getInstance() {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" if (instance \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" instance \u003d new UserInputInterpreter();","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" return instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" * Interprets the user input and returns the corresponding command.","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" * @param userInput The user input string.","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" * @return The appropriate Command object based on the user input.","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" public Command interpretUserInput(String userInput) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" String[] inputtedWords \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" String taskName \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" boolean isValid \u003d false;","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" switch (inputtedWords[0]) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" case TerminateChatCommand.COMMAND:","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" return new TerminateChatCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" case PrintUserTasksCommand.COMMAND:","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" return new PrintUserTasksCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" case MarkTaskCompleteCommand.COMMAND:","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().isMarkTaskCompleteInputValid(userInput);","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" int taskIndex \u003d Integer.parseInt(taskIndexString);","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" return new MarkTaskCompleteCommand(taskIndex);","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" case MarkTaskIncompleteCommand.COMMAND:","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().isMarkTaskIncompleteInputValid(userInput);","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" int taskIndex \u003d Integer.parseInt(taskIndexString);","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" return new MarkTaskIncompleteCommand(taskIndex);","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" case DeleteTaskCommand.COMMAND:","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().isDeleteTaskInputValid(userInput);","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" int taskIndex \u003d Integer.parseInt(taskIndexString);","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" return new DeleteTaskCommand(taskIndex);","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" case AddToDoTaskCommand.COMMAND:","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().isAddToDoTaskInputValid(userInput);","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" taskName \u003d userInput.substring(AddToDoTaskCommand.COMMAND.length()).trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" return new AddToDoTaskCommand(taskName);","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" case AddDeadlineTaskCommand.COMMAND:","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().isAddDeadlineTaskInputValid(userInput);","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" int byIndex \u003d userInput.indexOf(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" taskName \u003d userInput.substring(AddDeadlineTaskCommand.COMMAND.length(), byIndex - 1).trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" String deadlineStr \u003d userInput.substring(byIndex + \"/by\".length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" LocalDate deadline \u003d DateTimeFormatters.getInstance().formatUserInputDate(deadlineStr);","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" if (deadline !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" return new AddDeadlineTaskCommand(taskName, deadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":" case AddEventTaskCommand.COMMAND:","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().isAddEventTaskInputValid(userInput);","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" int fromIndex \u003d userInput.indexOf(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" int toIndex \u003d userInput.indexOf(\"/to\");","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" taskName \u003d userInput.substring(AddEventTaskCommand.COMMAND.length(), fromIndex - 1).trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":" String startDateTimeStr \u003d userInput.substring(fromIndex + \"/from\".length(), toIndex - 1).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":" String endDateTimeStr \u003d userInput.substring(toIndex + \"/to\".length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime[] dateTimeRange \u003d DateTimeFormatters.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" .formatUserInputDateTimeRange(startDateTimeStr, endDateTimeStr);","lastModifiedDate":"2024-02-03"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":" if (dateTimeRange !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":" return new AddEventTaskCommand(taskName, dateTimeRange[0], dateTimeRange[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":" case FindTasksCommand.COMMAND:","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":" String searhString \u003d userInput.substring(FindTasksCommand.COMMAND.length()).trim();","lastModifiedDate":"2024-01-31"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":" return new FindTasksCommand(searhString);","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":" return new UnsupportedCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":135,"author":{"gitId":"Austintjh19"},"content":" return new NoCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":137}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" * Manages file storage for the Osiris.","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" private final String filepath;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" * Constructs a Storage object with the specified file path.","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" * @param filepath The file path for storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public Storage(String filepath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the file path.","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" * @return The file path.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" public String getFilepath() {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" return filepath;","lastModifiedDate":"2024-01-29"},{"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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" * Checks if the storage file exists.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" * @return True if the storage file exists, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" public boolean doesStorageFileExist() {","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" File file \u003d new File(filepath);","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" return file.exists();","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" } catch (SecurityException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" System.err.println(\"SecurityException occurred.\" );","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" System.err.println(\"NullPointerException occurred.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" System.err.println(\"An error occurred with Function storageFileExist().\");","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Austintjh19":49}},{"path":"src/main/java/osiris/storage/StorageTxtFile.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris.storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" * Manages storage in a text file format.","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"public class StorageTxtFile extends Storage {","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" * Constructs a TxtFileStorage object with the specified file path.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" * @param filepath The file path for the text file storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" public StorageTxtFile(String filepath) {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" super(filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" * Initializes the text file storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" public void initialiseStorageTxtFile() {","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" File file \u003d new File(this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" if (super.doesStorageFileExist()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task Storage File: \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Created Task Storage File: \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to create Task Storage file: \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to create new Txt file for Task storage.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" * Reads the contents of the text file storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" * @return The contents of the text file storage as an ArrayList of strings.","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" public ArrayList\u003cString\u003e readStorageTxtFile() {","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e readContents \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" Scanner scanner \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" File file \u003d new File(this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" readContents.add(scanner.nextLine());","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" return readContents;","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to locate filepath \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" } finally {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" if (scanner !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" scanner.close();","lastModifiedDate":"2024-01-28"},{"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":" return readContents;","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" * Appends content to the text file storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" * @param content The content to append to the text file storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" public void appendToStorageTxtFile(String content) {","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(this.getFilepath(), true);","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" fw.write(content + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to update Task Storage File. Trouble appending.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" * Clears the contents of the text file storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" public void clearStorageTxtFile() {","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to update Task Storage File. Trouble clearing contents.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Austintjh19":99}},{"path":"src/main/java/osiris/storage/data/task.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"T | Y | Borrow Book","lastModifiedDate":"2024-01-30"},{"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 | Y | 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/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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" * The DeadlineTask class represents a task with a deadline.","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" * It extends the Task class.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" /** Deadline Date Time of Task. */","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" private final LocalDate deadline;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" * Constructs a DeadlineTask object with the given task name and deadline.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" * @param deadline The deadline of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" public DeadlineTask(String taskName, LocalDate deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" this.deadline \u003d deadline;","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" * Constructs a DeadlineTask object with the given task name, completion status, and deadline.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" * @param isCompleted The completion status of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" * @param deadline The deadline of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" public DeadlineTask(String taskName, boolean isCompleted, LocalDate deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-29"},{"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-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the deadline of the task as a string.","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" * @return The deadline of the task formatted as \"MMM d yyyy\".","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" public String getDeadlineStr() {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" return deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the DeadlineTask for storage purposes.","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" * @return The string representation of the DeadlineTask.","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"D | %s | %s\", super.getStringStorageRepresentation(), this.getDeadlineStr());","lastModifiedDate":"2024-01-30"},{"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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the DeadlineTask for display purposes.","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" * @return The string representation of the DeadlineTask.","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"[D] %s (by: %s)\", super.toString(), this.getDeadlineStr());","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":66}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" * The EventTask class represents a task that occurs within a specific time frame.","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" * It extends the Task class.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"public class EventTask extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" /** Starting Date Time of Task. **/","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" private final LocalDateTime startDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" /** Ending Date Time of Task. **/","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" private final LocalDateTime endDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" * Constructs an EventTask object with the given task name, start date/time, and end date/time.","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" * @param startDateTime The start date and time of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" * @param endDateTime The end date and time of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" public EventTask(String taskName, LocalDateTime startDateTime, LocalDateTime endDateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" * Constructs an EventTask object with the given task name, completion status, start date/time, and end date/time.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" * @param isCompleted The completion status of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" * @param startDateTime The start date and time of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" * @param endDateTime The end date and time of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" public EventTask(String taskName, boolean isCompleted, LocalDateTime startDateTime, LocalDateTime endDateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the start date and time of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" * @return The start date and time of the task formatted as \"MMM d yyyy h:mm a\".","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" public String getStartDateTimeStr() {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" return startDateTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the end date and time of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" * @return The end date and time of the task formatted as \"MMM d yyyy h:mm a\".","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" public String getEndDateTimeStr() {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" return endDateTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\"));","lastModifiedDate":"2024-02-03"},{"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-31"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the EventTask for storage purposes.","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" * @return The string representation of the EventTask.","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"E | %s | %s | %s\", super.getStringStorageRepresentation(),","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" this.getStartDateTimeStr(), this.getEndDateTimeStr());","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the EventTask for display purposes.","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" * @return The string representation of the EventTask.","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"[E] %s (from: %s to: %s)\", super.toString(),","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" this.getStartDateTimeStr(), this.getEndDateTimeStr());","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":84}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":" * The InvalidTaskException class represents an exception that is thrown when an invalid task name is assigned.","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class InvalidTaskException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the exception.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" * @return The string representation of the exception.","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" return \"Invalid Task Name assigned.\";","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the message associated with the exception.","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" * @return The message associated with the exception.","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" return \"Invalid Task Name assigned.\";","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Austintjh19":27}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":" * The Task class represents a generic task in the Osiris application.","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" * It serves as the base class for different types of tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" /** Name of Task */","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" private final String taskName;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" /** Whether Task has been completed. */","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" private boolean isCompleted \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" * Constructs a Task object with the given task name.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" public Task(String taskName) {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","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-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" * Constructs a Task object with the given task name and completion status.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" * @param isCompleted The completion status of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" public Task(String taskName, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" * Marks the task as completed.","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" public void markComplete() {","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" isCompleted \u003d true;","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" * Marks the task as incomplete.","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" public void markIncomplete() {","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" isCompleted \u003d false;","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the task for storage purposes.","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" * @return The string representation of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" String completionStatus \u003d isCompleted ? \"Y\" : \"N\";","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"%s | %s\", completionStatus, taskName);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the task for display purposes.","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" * @return The string representation of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" String completionStatus \u003d isCompleted ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"%s %s\", completionStatus, taskName);","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":69}},{"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 java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import osiris.formatters.DateTimeFormatters;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import osiris.storage.StorageTxtFile;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" * The TaskManager class manages user tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"public class TaskManager {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" /** File path of where user tasks will be stored */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" private static final String TASK_STORAGE_FILE_PATH \u003d \"src/main/java/Osiris/Storage/data/task.txt\";","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" /** List of user task. */","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" private final ArrayList\u003cTask\u003e userTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" /** Initialise new Txt File for storage. */","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" private final StorageTxtFile taskStorage \u003d new StorageTxtFile(TASK_STORAGE_FILE_PATH);","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" * Initializes the task manager by loading tasks from file storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" public void initialise() {","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" taskStorage.initialiseStorageTxtFile();","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" this.loadUserTaskFromFileStorage();","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" * Terminates the task manager by clearing file storage and storing tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" public void terminate() {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" taskStorage.clearStorageTxtFile();","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" this.storeUserTaskToFileStorage();","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" * Adds a to-do task to the task manager.","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" * @param isCompleted The completion status of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" * @return True if the task is added successfully, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" public boolean addToDoTask(String taskName, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" ToDoTask newTask \u003d new ToDoTask(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" userTasks.add(newTask);","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" return true;","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-31"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" * Adds a deadline task to the task manager.","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" * @param isCompleted The completion status of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" * @param deadline The deadline of the task.","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" * @return True if the task is added successfully, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" public boolean addDeadlineTask(String taskName, boolean isCompleted, LocalDate deadline) {","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" DeadlineTask newTask \u003d new DeadlineTask(taskName, isCompleted, deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" userTasks.add(newTask);","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" * Adds an event task to the task manager.","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" * @param isCompleted The completion status of the task.","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" * @param startDateTime The start date and time of the event.","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" * @param endDateTime The end date and time of the event.","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" * @return True if the task is added successfully, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" public boolean addEventTask(String taskName, boolean isCompleted, LocalDateTime startDateTime,","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime endDateTime) {","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" EventTask newTask \u003d new EventTask(taskName, isCompleted, startDateTime, endDateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" userTasks.add(newTask);","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" * Retrieves a task from the task manager based on its index.","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" * @param index The index of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" * @return The task at the specified index.","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" return userTasks.get(index);","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" * Retrieves all user tasks managed by the task manager.","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" * @return The list of user tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" public ArrayList\u003cTask\u003e getUserTasks() {","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" return userTasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" * Removes a task from the task manager based on its index.","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" * @param index The index of the task to be removed.","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" * @return The removed task, or null if the index is out of bounds.","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" public Task deleteTask(int index) {","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":" Task deletedTask \u003d userTasks.get(index);","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":" userTasks.remove(index);","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" return deletedTask;","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"No task with index \" + (index + 1) + \". Enter \u0027list\u0027 to view tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" return null;","lastModifiedDate":"2024-01-24"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the total number of tasks managed by the task manager.","lastModifiedDate":"2024-01-31"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":" * @return The total number of tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":" public int getTotalTaskCount() {","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" return userTasks.size();","lastModifiedDate":"2024-02-03"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":" * Marks a task as completed based on its index.","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" * @param index The index of the task to be marked as completed.","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":" * @return True if the task is marked as completed successfully, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"Austintjh19"},"content":" public boolean markTaskComplete(int index) {","lastModifiedDate":"2024-02-03"},{"lineNumber":135,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"Austintjh19"},"content":" userTasks.get(index).markComplete();","lastModifiedDate":"2024-02-03"},{"lineNumber":137,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"Austintjh19"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"No task with index \" + (index + 1) + \". Enter \u0027list\u0027 to view tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":143,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":144,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":145,"author":{"gitId":"Austintjh19"},"content":" * Marks a task as incomplete based on its index.","lastModifiedDate":"2024-01-31"},{"lineNumber":146,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":147,"author":{"gitId":"Austintjh19"},"content":" * @param index The index of the task to be marked as incomplete.","lastModifiedDate":"2024-01-31"},{"lineNumber":148,"author":{"gitId":"Austintjh19"},"content":" * @return True if the task is marked as incomplete successfully, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":150,"author":{"gitId":"Austintjh19"},"content":" public boolean markTaskIncomplete(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":151,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"Austintjh19"},"content":" userTasks.get(index).markIncomplete();","lastModifiedDate":"2024-02-03"},{"lineNumber":153,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"Austintjh19"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":155,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"No task with index \" + (index + 1) + \". Enter \u0027list\u0027 to view tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":159,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":160,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":161,"author":{"gitId":"Austintjh19"},"content":" * Finds tasks containing the specified search string.","lastModifiedDate":"2024-02-03"},{"lineNumber":162,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":163,"author":{"gitId":"Austintjh19"},"content":" * @param searchString The string to search for within task descriptions.","lastModifiedDate":"2024-02-03"},{"lineNumber":164,"author":{"gitId":"Austintjh19"},"content":" * @return An ArrayList of task details containing the search string.","lastModifiedDate":"2024-02-03"},{"lineNumber":165,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":166,"author":{"gitId":"Austintjh19"},"content":" public ArrayList\u003cString\u003e findTask(String searchString) {","lastModifiedDate":"2024-02-03"},{"lineNumber":167,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e relevantTask \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-03"},{"lineNumber":168,"author":{"gitId":"Austintjh19"},"content":" for (Task task: userTasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":169,"author":{"gitId":"Austintjh19"},"content":" if (task.toString().contains(searchString)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":170,"author":{"gitId":"Austintjh19"},"content":" relevantTask.add(task.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":171,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":172,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":173,"author":{"gitId":"Austintjh19"},"content":" return relevantTask;","lastModifiedDate":"2024-02-03"},{"lineNumber":174,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":175,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":176,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":177,"author":{"gitId":"Austintjh19"},"content":" * Stores user tasks to file storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":178,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":179,"author":{"gitId":"Austintjh19"},"content":" private void storeUserTaskToFileStorage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"Austintjh19"},"content":" for (Task task : userTasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":181,"author":{"gitId":"Austintjh19"},"content":" taskStorage.appendToStorageTxtFile(task.getStringStorageRepresentation());","lastModifiedDate":"2024-02-03"},{"lineNumber":182,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":186,"author":{"gitId":"Austintjh19"},"content":" * Loads user tasks from file storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":187,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":188,"author":{"gitId":"Austintjh19"},"content":" private void loadUserTaskFromFileStorage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":189,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e readContents \u003d taskStorage.readStorageTxtFile();","lastModifiedDate":"2024-02-03"},{"lineNumber":190,"author":{"gitId":"Austintjh19"},"content":" for (String readContentString : readContents) {","lastModifiedDate":"2024-01-29"},{"lineNumber":191,"author":{"gitId":"Austintjh19"},"content":" String[] readContentWord \u003d readContentString.split(\"\\\\|\");","lastModifiedDate":"2024-01-29"},{"lineNumber":192,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":193,"author":{"gitId":"Austintjh19"},"content":" if (readContentWord[0].trim().equals(\"T\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":194,"author":{"gitId":"Austintjh19"},"content":" this.addToDoTask(readContentWord[2].trim(), readContentWord[1].trim().equals(\"Y\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":195,"author":{"gitId":"Austintjh19"},"content":" } else if (readContentWord[0].trim().equals(\"D\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":196,"author":{"gitId":"Austintjh19"},"content":" LocalDate deadline \u003d DateTimeFormatters.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":197,"author":{"gitId":"Austintjh19"},"content":" .formatStoredDate(readContentWord[3].trim());","lastModifiedDate":"2024-02-03"},{"lineNumber":198,"author":{"gitId":"Austintjh19"},"content":" this.addDeadlineTask(readContentWord[2].trim(), readContentWord[1].trim().equals(\"Y\"), deadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":199,"author":{"gitId":"Austintjh19"},"content":" } else if (readContentWord[0].trim().equals(\"E\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":200,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime[] dateTimeRange \u003d DateTimeFormatters.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":201,"author":{"gitId":"Austintjh19"},"content":" .formatStoredDateTimeRange(readContentWord[3].trim(), readContentWord[4].trim());","lastModifiedDate":"2024-02-03"},{"lineNumber":202,"author":{"gitId":"Austintjh19"},"content":" this.addEventTask(readContentWord[2].trim(), readContentWord[1].trim().equals(\"Y\"), dateTimeRange[0],","lastModifiedDate":"2024-02-03"},{"lineNumber":203,"author":{"gitId":"Austintjh19"},"content":" dateTimeRange[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":204,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":205,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":206,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":207,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":207}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":" * Represents a to-do task in the Osiris application.","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class ToDoTask extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Constructs a ToDoTask object with the specified task name.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" public ToDoTask(String taskName) {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" * Constructs a ToDoTask object with the specified task name and completion status.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" * @param isCompleted The completion status of the to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" public ToDoTask(String taskName, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" super(taskName, isCompleted);","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the to-do task for storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" * @return The string representation of the to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"T | %s\", super.getStringStorageRepresentation());","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" * @return The string representation of the to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"[T] %s\", super.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":47}},{"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 java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" * The Ui class provides methods for managing user interface interactions and displaying messages.","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" * Outputs introduction messages to the user.","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" public void displayIntroductions() {","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" for (String line : UiOutputs.NAME_ASCII_ART) {","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" System.out.println(UiOutputs.INTRODUCTIONS);","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" * Prompts the user with the Osiris message prompt.","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" public void displayOsirisPromptMessage() {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" System.out.print(UiOutputs.MESSAGE_OSIRIS_PROMPT);","lastModifiedDate":"2024-02-03"},{"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-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" * Outputs a message for unsupported commands.","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" public void displayUnsupportedCommandMessage() {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" System.out.println(UiOutputs.UNSUPPORTED_COMMAND_OUTPUT);","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" * Outputs goodbye messages to the user.","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" public void displayGoodbyes() {","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" System.out.println(UiOutputs.GOODBYES);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" * Displays a success notification for adding a to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" * @param taskDetails The details of the added task.","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" * @param taskCount The total count of tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" public void displayToDoTaskAdditionNotification(String taskDetails, int taskCount) {","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", taskCount);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" * Displays a success notification for adding a deadline task.","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" * @param taskDetails The details of the added task.","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" * @param taskCount The total count of tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" public void displayDeadlineTaskAdditionNotification(String taskDetails, int taskCount) {","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", taskCount);","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" * Displays a success notification for adding an event task.","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" * @param taskDetails The details of the added task.","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" * @param taskCount The total count of tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" public void displayEventTaskAdditionNotification(String taskDetails, int taskCount) {","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", taskCount);","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":"","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" * Displays a success notification for marking a task as completed.","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" * @param taskDetails The details of the completed task.","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" public void displayMarkTaskCompleteNotification(String taskDetails) {","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","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":"","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" * Displays a success notification for marking a task as incomplete.","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" * @param taskDetails The details of the incomplete task.","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" public void displayMarkTaskIncompleteNotification(String taskDetails) {","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" * Displays a success notification for removing a task.","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":" * @param taskDetails The details of the removed task.","lastModifiedDate":"2024-01-31"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":" * @param taskCount The total count of tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" public void displayDeleteTaskNotification(String taskDetails, int taskCount) {","lastModifiedDate":"2024-02-03"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + taskDetails);","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":" System.out.printf(\" Now you have %d tasks in the list.%n\", taskCount);","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":" * Prints the list of user tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":" * @param taskDetailsList The list containing details of user tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"Austintjh19"},"content":" public void printUserTasks(ArrayList\u003cString\u003e taskDetailsList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"Austintjh19"},"content":" for (int i \u003d 0; i \u003c taskDetailsList.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + (i + 1) + \". \" + taskDetailsList.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":144,"author":{"gitId":"Austintjh19"},"content":" * Prints the details of the found tasks to the user interface.","lastModifiedDate":"2024-02-03"},{"lineNumber":145,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":146,"author":{"gitId":"Austintjh19"},"content":" * @param taskDetailsList The list of task details to be printed.","lastModifiedDate":"2024-01-31"},{"lineNumber":147,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":148,"author":{"gitId":"Austintjh19"},"content":" public void printFoundUserTasks(ArrayList\u003cString\u003e taskDetailsList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-31"},{"lineNumber":150,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" Here are the matching tasks in your list:\");","lastModifiedDate":"2024-01-31"},{"lineNumber":151,"author":{"gitId":"Austintjh19"},"content":" for (int i \u003d 0; i \u003c taskDetailsList.size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":152,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\" \" + (i + 1) + \". \" + taskDetailsList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":153,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":154,"author":{"gitId":"Austintjh19"},"content":" this.printSeparator();","lastModifiedDate":"2024-01-31"},{"lineNumber":155,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":156,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":157,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":158,"author":{"gitId":"Austintjh19"},"content":" * Prints a separator line to the console.","lastModifiedDate":"2024-01-31"},{"lineNumber":159,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":160,"author":{"gitId":"Austintjh19"},"content":" private void printSeparator() {","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"Austintjh19"},"content":" System.out.println(UiOutputs.SEPARATOR);","lastModifiedDate":"2024-02-03"},{"lineNumber":162,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":164}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":" * The UiOutputs class provides static constants for various output messages used in the UI.","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class UiOutputs {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" /** The name of the Osiris chatBot. */","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" public static final String OSIRIS_NAME \u003d \"osiris\";","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" /** The separator used in UI outputs. */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public static final String SEPARATOR \u003d \"----------------------------------------\";","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" /** ASCII art representation of the Osiris name. */","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" public static final String[] NAME_ASCII_ART \u003d {","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" \" ,o888888o. d888888o. 8 8888 8 888888888o. 8 8888 d888888o. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" \" . 8888 `88. .`8888:\u0027 `88. 8 8888 8 8888 `88. 8 8888 .`8888:\u0027 `88. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"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":19,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 `8b `8.`8888. 8 8888 8 8888 ,88 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 88 `8.`8888. 8 8888 8 8888. ,88\u0027 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 88 `8.`8888. 8 8888 8 888888888P\u0027 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 ,8P `8.`8888. 8 8888 8 8888`8b 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"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":24,"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":25,"author":{"gitId":"Austintjh19"},"content":" \" `8888888P\u0027 `Y8888P ,88P\u0027 8 8888 8 8888 `88. 8 8888 `Y8888P ,88P\u0027 \"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" };","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" /** Introduction message displayed to the user. */","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" public static final String INTRODUCTIONS \u003d String.format(\"Hello! I\u0027m %s.\\nWhat can I do for you?\",","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" UiOutputs.OSIRIS_NAME);","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" /** Prompt message for the user to interact with Osiris. */","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" public static final String MESSAGE_OSIRIS_PROMPT \u003d \"Message Osiris ... \";","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" /** Goodbye message displayed to the user. */","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" public static final String GOODBYES \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" /** Message displayed for unsupported commands. */","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" public static final String UNSUPPORTED_COMMAND_OUTPUT \u003d \"Sorry, but I am unable to comprehend the instruction \"","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" + \"at my current development stage. Please enter something else.\";","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":41}},{"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-02-03"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.AddEventTaskCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.AddToDoTaskCommand;","lastModifiedDate":"2024-02-03"},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * The InputsValidator class provides methods to validate user inputs for various commands.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"public class InputsValidator {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" /** Singleton instance variable */","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" private static InputsValidator instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" /** Return a new Input Validator instance **/","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" private InputsValidator() {}","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the singleton instance of InputsValidator.","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" * @return The singleton instance of InputsValidator.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" public static InputsValidator getInstance() {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" if (instance \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" instance \u003d new InputsValidator();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" return instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" * Validates user input for marking a task as completed.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" * @param userInput The user input string.","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" * @return True if the input is valid; otherwise, false.","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" public boolean isMarkTaskCompleteInputValid(String userInput) {","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" String[] inputtedWords \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" if (inputtedWords.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" if (taskIndexString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index: \" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index. Please Reenter\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" * Validates user input for marking a task as incomplete.","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" * @param userInput The user input string.","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" * @return True if the input is valid; otherwise, false.","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" public boolean isMarkTaskIncompleteInputValid(String userInput) {","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" String[] inputtedWords \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" if (inputtedWords.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" if (taskIndexString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index: \" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index. Please Reenter\");","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" * Validates user input for removing a task.","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" * @param userInput The user input string.","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" * @return True if the input is valid; otherwise, false.","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" public boolean isDeleteTaskInputValid(String userInput) {","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" String[] inputtedWords \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" if (inputtedWords.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" if (taskIndexString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index: \" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index. Please Reenter\");","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" * Validates user input for adding a to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" * @param userInput The user input string.","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" * @return True if the input is valid; otherwise, false.","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" public boolean isAddToDoTaskInputValid(String userInput) {","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" String taskName \u003d userInput.substring(AddToDoTaskCommand.COMMAND.length()).trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" if (!taskName.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":" * Validates user input for adding a deadline task.","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" * @param userInput The user input string.","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" * @return True if the input is valid; otherwise, false.","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" public boolean isAddDeadlineTaskInputValid(String userInput) {","lastModifiedDate":"2024-02-03"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":" int byIndex \u003d userInput.indexOf(\"/by\");","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":" if (byIndex !\u003d -1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" String taskName \u003d userInput.substring(AddDeadlineTaskCommand.COMMAND.length(), byIndex - 1).trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":" if (!taskName.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":" String deadline \u003d userInput.substring(byIndex + \"/by\".length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":" String[] deadlineParts \u003d deadline.split(\"-\");","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" if (deadlineParts.length \u003d\u003d 3) {","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":" String dayStr \u003d deadlineParts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":" String monthStr \u003d deadlineParts[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":" String yearStr \u003d deadlineParts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":" if (isValidDay(dayStr) \u0026\u0026 isValidMonth(monthStr) \u0026\u0026 isValidYear(yearStr)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid day, month, or year in deadline. Please use dd-MM-yyyy. \");","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid deadline format. Please use dd-MM-yyyy.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid input format. Please Reenter. Ensure \u0027/by\u0027 is specified for a Deadline Task. \"","lastModifiedDate":"2024-02-03"},{"lineNumber":143,"author":{"gitId":"Austintjh19"},"content":" + \"E.g. deadline Do Homework /by dd-MM-yyyy .\");","lastModifiedDate":"2024-02-03"},{"lineNumber":144,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"Austintjh19"},"content":" * Validates user input for adding an event task.","lastModifiedDate":"2024-01-31"},{"lineNumber":150,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":151,"author":{"gitId":"Austintjh19"},"content":" * @param userInput The user input string.","lastModifiedDate":"2024-01-31"},{"lineNumber":152,"author":{"gitId":"Austintjh19"},"content":" * @return True if the input is valid; otherwise, false.","lastModifiedDate":"2024-01-31"},{"lineNumber":153,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":154,"author":{"gitId":"Austintjh19"},"content":" public boolean isAddEventTaskInputValid(String userInput) {","lastModifiedDate":"2024-02-03"},{"lineNumber":155,"author":{"gitId":"Austintjh19"},"content":" int fromIndex \u003d userInput.indexOf(\"/from\");","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"Austintjh19"},"content":" int toIndex \u003d userInput.indexOf(\"/to\");","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"Austintjh19"},"content":" if (fromIndex !\u003d -1 \u0026\u0026 toIndex !\u003d -1 \u0026\u0026 fromIndex \u003c toIndex) {","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"Austintjh19"},"content":" String taskName \u003d userInput.substring(AddEventTaskCommand.COMMAND.length(), fromIndex - 1).trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":160,"author":{"gitId":"Austintjh19"},"content":" if (!taskName.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"Austintjh19"},"content":" String startDateTime \u003d userInput.substring(fromIndex + \"/from\".length(), toIndex - 1).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"Austintjh19"},"content":" String endDateTime \u003d userInput.substring(toIndex + \"/to\".length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"Austintjh19"},"content":" if (isValidDateTime(startDateTime) \u0026\u0026 isValidDateTime(endDateTime)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"Austintjh19"},"content":" if (DateTimeFormatters.getInstance().formatUserInputDateTime(startDateTime)","lastModifiedDate":"2024-02-03"},{"lineNumber":166,"author":{"gitId":"Austintjh19"},"content":" .isBefore((DateTimeFormatters.getInstance().formatUserInputDateTime(endDateTime)))) {","lastModifiedDate":"2024-02-03"},{"lineNumber":167,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"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":170,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid date-time format. Please use dd-MM-yyyy HHmm.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid input format. Please Reenter. \"","lastModifiedDate":"2024-02-03"},{"lineNumber":179,"author":{"gitId":"Austintjh19"},"content":" + \"Ensure \u0027/from\u0027 \u0026 \u0027/to\u0027 is specified for a Event Task. \"","lastModifiedDate":"2024-02-03"},{"lineNumber":180,"author":{"gitId":"Austintjh19"},"content":" + \"E.g. event School Meeting /from dd-MM-yyyy HHmm /to dd-MM-yyyy HHmm. Please Reenter.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":181,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"Austintjh19"},"content":" // Private helper methods for validation \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-31"},{"lineNumber":186,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":187,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":188,"author":{"gitId":"Austintjh19"},"content":" * Validates if the given day string is a valid day of the month.","lastModifiedDate":"2024-02-03"},{"lineNumber":189,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":190,"author":{"gitId":"Austintjh19"},"content":" * @param dayStr The string representation of the day.","lastModifiedDate":"2024-02-03"},{"lineNumber":191,"author":{"gitId":"Austintjh19"},"content":" * @return true if the day is valid, otherwise false.","lastModifiedDate":"2024-02-03"},{"lineNumber":192,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":193,"author":{"gitId":"Austintjh19"},"content":" private boolean isValidDay(String dayStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"Austintjh19"},"content":" int day \u003d Integer.parseInt(dayStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":196,"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":197,"author":{"gitId":"Austintjh19"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":200,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":203,"author":{"gitId":"Austintjh19"},"content":" * Validates if the given month string is a valid month of the year.","lastModifiedDate":"2024-02-03"},{"lineNumber":204,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":205,"author":{"gitId":"Austintjh19"},"content":" * @param monthStr The string representation of the month.","lastModifiedDate":"2024-02-03"},{"lineNumber":206,"author":{"gitId":"Austintjh19"},"content":" * @return true if the month is valid, otherwise false.","lastModifiedDate":"2024-02-03"},{"lineNumber":207,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":208,"author":{"gitId":"Austintjh19"},"content":" private boolean isValidMonth(String monthStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"Austintjh19"},"content":" int month \u003d Integer.parseInt(monthStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"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":212,"author":{"gitId":"Austintjh19"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":213,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":214,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":217,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":218,"author":{"gitId":"Austintjh19"},"content":" * Validates if the given year string is a valid year.","lastModifiedDate":"2024-02-03"},{"lineNumber":219,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":220,"author":{"gitId":"Austintjh19"},"content":" * @param yearStr The string representation of the year.","lastModifiedDate":"2024-02-03"},{"lineNumber":221,"author":{"gitId":"Austintjh19"},"content":" * @return true if the year is valid, otherwise false.","lastModifiedDate":"2024-02-03"},{"lineNumber":222,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":223,"author":{"gitId":"Austintjh19"},"content":" private boolean isValidYear(String yearStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"Austintjh19"},"content":" int year \u003d Integer.parseInt(yearStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"Austintjh19"},"content":" return year \u003e 0 \u0026\u0026 yearStr.length() \u003d\u003d 4;","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"Austintjh19"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":230,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":231,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":232,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":233,"author":{"gitId":"Austintjh19"},"content":" * Validates if the given date-time string is in a valid format and represents a valid date and time.","lastModifiedDate":"2024-02-03"},{"lineNumber":234,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":235,"author":{"gitId":"Austintjh19"},"content":" * @param dateTime The string representation of the date and time.","lastModifiedDate":"2024-02-03"},{"lineNumber":236,"author":{"gitId":"Austintjh19"},"content":" * @return true if the date-time is valid, otherwise false.","lastModifiedDate":"2024-02-03"},{"lineNumber":237,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":238,"author":{"gitId":"Austintjh19"},"content":" private boolean isValidDateTime(String dateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"Austintjh19"},"content":" String[] dateTimeParts \u003d dateTime.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"Austintjh19"},"content":" if (dateTimeParts.length !\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":244,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":245,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":246,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":247,"author":{"gitId":"Austintjh19"},"content":" String[] dateParts \u003d dateTimeParts[0].split(\"-\");","lastModifiedDate":"2024-01-30"},{"lineNumber":248,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":249,"author":{"gitId":"Austintjh19"},"content":" if (dateParts.length !\u003d 3) {","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"Austintjh19"},"content":" int hour \u003d Integer.parseInt(dateTimeParts[1].substring(0, 2));","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"Austintjh19"},"content":" int minute \u003d Integer.parseInt(dateTimeParts[1].substring(2));","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"Austintjh19"},"content":" return isValidDay(dateParts[0]) \u0026\u0026 isValidMonth(dateParts[1]) \u0026\u0026 isValidYear(dateParts[2])","lastModifiedDate":"2024-01-31"},{"lineNumber":257,"author":{"gitId":"Austintjh19"},"content":" \u0026\u0026 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-31"},{"lineNumber":258,"author":{"gitId":"Austintjh19"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Austintjh19":262}},{"path":"src/test/java/osiris/formatters/DateTimeFormattersTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris.formatters;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import static org.junit.jupiter.api.Assertions.assertNull;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" * Unit tests for the DateTimeFormatters class.","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"public class DateTimeFormattersTest {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" * Test case to validate the formatting of user input date strings into LocalDate objects.","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" public void formatUserInputDate_validInput_localDateReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" LocalDate date \u003d DateTimeFormatters.getInstance().formatUserInputDate(\"01-01-2024\");","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" assertNotNull(date);","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" * Test case to validate handling of invalid user input date strings, expecting a null result.","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" public void formatUserInputDate_invalidInput_nullReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" LocalDate date \u003d DateTimeFormatters.getInstance().formatUserInputDate(\"invalid\");","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" assertNull(date);","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" * Test case to validate the formatting of user input date-time strings into LocalDateTime objects.","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" public void formatUserInputDateTime_validInput_localDateTimeReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime dateTime \u003d DateTimeFormatters.getInstance().formatUserInputDateTime(\"01-01-2024 2359\");","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" assertNotNull(dateTime);","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" * Test case to validate handling of invalid user input date-time strings, expecting a null result.","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" public void formatUserInputDateTime_invalidInput_nullReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime dateTime \u003d DateTimeFormatters.getInstance().formatUserInputDateTime(\"invalid\");","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" assertNull(dateTime);","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" * Test case to validate the formatting of user input date-time range strings.","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" public void formatUserInputDateTimeRange_validInput_localDateTimeArrReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime[] dateTime \u003d DateTimeFormatters.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" .formatUserInputDateTimeRange(\"01-01-2024 0000\", \"01-01-2024 2359\");","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" assertNotNull(dateTime);","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" * Test case to validate handling of invalid user input date-time range strings, expecting a null result.","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" public void formatUserInputDateTimeRange_invalidInput_nullReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime[] dateTime \u003d DateTimeFormatters.getInstance().formatUserInputDateTimeRange(\"invalid\", \"invalid\");","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" assertNull(dateTime);","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" * Test case to validate the formatting of stored date strings into LocalDate objects.","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" public void formatStoredDate_validInput_localDateReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" LocalDate date \u003d DateTimeFormatters.getInstance().formatStoredDate(\"Jan 01 2024\");","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" assertNotNull(date);","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" * Test case to validate handling of invalid stored date strings, expecting a null result.","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" public void formatStoredDate_invalidInput_nullReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" LocalDate date \u003d DateTimeFormatters.getInstance().formatStoredDate(\"invalid\");","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" assertNull(date);","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" * Test case to validate the formatting of stored date-time strings into LocalDateTime objects.","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" public void formatStoredDateTime_validInput_localDateTimeReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime dateTime \u003d DateTimeFormatters.getInstance()","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" .formatStoredDateTime(\"Jan 01 2024 8:00 AM\");","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" assertNotNull(dateTime);","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" * Test case to validate handling of invalid stored date-time strings, expecting a null result.","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" public void formatStoredDateTime_invalidInput_nullReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime dateTime \u003d DateTimeFormatters.getInstance().formatStoredDateTime(\"invalid\");","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" assertNull(dateTime);","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" * Test case to validate the formatting of stored date-time range strings into an array of LocalDateTime objects.","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" public void formatStoredDateTimeRange_validInput_localDateTimeReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime[] dateTime \u003d DateTimeFormatters.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" .formatStoredDateTimeRange(\"Jan 01 2024 8:00 AM\", \"Jan 01 2024 10:00 AM\");","lastModifiedDate":"2024-02-03"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" assertNotNull(dateTime);","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":" * Test case to validate handling of invalid stored date-time range strings, expecting a null result.","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":" public void formatStoredDateTimeRange_invalidInput_nullReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime[] dateTime \u003d DateTimeFormatters.getInstance().formatStoredDateTimeRange(\"invalid\", \"invalid\");","lastModifiedDate":"2024-02-03"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":" assertNull(dateTime);","lastModifiedDate":"2024-01-31"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"Austintjh19":126}},{"path":"src/test/java/osiris/interpreters/UserInputInterpreterTest.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-30"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import static org.junit.jupiter.api.Assertions.assertInstanceOf;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.AddDeadlineTaskCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.AddEventTaskCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.AddToDoTaskCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.Command;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.MarkTaskCompleteCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.MarkTaskIncompleteCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.NoCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.PrintUserTasksCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.DeleteTaskCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.TerminateChatCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.UnsupportedCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" * Unit tests for the UserInputInterpreter class.","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"public class UserInputInterpreterTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" * Test for interpreting the \"bye\" command.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_bye_terminateChatCommandReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"bye\");","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(TerminateChatCommand.class, command);","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" * Test for interpreting the \"list\" command.","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_list_printUserTasksCommandReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"list\");","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(PrintUserTasksCommand.class, command);","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" * Test for interpreting the \"mark\" command.","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_mark_markTaskCompleteCommandReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"mark 1\");","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(MarkTaskCompleteCommand.class, command);","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" * Test for interpreting the \"unmark\" command.","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_unmark_markTaskIncompleteCommandReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"unmark 1\");","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(MarkTaskIncompleteCommand.class, command);","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" * Test for interpreting the \"delete\" command.","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_delete_removeTaskCommandReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"delete 1\");","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(DeleteTaskCommand.class, command);","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" * Test for interpreting the \"todo\" command.","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_todo_addToDoTaskCommandReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"todo Test\");","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(AddToDoTaskCommand.class, command);","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" * Test for interpreting the \"deadline\" command.","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_deadline_addDeadlineTaskCommandReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"deadline Test /by 01-01-2024\");","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(AddDeadlineTaskCommand.class, command);","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" * Test for interpreting the \"event\" command.","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_event_addEventTaskCommandReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" .interpretUserInput(\"event Test /from 01-01-2024 0000 /to 01-01-2024 2359\");","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(AddEventTaskCommand.class, command);","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" * Test for interpreting unsupported commands.","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_invalid_unsupportedCommandReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"Invalid.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(UnsupportedCommand.class, command);","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" * Test for interpreting commands with no specific action.","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_exceptions_noCommandReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"todo\");","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(NoCommand.class, command);","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"deadline\");","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(NoCommand.class, command);","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"event\");","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(NoCommand.class, command);","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Austintjh19":118}},{"path":"src/test/java/osiris/storage/StorageTxtFileTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris.storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.io.File;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" * Unit tests for TxtFileStorage class.","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":"public class StorageTxtFileTest {","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" * Test for checking if the storage file exists.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" public void storageFileExistTest() {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" StorageTxtFile storage \u003d new StorageTxtFile(\"Test.txt\");","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" storage.initialiseStorageTxtFile();","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" assertTrue(storage.doesStorageFileExist());","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" File testFile \u003d new File(\"Test.txt\");","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" testFile.delete();","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" assertFalse(storage.doesStorageFileExist());","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" * Test for reading content from the text file storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" public void readTxtFileStorageTest() {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" File testFile \u003d new File(\"Test.txt\");","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(\"Test.txt\", true);","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e testInputs \u003d new ArrayList\u003c\u003e(Arrays.asList(\"ABC\", \"123\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" for (String testStr: testInputs) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" fw.write(testStr + \"\\n\");","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" StorageTxtFile storage \u003d new StorageTxtFile(\"Test.txt\");","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e readContents \u003d storage.readStorageTxtFile();","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" boolean valid \u003d true;","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" int i \u003d 0;","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" if (testInputs.size() !\u003d readContents.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" valid \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" while (valid \u0026\u0026 i \u003c testInputs.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" if (!testInputs.get(i).equals(readContents.get(i))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" valid \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" i \u003d i + 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" assertTrue(valid);","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" testFile.delete();","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" System.err.println(e);","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" * Test for appending content to the text file storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" public void appendToTxtFileStorageTest() {","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" File testFile \u003d new File(\"Test.txt\");","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e testInputs \u003d new ArrayList\u003c\u003e(Arrays.asList(\"ABC\", \"123\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" StorageTxtFile storage \u003d new StorageTxtFile(\"Test.txt\");","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" for (String testInput: testInputs) {","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" storage.appendToStorageTxtFile(testInput);","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e readContents \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" Scanner scanner \u003d new Scanner(testFile);","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" readContents.add(scanner.nextLine());","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" boolean valid \u003d true;","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" int i \u003d 0;","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" if (testInputs.size() !\u003d readContents.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" valid \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" while (valid \u0026\u0026 i \u003c testInputs.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" if (!testInputs.get(i).equals(readContents.get(i))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" valid \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" i \u003d i + 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" assertTrue(valid);","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" testFile.delete();","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" System.err.println(e);","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" File testFile \u003d new File(\"Test.txt\");","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" testFile.delete();","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" * Test for clearing content from the text file storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" public void clearTxtFileStorage() {","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":" File testFile \u003d new File(\"Test.txt\");","lastModifiedDate":"2024-01-31"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":" StorageTxtFile storage \u003d new StorageTxtFile(\"Test.txt\");","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(\"Test.txt\", true);","lastModifiedDate":"2024-01-31"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e testInputs \u003d new ArrayList\u003c\u003e(Arrays.asList(\"ABC\", \"123\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":" for (String testStr: testInputs) {","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":" fw.write(testStr + \"\\n\");","lastModifiedDate":"2024-01-31"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":" storage.clearStorageTxtFile();","lastModifiedDate":"2024-02-03"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":" int i \u003d 0;","lastModifiedDate":"2024-01-31"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":" Scanner scanner \u003d new Scanner(testFile);","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" i \u003d i + 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":" scanner.nextLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"Austintjh19"},"content":" assert (i \u003d\u003d 0);","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"Austintjh19"},"content":" testFile.delete();","lastModifiedDate":"2024-01-31"},{"lineNumber":136,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":137,"author":{"gitId":"Austintjh19"},"content":" System.err.println(e);","lastModifiedDate":"2024-01-31"},{"lineNumber":138,"author":{"gitId":"Austintjh19"},"content":" File testFile \u003d new File(\"Test.txt\");","lastModifiedDate":"2024-01-31"},{"lineNumber":139,"author":{"gitId":"Austintjh19"},"content":" testFile.delete();","lastModifiedDate":"2024-01-31"},{"lineNumber":140,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":141,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":142,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"Austintjh19":142}},{"path":"src/test/java/osiris/validation/InputsValidatorTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris.validation;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Unit tests for InputsValidator class.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"public class InputsValidatorTest {","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" * Tests the validity of input for marking a task as complete.","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" public void isMarkTaskCompleteInputValid_validInput_trueReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance().isMarkTaskCompleteInputValid(\"mark 1\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" * Tests invalid inputs for marking a task as complete.","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" public void isMarkTaskCompleteInputValid_invalidInputs_falseReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isMarkTaskCompleteInputValid(\"mark \"));","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isMarkTaskCompleteInputValid(\"mark 1.5\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isMarkTaskCompleteInputValid(\"mark a\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" * Tests the validity of input for marking a task as incomplete.","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" public void isMarkTaskIncompleteInputValid_validInput_trueReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance().isMarkTaskIncompleteInputValid(\"unmark 1\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" * Tests the validity of input for marking a task as incomplete.","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" public void isMarkTaskIncompleteInputValid_invalidInput_falseReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isMarkTaskIncompleteInputValid(\"unmark \"));","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isMarkTaskIncompleteInputValid(\"unmark 1.5\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isMarkTaskIncompleteInputValid(\"unmark a\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" * Tests the validity of input for deleting a task.","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" public void isDeleteTaskInputValid_validInput_trueReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance().isDeleteTaskInputValid(\"delete 1\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" * Tests invalid input for deleting a task.","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" public void isDeleteTaskInputValid_invalidInput_falseReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isDeleteTaskInputValid(\"delete \"));","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isDeleteTaskInputValid(\"delete 1.5\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isDeleteTaskInputValid(\"delete a\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" * Tests the validity of input for adding a ToDo task.","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" public void isAddToDoTaskInputValid_validInput_trueReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance().isAddToDoTaskInputValid(\"todo 1\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance().isAddToDoTaskInputValid(\"todo Task 1\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance().isAddToDoTaskInputValid(\"todo Valid Task 1\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" * Tests invalid input for adding a ToDo task.","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" public void isAddToDoTaskInputValid_invalidInput_falseReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isAddToDoTaskInputValid(\"todo\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isDeleteTaskInputValid(\"todo \"));","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" * Tests the validity of input for adding a deadline task.","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" public void isAddDeadlineTaskInputValid_validInput_trueReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline 1 /by 01-01-2024\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task /by 01-01-2024\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task 1 /by 01-01-2024\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" * Tests invalid input for adding a deadline task.","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" public void isAddDeadlineTaskInputValid_invalidInput_falseReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task /by 01/01/2024\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline /by 01-01-2024\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task /by 2024-01-01\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task /by 32-01-2024\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task /by 01-13-2024\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task /by 1-01-2024\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task /by 01-1-2024\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task /by 1-1-2024\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task 01-01-2024\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task by 01-01-2024\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" * Tests the validity of input for adding an event task.","lastModifiedDate":"2024-02-03"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":" public void isAddEventTaskInputValid_validInput_trueReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" .isAddEventTaskInputValid(\"event 2 /from 01-01-2024 1200 /to 01-01-2024 1300\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":" .isAddEventTaskInputValid(\"event School Meeting /from 01-01-2024 1200 /to 01-01-2024 1300\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":" * Tests invalid input for adding an event task.","lastModifiedDate":"2024-02-03"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":" public void isAddEventTaskInputValid_invalidInput_falseReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" .isAddEventTaskInputValid(\"event /from 01-01-2024 1200 /to 01-01-2024 1300\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":" .isAddEventTaskInputValid(\"event School Meeting from 01-01-2024 1200 to 01-01-2024 1300\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":134,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"Austintjh19"},"content":" .isAddEventTaskInputValid(\"event School Meeting /from 01-01-2024 /to 01-01-2024\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":136,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":137,"author":{"gitId":"Austintjh19"},"content":" .isAddEventTaskInputValid(\"event School Meeting /from 01-01-2024 1300 /to 01-01-2024 1200\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":138,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":139,"author":{"gitId":"Austintjh19"},"content":" .isAddEventTaskInputValid(\"event School Meeting 01-01-2024 1200 01-01-2024 1300\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":140,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":141,"author":{"gitId":"Austintjh19"},"content":" .isAddEventTaskInputValid(\"event School Meeting /from 32-01-2024 1200 /to 33-01-2024 1300\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":142,"author":{"gitId":"Austintjh19"},"content":" assertFalse(InputsValidator.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":143,"author":{"gitId":"Austintjh19"},"content":" .isAddEventTaskInputValid(\"event School Meeting /from 01-13-2024 1200 /to 01-13-2024 1300\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":144,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":145,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"Austintjh19":145}},{"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":"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":"Austintjh19"},"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":"Austintjh19"},"content":"checkstyle {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"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":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" mainClass.set(\"osiris.Main\")","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" archiveBaseName \u003d \"Osiris\"","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" archiveClassifier \u003d \"1\"","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Austintjh19":23,"-":39}},{"path":"src/main/java/osiris/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"import javafx.scene.text.Text;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" * Custom control representing a dialog box in the chat interface.","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" * Each dialog box consists of an ImageView to represent the speaker\u0027s face and a Label containing text.","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" * Represents a single dialog entry in the conversation.","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" * It includes text and an image to display either user or chatBot messages.","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" private Text dialog;","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" * The ImageView component used to display the profile picture associated with the dialog entry.","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" * Constructs a new DialogBox with the specified text and image.","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" * @param text The text content to be displayed in the dialog box.","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" * @param img The image to be displayed in the dialog box.","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" dialog.setWrappingWidth(345);","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" * Flips the dialog box to represent a message from the user.","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" * The ImageView is placed on the left, and the text is placed on the right.","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" private void flip() {","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-04"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" * Creates and returns a DialogBox representing a message from the user.","lastModifiedDate":"2024-02-05"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" * @param text The text content of the user\u0027s message.","lastModifiedDate":"2024-02-05"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" * @param img The image to represent the user.","lastModifiedDate":"2024-02-05"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" * @return A DialogBox representing the user\u0027s message.","lastModifiedDate":"2024-02-05"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-04"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-02-04"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" * Creates and returns a DialogBox representing a message from Osiris.","lastModifiedDate":"2024-02-05"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" * The dialog box is flipped to display Osiris\u0027s message on the left.","lastModifiedDate":"2024-02-05"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" * @param text The text content of Osiris\u0027s message.","lastModifiedDate":"2024-02-05"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" * @param img The image to represent Osiris.","lastModifiedDate":"2024-02-05"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" * @return A DialogBox representing Osiris\u0027s message.","lastModifiedDate":"2024-02-05"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" public static DialogBox getOsirisDialog(String text, Image img) {","lastModifiedDate":"2024-02-05"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-02-04"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" db.flip();","lastModifiedDate":"2024-02-04"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" return db;","lastModifiedDate":"2024-02-04"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"Austintjh19":92}},{"path":"src/main/java/osiris/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"public class Launcher {","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"Austintjh19":12}},{"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":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" * The Main class serves as the entry point for the Osiris chat application.","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" * It initializes an instance of the Osiris chatBot and starts the chat session.","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" /** The Osiris chatBot. */","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" private final Osiris chatBot \u003d new Osiris();","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" * The start method overridden from the Application class.","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" * It sets up the JavaFX stage, loads the main window FXML, and initializes the Osiris chatBot.","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" * @param stage The primary stage for the JavaFX application.","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().initialiseOsiris(chatBot);","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" stage.setResizable(false);","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" stage.show();","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":42}},{"path":"src/main/java/osiris/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" * Controller class for the MainWindow.fxml file.","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" * Handles user interactions and updates the main chat window accordingly.","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" /** The ScrollPane component used to contain the dialog elements and enable scrolling. */","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" /** The VBox component serving as a container for the dialog elements. */","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" /** The TextField where the user inputs messages. */","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" /** The Button used to send user messages. */","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" /** An instance of the Osiris class, responsible for processing messages and interactions. */","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" private Osiris osiris;","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" /** Image of Osiris. */","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" private final Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/user.png\"));","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" /** Image of User. */","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" private final Image osirisImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/osiris.png\"));","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" * Initializes the controller after its root element has been completely processed.","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" * It binds the vertical value property of the scroll pane to the height property of the dialog container.","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" public void initialize() {","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" * Initializes the MainWindow with the provided Osiris instance.","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" * This method is typically called to start a chat session.","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" * @param chatBot The Osiris instance to be associated with this MainWindow.","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" public void initialiseOsiris(Osiris chatBot) {","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" osiris \u003d chatBot;","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" String status \u003d osiris.startChat();","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" outputOsirisDialog(status);","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" * Handles user input when the send button is clicked.","lastModifiedDate":"2024-02-05"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" * Processes the user input through the Osiris instance and updates the dialog container accordingly.","lastModifiedDate":"2024-02-05"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" * Clears the user input field after processing.","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" String userInput \u003d this.userInput.getText();","lastModifiedDate":"2024-02-05"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" String response \u003d osiris.processInput(userInput);","lastModifiedDate":"2024-02-05"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" DialogBox.getUserDialog(userInput, userImage),","lastModifiedDate":"2024-02-05"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" DialogBox.getOsirisDialog(response, osirisImage)","lastModifiedDate":"2024-02-05"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" );","lastModifiedDate":"2024-02-04"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" this.userInput.clear();","lastModifiedDate":"2024-02-05"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" * Outputs a dialog from Osiris to the dialog container.","lastModifiedDate":"2024-02-05"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" * @param outputDialog The dialog string to be displayed.","lastModifiedDate":"2024-02-05"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" private void outputOsirisDialog(String outputDialog) {","lastModifiedDate":"2024-02-05"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" dialogContainer.getChildren().addAll(DialogBox.getOsirisDialog(outputDialog, osirisImage));","lastModifiedDate":"2024-02-05"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"Austintjh19":87}},{"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 javafx.animation.PauseTransition;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import javafx.application.Platform;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import javafx.util.Duration;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import osiris.exceptions.OsirisException;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import osiris.exceptions.OsirisStorageFileException;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"import osiris.interpreters.UserInputInterpreter;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"import osiris.task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"import osiris.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" * The Osiris class represents the main chatBot application.","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" * It manages user interactions, interprets commands, and handles task management.","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"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":" /** Represents the task manager responsible for managing tasks within the system. */","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" private final TaskManager taskManager \u003d new TaskManager();","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" /** Represents the user interface component of the application. */","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" private final Ui userInterface \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" * Initiates the necessary dependencies \u0026 outputs introductions when done.","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" public String startChat() {","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" taskManager.initialise();","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" return userInterface.displayIntroductions();","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" } catch (OsirisStorageFileException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" return e.getMessage() + \" Please restart system.\";","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" } catch (OsirisException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" return e.getMessage() + \" Please restart system.\";","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" * Processes the user input.","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" * @param userInput The user input string.","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" * @return String to be outputted to the user.","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" public String processInput(String userInput) {","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" String response \u003d \"\";","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" boolean isTerminate \u003d false;","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" Command userCommand \u003d UserInputInterpreter.getInstance().interpretUserInput(userInput);","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" response \u003d userCommand.execute(taskManager, userInterface);","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" isTerminate \u003d userCommand.isTerminateChat();","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" if (isTerminate) {","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" PauseTransition delay \u003d new PauseTransition(Duration.seconds(1.5));","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" delay.setOnFinished(event -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" Platform.exit();","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" delay.play();","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" } catch (OsirisException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" return e.getMessage();","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" return response;","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":64}},{"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 java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import osiris.exceptions.OsirisException;","lastModifiedDate":"2024-02-05"},{"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-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" * Command class representing the addition of a deadline task.","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"public class AddDeadlineTaskCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" /** Keyword used to identify the command. */","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"deadline\";","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" /** Name of the Task. */","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" private final String taskName;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" /** Deadline date associated with the task. */","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" private final LocalDate deadline;","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" * Constructs an AddDeadlineTaskCommand object with the specified task name and deadline.","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the deadline task.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" * @param deadline The deadline of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" public AddDeadlineTaskCommand(String taskName, LocalDate deadline) {","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" * Executes the command to add a deadline task.","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" * @return String notification if the command is executed successfully.","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisException If an error occurs that has not been detected.","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" public String execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.addDeadlineTask(taskName, false, deadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" return userInterface.displayDeadlineTaskAdditionNotification(taskManager.getTask(","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" taskManager.getTotalTaskCount() - 1).toString(), taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisException(\"An error has occurred. Please try again.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":51}},{"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 java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import osiris.exceptions.OsirisException;","lastModifiedDate":"2024-02-05"},{"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-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" * Command class representing the addition of an event task.","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"public class AddEventTaskCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" /** Keyword used to identify the command. */","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"event\";","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" /** Name of the Task. */","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" private final String taskName;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" /** Start Date Time associated with the Task. */","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" private final LocalDateTime startDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" /** End Date Time associated with the Task. */","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" private final LocalDateTime endDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" * Constructs an AddEventTaskCommand object with the specified task name, start date and end date.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the event task.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" * @param startDateTime The start date and time of the event.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" * @param endDateTime The end date and time of the event.","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" public AddEventTaskCommand(String taskName, LocalDateTime startDateTime, LocalDateTime endDateTime) {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" * Executes the command to add an event task.","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" * @return String notification if the command is executed successfully.","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisException If an error occurs that has not been detected.","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" public String execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.addEventTask(taskName, false, startDateTime, endDateTime);","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" return userInterface.displayEventTaskAdditionNotification(taskManager.getTask(","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" taskManager.getTotalTaskCount() - 1).toString(), taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisException(\"An error has occurred. Please try again.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":57}},{"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.exceptions.OsirisException;","lastModifiedDate":"2024-02-05"},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" * Command class representing the addition of a to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"public class AddToDoTaskCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" /** Keyword used to identify the command. */","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"todo\";","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" /** Name of the Task. */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" private final String taskName;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" * Constructs an AddToDoTaskCommand object with the specified task name.","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" public AddToDoTaskCommand(String taskName) {","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" * Executes the command to add a to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" * @return String notification if the command is executed successfully.","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisException If an error occurs that has not been detected.","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" public String execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.addToDoTask(taskName, false);","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" return userInterface.displayToDoTaskAdditionNotification(taskManager.getTask(","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" taskManager.getTotalTaskCount() - 1).toString(), taskManager.getTotalTaskCount());","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisException(\"An error has occurred. Please try again.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":44}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" * Abstract class representing a command to be executed.","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" /** Whether the command for the chat to be terminated has been called. */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" private boolean isTerminateChat \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" * Sets the termination status of the chat.","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" * @param isTerminateChat A boolean value indicating whether the chat should be terminated.","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" public void setIsTerminateChat(boolean isTerminateChat) {","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" this.isTerminateChat \u003d isTerminateChat;","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" * Checks if the command is to terminate the chat.","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" * @return true if the command is to terminate the chat, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" public boolean isTerminateChat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" return isTerminateChat;","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" * Executes the command.","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" * @return String notification if the command is executed successfully.","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" public abstract String execute(TaskManager taskManager, Ui userInterface);","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":40}},{"path":"src/main/java/osiris/commands/DeleteTaskCommand.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.exceptions.OsirisException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import osiris.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import osiris.task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import osiris.ui.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Command class representing the \"delete\" command to remove a task.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" /** Keyword used to identify the command. */","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"delete\";","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" /** Index to delete. */","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" private final int taskIndex;","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" * Constructs a DeleteTaskCommand with the specified task index.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" * @param taskIndex The index of the task to be removed.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" public DeleteTaskCommand(int taskIndex) {","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" * Executes the \"delete\" command to remove a task.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" * @return String notification if the command is executed successfully.","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisException If an error occurs that has not been detected.","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" public String execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" Task deletedTask \u003d taskManager.deleteTask(taskIndex - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" if (deletedTask !\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" return userInterface.displayDeleteTaskNotification(deletedTask.toString(), taskManager.getTotalTaskCount());","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisException(\"An error has occurred. Please try again.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":44}},{"path":"src/main/java/osiris/commands/FindTasksCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import osiris.task.TaskManager;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import osiris.ui.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Represents a command to find tasks based on a search string.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"public class FindTasksCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" /** Keyword used to identify the command. */","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"find\";","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" /** The String to be searched. */","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" private final String searchSting;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" * Constructs a FindTasksCommand object with the specified search string.","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" * @param searchString The search string to find relevant tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" public FindTasksCommand(String searchString) {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" this.searchSting \u003d searchString;","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" * Executes the find tasks command, searching for relevant tasks based on the search string.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance managing the tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance for interacting with the user.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" * @return String of all the found tasks.","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" public String execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e relevantTasks \u003d taskManager.findTask(searchSting);","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" return userInterface.printFoundUserTasks(relevantTasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"Austintjh19":40}},{"path":"src/main/java/osiris/commands/MarkTaskCompleteCommand.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.exceptions.OsirisException;","lastModifiedDate":"2024-02-05"},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" * Command class to mark a task as completed.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"public class MarkTaskCompleteCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" /** Keyword used to identify the command. */","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"mark\";","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" /** Index to mark as completed. */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" private final int taskIndex;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" * Constructs a MarkTaskCompletedCommand object with the specified task index.","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" * @param taskIndex The index of the task to be marked as completed.","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" public MarkTaskCompleteCommand(int taskIndex) {","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" * Executes the mark task completed command.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" * @return String notification if the command is executed successfully.","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisException If an error occurs that has not been detected.","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" public String execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.markTaskComplete(taskIndex - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" return userInterface.displayMarkTaskCompleteNotification(taskManager.getTask(taskIndex - 1).toString());","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisException(\"An error has occurred. Please try again.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":44}},{"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.exceptions.OsirisException;","lastModifiedDate":"2024-02-05"},{"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":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Command class to mark a task as incomplete.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"public class MarkTaskIncompleteCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" /** Keyword used to identify the command. */","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"unmark\";","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" /** Index to mark as incomplete. */","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" private final int taskIndex;","lastModifiedDate":"2024-01-31"},{"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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" * Constructs a MarkTaskIncompleteCommand object with the specified task index.","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" * @param taskIndex The index of the task to be marked as incomplete.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" public MarkTaskIncompleteCommand(int taskIndex) {","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-01-29"},{"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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" * Executes the mark task incomplete command.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" * @return String notification if the command is executed successfully.","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisException If an error occurs that has not been detected.","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" public String execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" boolean isSuccess \u003d taskManager.markTaskIncomplete(taskIndex - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" if (isSuccess) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" return userInterface.displayMarkTaskIncompleteNotification(taskManager.getTask(taskIndex - 1).toString());","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisException(\"An error has occurred. Please try again.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":45}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" * Command class representing a no-operation command.","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" * This command does nothing when executed.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Called when an exception is thrown.","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"public class NoCommand extends Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" * Executes the no-operation command.","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" * @return String notification if the command is executed successfully.","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" public String execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" return \"\";","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-30"}],"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 java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import osiris.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import osiris.task.TaskManager;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import osiris.ui.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" * Command class representing the \"list\" command to print user tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"public class PrintUserTasksCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" /** Keyword used to identify the command. */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"list\";","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" * Executes the \"list\" command to print user tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" * @return String notification if the command is executed successfully.","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" public String execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cTask\u003e taskList \u003d taskManager.getUserTasks();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e taskDetailsArrayList \u003d taskList.stream().map(Task::toString)","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" .collect(Collectors.toCollection(ArrayList::new));","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" return userInterface.printUserTasks(taskDetailsArrayList);","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":32}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" * Command class representing the \"bye\" command to terminate the chat.","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"public class TerminateChatCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" /** Keyword used to identify the command. */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public static final String COMMAND \u003d \"bye\";","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" * Checks if the chat should be terminated.","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" * @return Always returns true to indicate termination.","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" public boolean isTerminateChat() {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" return true;","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" * Executes the \"bye\" command to terminate the chat.","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" * @return String saying goodbye.","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" public String execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" taskManager.terminate();","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" return userInterface.displayGoodbyes();","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":35}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" * Command class representing an unsupported command.","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"public class UnsupportedCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" * Executes the unsupported command by displaying a message through the user interface.","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" * @param taskManager The TaskManager instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" * @param userInterface The Ui instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" * @return String notification of unsupported command being entered.","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" public String execute(TaskManager taskManager, Ui userInterface) {","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" return userInterface.displayUnsupportedCommandMessage();","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":22}},{"path":"src/main/java/osiris/exceptions/OsirisDateTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris.exceptions;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":" * Custom exception class for representing date and time related errors in the Osiris application.","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class OsirisDateTimeException extends OsirisException {","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Constructs a new OsirisDateTimeException with the specified detail message.","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" * @param message the detail message.","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" public OsirisDateTimeException(String message) {","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" super(message);","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"Austintjh19":16}},{"path":"src/main/java/osiris/exceptions/OsirisException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris.exceptions;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":" * Custom exception class for Osiris application.","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" * Extends RuntimeException to indicate unchecked exceptions.","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"public class OsirisException extends RuntimeException {","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" * Constructs a new OsirisException with the specified detail message.","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" * @param message the detail message.","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" public OsirisException(String message) {","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" super(message);","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"Austintjh19":17}},{"path":"src/main/java/osiris/exceptions/OsirisInvalidIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris.exceptions;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":" * The OsirisInvalidIndexException class represents an exception related to invalid task indices .","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class OsirisInvalidIndexException extends OsirisException {","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Constructs a new OsirisInvalidIndexException with the specified invalid index.","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" * @param index The invalid index causing the exception.","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" public OsirisInvalidIndexException(int index) {","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" super(\"No task with index \" + (index) + \". Enter \u0027list\u0027 to view tasks.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"Austintjh19":16}},{"path":"src/main/java/osiris/exceptions/OsirisInvalidInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris.exceptions;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":" * The OsirisInvalidInputException class represents an exception related to invalid user input.","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class OsirisInvalidInputException extends OsirisException {","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Constructs a new OsirisInvalidInputException with the specified error message.","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" * @param s The error message indicating the nature of the invalid input.","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" public OsirisInvalidInputException(String s) {","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" super(s);","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"Austintjh19":16}},{"path":"src/main/java/osiris/exceptions/OsirisParseDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris.exceptions;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":" * Custom exception class for representing date parsing errors in the Osiris application.","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class OsirisParseDateException extends OsirisDateTimeException {","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Constructs a new OsirisParseDateExcpetion with the specified detail message.","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" * The message indicates that the date-time string parsing has failed and suggests the correct format.","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" * @param dateStr the date-time string that failed to parse.","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" public OsirisParseDateException(String dateStr) {","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" super(\"Failed to parse the date-time string: \"","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" + dateStr + \"\\nPlease try /by dd-mm-yyyy for a deadline tasks.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"Austintjh19":18}},{"path":"src/main/java/osiris/exceptions/OsirisParseDateTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris.exceptions;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":" * Custom exception class for representing date and time parsing errors in the Osiris application.","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class OsirisParseDateTimeException extends OsirisDateTimeException {","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Constructs a new OsirisParseDateTimeException with the specified detail message.","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" * The message indicates that the date-time string parsing has failed and suggests the correct format.","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" * @param dateTimeStr the date-time string that failed to parse.","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" public OsirisParseDateTimeException(String dateTimeStr) {","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" super(\"Failed to parse the date-time string: \"","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" + dateTimeStr + \"\\nPlease provide date time range \u0027dd-MM-yyyy HHmm\u0027 format.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"Austintjh19":18}},{"path":"src/main/java/osiris/exceptions/OsirisParseDateTimeRangeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris.exceptions;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":" * Custom exception class for representing errors in parsing date and time ranges in the Osiris application.","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class OsirisParseDateTimeRangeException extends OsirisDateTimeException {","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Constructs a new OsirisParseDateTimeRangeException with a default error message.","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" * The message indicates that parsing the date time range has failed and suggests the correct format.","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public OsirisParseDateTimeRangeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" super(\"Failed to parse the date time range.\"","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" + \"\\nPlease provide date time range \u0027dd-MM-yyyy HHmm\u0027 format.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"Austintjh19":16}},{"path":"src/main/java/osiris/exceptions/OsirisParseStoredDateTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris.exceptions;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":" * Custom exception class for representing errors in parsing stored date and time values in the Osiris application.","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class OsirisParseStoredDateTimeException extends OsirisDateTimeException {","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Constructs a new OsirisParseStoredDateTimeException with a default error message.","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" * The message indicates that parsing stored date and time values has failed due to potential file corruption.","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public OsirisParseStoredDateTimeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" super(\"Unable to parse Date Times stored. Storage File may have been corrupted.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"Austintjh19":15}},{"path":"src/main/java/osiris/exceptions/OsirisStorageFileException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris.exceptions;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":" * The OsirisStorageFileException class represents an exception related to storage file operations.","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class OsirisStorageFileException extends OsirisException {","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Constructs a new OsirisStorageFileException with the specified error message.","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" * @param s The error message describing the storage file exception.","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" public OsirisStorageFileException(String s) {","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" super(s);","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"Austintjh19":16}},{"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 java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import osiris.exceptions.*;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" * A singleton class for date and time formatters used in the application.","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"public class DateTimeFormatters {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" /** A singleton DateTimeFormatters instance. */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" private static DateTimeFormatters instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" /** Private constructor to initialise a DateTimeFormatters instance. */","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" private DateTimeFormatters() {}","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" * Returns the singleton instance of the DateTimeFormatters class.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" * @return The DateTimeFormatters instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" public static DateTimeFormatters getInstance() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" if (instance \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" instance \u003d new DateTimeFormatters();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" return instance;","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" * Formats the user input string to a LocalDate object.","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" * @param dateStr The date string provided by the user.","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" * @return The LocalDate object parsed from the string.","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisParseDateException If the date string cannot be parsed.","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" public LocalDate formatUserInputDate(String dateStr) {","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" return LocalDate.parse(dateStr, dateTimeFormatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date-time string: \" + dateStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Please try /by dd-mm-yyyy for a deadline tasks.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisParseDateException(dateStr);","lastModifiedDate":"2024-02-05"},{"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":"","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" * Formats the user input string to a LocalDateTime object.","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" * @param dateTimeStr The date and time string provided by the user.","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" * @return The LocalDateTime object parsed from the string.","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisDateTimeException If the date and time string cannot be parsed.","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" public LocalDateTime formatUserInputDateTime(String dateTimeStr) {","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" return LocalDateTime.parse(dateTimeStr, dateTimeFormatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date-time string: \" + dateTimeStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Please provide date time range \u0027dd-MM-yyyy HHmm\u0027 format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisParseDateTimeException(dateTimeStr);","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" * Formats the user input strings to an array of LocalDateTime objects representing a range.","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" * @param fromDateTimeStr The starting date and time string.","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" * @param toDateTimeStr The ending date and time string.","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" * @return An array of LocalDateTime objects representing the date time range.","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisParseDateTimeRangeException If the date time range cannot be parsed.","lastModifiedDate":"2024-02-05"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" public LocalDateTime[] formatUserInputDateTimeRange(String fromDateTimeStr, String toDateTimeStr) {","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter startDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter endDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HHmm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(fromDateTimeStr, startDateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(toDateTimeStr, endDateTimeFormatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" return new LocalDateTime[]{startDateTime, endDateTime};","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date time range.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Please provide date time range in \u0027dd-MM-yyyy HHmm\u0027 format.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisParseDateTimeRangeException();","lastModifiedDate":"2024-02-05"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" * Formats the stored date string to a LocalDate object.","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" * @param dateStr The stored date string.","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" * @return The LocalDate object parsed from the string.","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisParseStoredDateTimeException If the stored date string cannot be parsed.","lastModifiedDate":"2024-02-05"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" public LocalDate formatStoredDate(String dateStr) {","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" return LocalDate.parse(dateStr, dateTimeFormatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date-time string: \u0027\" + dateStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisParseStoredDateTimeException();","lastModifiedDate":"2024-02-05"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" * Formats the stored date and time string to a LocalDateTime object.","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" * @param dateTimeStr The stored date and time string.","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" * @return The LocalDateTime object parsed from the string.","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisParseStoredDateTimeException If the stored date and time string cannot be parsed.","lastModifiedDate":"2024-02-05"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":" public LocalDateTime formatStoredDateTime(String dateTimeStr) {","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\");","lastModifiedDate":"2024-01-31"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":" return LocalDateTime.parse(dateTimeStr, dateTimeFormatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date-time string: \u0027\" + dateTimeStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisParseStoredDateTimeException();","lastModifiedDate":"2024-02-05"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" * Formats the stored date time range strings to an array of LocalDateTime objects.","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":" * @param fromDateTimeStr The starting date and time string.","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"Austintjh19"},"content":" * @param toDateTimeStr The ending date and time string.","lastModifiedDate":"2024-02-03"},{"lineNumber":135,"author":{"gitId":"Austintjh19"},"content":" * @return An array of LocalDateTime objects representing the date time range.","lastModifiedDate":"2024-01-31"},{"lineNumber":136,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisParseStoredDateTimeException If the stored date time range strings cannot be parsed.","lastModifiedDate":"2024-02-05"},{"lineNumber":137,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":138,"author":{"gitId":"Austintjh19"},"content":" public LocalDateTime[] formatStoredDateTimeRange(String fromDateTimeStr, String toDateTimeStr) {","lastModifiedDate":"2024-02-03"},{"lineNumber":139,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter startDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\");","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Austintjh19"},"content":" DateTimeFormatter endDateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\");","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(fromDateTimeStr, startDateTimeFormatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(toDateTimeStr, endDateTimeFormatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":145,"author":{"gitId":"Austintjh19"},"content":" return new LocalDateTime[]{startDateTime, endDateTime};","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"Austintjh19"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to parse the date time range: \" + fromDateTimeStr + \" OR \" + toDateTimeStr);","lastModifiedDate":"2024-02-03"},{"lineNumber":148,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisParseStoredDateTimeException();","lastModifiedDate":"2024-02-05"},{"lineNumber":149,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Austintjh19":151}},{"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 java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.AddDeadlineTaskCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.AddEventTaskCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.AddToDoTaskCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.Command;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.DeleteTaskCommand;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.FindTasksCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.MarkTaskCompleteCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.MarkTaskIncompleteCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.NoCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.PrintUserTasksCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.TerminateChatCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.UnsupportedCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"import osiris.exceptions.OsirisException;","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":"import osiris.formatters.DateTimeFormatters;","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":"import osiris.validation.InputsValidator;","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" * Interprets user input and returns the appropriate command.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":"public class UserInputInterpreter {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" /** A singleton UserInputInterpreter instance. */","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" private static UserInputInterpreter instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" /** Private constructor to initialise an UserInputInterpreter instance. */","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" private UserInputInterpreter() {}","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" * Returns the singleton instance of the UserInputInterpreter.","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" * @return The UserInputInterpreter instance.","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" public static UserInputInterpreter getInstance() {","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" if (instance \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" instance \u003d new UserInputInterpreter();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" return instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" * Interprets the user input and returns the corresponding command.","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" * @param userInput The user input string.","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" * @return The appropriate Command object based on the user input.","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisException If there is an error in interpreting data.","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" public Command interpretUserInput(String userInput) throws OsirisException {","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" String[] inputtedWords \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" String taskName \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" boolean isValid \u003d false;","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" switch (inputtedWords[0]) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" case TerminateChatCommand.COMMAND:","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" return new TerminateChatCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" case PrintUserTasksCommand.COMMAND:","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" return new PrintUserTasksCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" case MarkTaskCompleteCommand.COMMAND:","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().isMarkTaskCompleteInputValid(userInput);","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" int taskIndex \u003d Integer.parseInt(taskIndexString);","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" return new MarkTaskCompleteCommand(taskIndex);","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" case MarkTaskIncompleteCommand.COMMAND:","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().isMarkTaskIncompleteInputValid(userInput);","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" int taskIndex \u003d Integer.parseInt(taskIndexString);","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" return new MarkTaskIncompleteCommand(taskIndex);","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" case DeleteTaskCommand.COMMAND:","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().isDeleteTaskInputValid(userInput);","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" int taskIndex \u003d Integer.parseInt(taskIndexString);","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" return new DeleteTaskCommand(taskIndex);","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" case AddToDoTaskCommand.COMMAND:","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().isAddToDoTaskInputValid(userInput);","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" taskName \u003d userInput.substring(AddToDoTaskCommand.COMMAND.length()).trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" return new AddToDoTaskCommand(taskName);","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" case AddDeadlineTaskCommand.COMMAND:","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().isAddDeadlineTaskInputValid(userInput);","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" int byIndex \u003d userInput.indexOf(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" taskName \u003d userInput.substring(AddDeadlineTaskCommand.COMMAND.length(), byIndex - 1).trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" String deadlineStr \u003d userInput.substring(byIndex + \"/by\".length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" LocalDate deadline \u003d DateTimeFormatters.getInstance().formatUserInputDate(deadlineStr);","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" if (deadline !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" return new AddDeadlineTaskCommand(taskName, deadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" case AddEventTaskCommand.COMMAND:","lastModifiedDate":"2024-02-03"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" isValid \u003d InputsValidator.getInstance().isAddEventTaskInputValid(userInput);","lastModifiedDate":"2024-02-03"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" if (isValid) {","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" int fromIndex \u003d userInput.indexOf(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":" int toIndex \u003d userInput.indexOf(\"/to\");","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":" taskName \u003d userInput.substring(AddEventTaskCommand.COMMAND.length(), fromIndex - 1).trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":" String startDateTimeStr \u003d userInput.substring(fromIndex + \"/from\".length(), toIndex - 1).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" String endDateTimeStr \u003d userInput.substring(toIndex + \"/to\".length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime[] dateTimeRange \u003d DateTimeFormatters.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":" .formatUserInputDateTimeRange(startDateTimeStr, endDateTimeStr);","lastModifiedDate":"2024-02-03"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":" if (dateTimeRange !\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":" return new AddEventTaskCommand(taskName, dateTimeRange[0], dateTimeRange[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":" case FindTasksCommand.COMMAND:","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":" String searhString \u003d userInput.substring(FindTasksCommand.COMMAND.length()).trim();","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" return new FindTasksCommand(searhString);","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"Austintjh19"},"content":" return new UnsupportedCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":137,"author":{"gitId":"Austintjh19"},"content":" return new NoCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":139}},{"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":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import osiris.exceptions.OsirisStorageFileException;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" * Manages file storage for the Osiris.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" private final String filepath;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" * Constructs a Storage object with the specified file path.","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" * @param filepath The file path for storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" public Storage(String filepath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the file path.","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" * @return The file path.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" public String getFilepath() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" return filepath;","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" * Checks if the storage file exists.","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" * @return True if the storage file exists, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisStorageFileException If error accessing file.","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" public boolean doesStorageFileExist() {","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" File file \u003d new File(filepath);","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" return file.exists();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" } catch (SecurityException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" System.err.println(\"SecurityException occurred.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisStorageFileException(\"Trouble accessing storage file: \" + filepath);","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" } catch (NullPointerException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" System.err.println(\"NullPointerException occurred.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisStorageFileException(\"Trouble accessing storage file: \" + filepath);","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" System.err.println(\"An error occurred with Function storageFileExist().\");","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisStorageFileException(\"Trouble accessing storage file: \" + filepath);","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Austintjh19":53}},{"path":"src/main/java/osiris/storage/StorageTxtFile.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris.storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"import osiris.exceptions.OsirisStorageFileException;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" * Manages storage in a text file format.","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"public class StorageTxtFile extends Storage {","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" * Constructs a TxtFileStorage object with the specified file path.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" * @param filepath The file path for the text file storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" public StorageTxtFile(String filepath) {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" super(filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" * Initializes the text file storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisStorageFileException If error creating new Txt file for storage.","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" public void initialiseStorageTxtFile() {","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" File file \u003d new File(this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" if (super.doesStorageFileExist()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task Storage File: \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Created Task Storage File: \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Failed to create Task Storage file: \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to create new Txt file for Task storage.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisStorageFileException(\"Error: Unable to create new Txt file for Task storage.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" * Reads the contents of the text file storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" * @return The contents of the text file storage as an ArrayList of strings.","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisStorageFileException If error reading the Txt storage file.","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" public ArrayList\u003cString\u003e readStorageTxtFile() {","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e readContents \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" Scanner scanner \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" File file \u003d new File(this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" readContents.add(scanner.nextLine());","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" return readContents;","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to locate filepath \" + this.getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisStorageFileException(\"Error: Unable to locate filepath \" + this.getFilepath());","lastModifiedDate":"2024-02-05"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" } finally {","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" if (scanner !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" scanner.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" * Appends content to the text file storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" * @param content The content to append to the text file storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisStorageFileException If error appending task to the Txt storage file.","lastModifiedDate":"2024-02-05"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" public void appendToStorageTxtFile(String content) {","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(this.getFilepath(), true);","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" fw.write(content + \"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to update Task Storage File. Trouble appending.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisStorageFileException(\"Error: Unable to update Task Storage File. Trouble appending.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" * Clears the contents of the text file storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisStorageFileException If error clearing data on the Txt storage file.","lastModifiedDate":"2024-02-05"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" public void clearStorageTxtFile() {","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(getFilepath());","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Error: Unable to update Task Storage File. Trouble clearing contents.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisStorageFileException(\"Error: Unable to update Task Storage File. \"","lastModifiedDate":"2024-02-05"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" + \"Trouble clearing contents.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"Austintjh19":110}},{"path":"src/main/java/osiris/storage/data/task.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"T | Y | Borrow Book","lastModifiedDate":"2024-01-30"},{"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 | Y | 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/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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" * The DeadlineTask class represents a task with a deadline.","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" * It extends the Task class.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" /** Deadline Date Time of Task. */","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" private final LocalDate deadline;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" * Constructs a DeadlineTask object with the given task name and deadline.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" * @param deadline The deadline of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" public DeadlineTask(String taskName, LocalDate deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" this.deadline \u003d deadline;","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" * Constructs a DeadlineTask object with the given task name, completion status, and deadline.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" * @param isCompleted The completion status of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" * @param deadline The deadline of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" public DeadlineTask(String taskName, boolean isCompleted, LocalDate deadline) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-29"},{"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-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the deadline of the task as a string.","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" * @return The deadline of the task formatted as \"MMM d yyyy\".","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" public String getDeadlineStr() {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" return deadline.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the DeadlineTask for storage purposes.","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" * @return The string representation of the DeadlineTask.","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"D | %s | %s\", super.getStringStorageRepresentation(), this.getDeadlineStr());","lastModifiedDate":"2024-01-30"},{"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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the DeadlineTask for display purposes.","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" * @return The string representation of the DeadlineTask.","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"[D] %s (by: %s)\", super.toString(), this.getDeadlineStr());","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":66}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" * The EventTask class represents a task that occurs within a specific time frame.","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" * It extends the Task class.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"public class EventTask extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" /** Starting Date Time of Task. **/","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" private final LocalDateTime startDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" /** Ending Date Time of Task. **/","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" private final LocalDateTime endDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" * Constructs an EventTask object with the given task name, start date/time, and end date/time.","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" * @param startDateTime The start date and time of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" * @param endDateTime The end date and time of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" public EventTask(String taskName, LocalDateTime startDateTime, LocalDateTime endDateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" * Constructs an EventTask object with the given task name, completion status, start date/time, and end date/time.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" * @param isCompleted The completion status of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" * @param startDateTime The start date and time of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" * @param endDateTime The end date and time of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" public EventTask(String taskName, boolean isCompleted, LocalDateTime startDateTime, LocalDateTime endDateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" super(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" this.startDateTime \u003d startDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" this.endDateTime \u003d endDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the start date and time of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" * @return The start date and time of the task formatted as \"MMM d yyyy h:mm a\".","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" public String getStartDateTimeStr() {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" return startDateTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the end date and time of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" * @return The end date and time of the task formatted as \"MMM d yyyy h:mm a\".","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" public String getEndDateTimeStr() {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" return endDateTime.format(DateTimeFormatter.ofPattern(\"MMM d yyyy h:mm a\"));","lastModifiedDate":"2024-02-03"},{"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-31"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the EventTask for storage purposes.","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" * @return The string representation of the EventTask.","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"E | %s | %s | %s\", super.getStringStorageRepresentation(),","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" this.getStartDateTimeStr(), this.getEndDateTimeStr());","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the EventTask for display purposes.","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" * @return The string representation of the EventTask.","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"[E] %s (from: %s to: %s)\", super.toString(),","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" this.getStartDateTimeStr(), this.getEndDateTimeStr());","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":84}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":" * The Task class represents a generic task in the Osiris application.","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" * It serves as the base class for different types of tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" /** Name of Task */","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" private final String taskName;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" /** Whether Task has been completed. */","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" private boolean isCompleted \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" * Constructs a Task object with the given task name.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" public Task(String taskName) {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","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-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" * Constructs a Task object with the given task name and completion status.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" * @param isCompleted The completion status of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" public Task(String taskName, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" * Marks the task as completed.","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" public void markComplete() {","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" isCompleted \u003d true;","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" * Marks the task as incomplete.","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" public void markIncomplete() {","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" isCompleted \u003d false;","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the task for storage purposes.","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" * @return The string representation of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" String completionStatus \u003d isCompleted ? \"Y\" : \"N\";","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"%s | %s\", completionStatus, taskName);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the task for display purposes.","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" * @return The string representation of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" String completionStatus \u003d isCompleted ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"%s %s\", completionStatus, taskName);","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":69}},{"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 java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import osiris.exceptions.OsirisInvalidIndexException;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import osiris.exceptions.OsirisStorageFileException;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"import osiris.formatters.DateTimeFormatters;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"import osiris.storage.StorageTxtFile;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" * The TaskManager class manages user tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"public class TaskManager {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" /** File path of where user tasks will be stored */","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" private static final String TASK_STORAGE_FILE_PATH \u003d \"src/main/java/Osiris/Storage/data/task.txt\";","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" /** List of user task. */","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" private final ArrayList\u003cTask\u003e userTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" /** Initialise new Txt File for storage. */","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" private final StorageTxtFile taskStorage \u003d new StorageTxtFile(TASK_STORAGE_FILE_PATH);","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" * Initializes the task manager by loading tasks from file storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" public void initialise() throws OsirisStorageFileException {","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" taskStorage.initialiseStorageTxtFile();","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" this.loadUserTaskFromFileStorage();","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" * Terminates the task manager by clearing file storage and storing tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" public void terminate() throws OsirisStorageFileException {","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" taskStorage.clearStorageTxtFile();","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" this.storeUserTaskToFileStorage();","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" * Adds a to-do task to the task manager.","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" * @param isCompleted The completion status of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" * @return True if the task is added successfully, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" public boolean addToDoTask(String taskName, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" ToDoTask newTask \u003d new ToDoTask(taskName, isCompleted);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" userTasks.add(newTask);","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" return true;","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" * Adds a deadline task to the task manager.","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" * @param isCompleted The completion status of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" * @param deadline The deadline of the task.","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" * @return True if the task is added successfully, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" public boolean addDeadlineTask(String taskName, boolean isCompleted, LocalDate deadline) {","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" DeadlineTask newTask \u003d new DeadlineTask(taskName, isCompleted, deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" userTasks.add(newTask);","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" * Adds an event task to the task manager.","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" * @param isCompleted The completion status of the task.","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" * @param startDateTime The start date and time of the event.","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" * @param endDateTime The end date and time of the event.","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" * @return True if the task is added successfully, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" public boolean addEventTask(String taskName, boolean isCompleted, LocalDateTime startDateTime,","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime endDateTime) {","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" EventTask newTask \u003d new EventTask(taskName, isCompleted, startDateTime, endDateTime);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" userTasks.add(newTask);","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" * Retrieves a task from the task manager based on its index.","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" * @param index The index of the task.","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" * @return The task at the specified index.","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" return userTasks.get(index);","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" * Retrieves all user tasks managed by the task manager.","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" * @return The list of user tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" public ArrayList\u003cTask\u003e getUserTasks() {","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" return userTasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" * Removes a task from the task manager based on its index.","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" * @param index The index of the task to be removed.","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" * @return The removed task, or null if the index is out of bounds.","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisInvalidIndexException If index provided is invalid.","lastModifiedDate":"2024-02-05"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":" public Task deleteTask(int index) {","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" Task deletedTask \u003d userTasks.get(index);","lastModifiedDate":"2024-02-03"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" userTasks.remove(index);","lastModifiedDate":"2024-02-03"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" return deletedTask;","lastModifiedDate":"2024-02-03"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"No task with index \" + (index + 1) + \". Enter \u0027list\u0027 to view tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisInvalidIndexException(index + 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the total number of tasks managed by the task manager.","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" * @return The total number of tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":" public int getTotalTaskCount() {","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":" return userTasks.size();","lastModifiedDate":"2024-02-03"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":" * Marks a task as completed based on its index.","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"Austintjh19"},"content":" * @param index The index of the task to be marked as completed.","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"Austintjh19"},"content":" * @return True if the task is marked as completed successfully, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":136,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisInvalidIndexException If index provided is invalid.","lastModifiedDate":"2024-02-05"},{"lineNumber":137,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":138,"author":{"gitId":"Austintjh19"},"content":" public boolean markTaskComplete(int index) {","lastModifiedDate":"2024-02-03"},{"lineNumber":139,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"Austintjh19"},"content":" userTasks.get(index).markComplete();","lastModifiedDate":"2024-02-03"},{"lineNumber":141,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"Austintjh19"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"No task with index \" + (index + 1) + \". Enter \u0027list\u0027 to view tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisInvalidIndexException(index + 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":145,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":146,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":147,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":148,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"Austintjh19"},"content":" * Marks a task as incomplete based on its index.","lastModifiedDate":"2024-01-31"},{"lineNumber":150,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":151,"author":{"gitId":"Austintjh19"},"content":" * @param index The index of the task to be marked as incomplete.","lastModifiedDate":"2024-01-31"},{"lineNumber":152,"author":{"gitId":"Austintjh19"},"content":" * @return True if the task is marked as incomplete successfully, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":153,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisInvalidIndexException If index provided is invalid.","lastModifiedDate":"2024-02-05"},{"lineNumber":154,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":155,"author":{"gitId":"Austintjh19"},"content":" public boolean markTaskIncomplete(int index) {","lastModifiedDate":"2024-01-24"},{"lineNumber":156,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":157,"author":{"gitId":"Austintjh19"},"content":" userTasks.get(index).markIncomplete();","lastModifiedDate":"2024-02-03"},{"lineNumber":158,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"Austintjh19"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"No task with index \" + (index + 1) + \". Enter \u0027list\u0027 to view tasks.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisInvalidIndexException(index + 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":162,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":163,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":164,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":166,"author":{"gitId":"Austintjh19"},"content":" * Finds tasks containing the specified search string.","lastModifiedDate":"2024-02-03"},{"lineNumber":167,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":168,"author":{"gitId":"Austintjh19"},"content":" * @param searchString The string to search for within task descriptions.","lastModifiedDate":"2024-02-03"},{"lineNumber":169,"author":{"gitId":"Austintjh19"},"content":" * @return An ArrayList of task details containing the search string.","lastModifiedDate":"2024-02-03"},{"lineNumber":170,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":171,"author":{"gitId":"Austintjh19"},"content":" public ArrayList\u003cString\u003e findTask(String searchString) {","lastModifiedDate":"2024-02-03"},{"lineNumber":172,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e relevantTask \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-03"},{"lineNumber":173,"author":{"gitId":"Austintjh19"},"content":" for (Task task: userTasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":174,"author":{"gitId":"Austintjh19"},"content":" if (task.toString().contains(searchString)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":175,"author":{"gitId":"Austintjh19"},"content":" relevantTask.add(task.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":176,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":177,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":178,"author":{"gitId":"Austintjh19"},"content":" return relevantTask;","lastModifiedDate":"2024-02-03"},{"lineNumber":179,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":180,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":181,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":182,"author":{"gitId":"Austintjh19"},"content":" * Stores user tasks to file storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":183,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":184,"author":{"gitId":"Austintjh19"},"content":" private void storeUserTaskToFileStorage() throws OsirisStorageFileException {","lastModifiedDate":"2024-02-05"},{"lineNumber":185,"author":{"gitId":"Austintjh19"},"content":" for (Task task : userTasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":186,"author":{"gitId":"Austintjh19"},"content":" taskStorage.appendToStorageTxtFile(task.getStringStorageRepresentation());","lastModifiedDate":"2024-02-03"},{"lineNumber":187,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":189,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":190,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":191,"author":{"gitId":"Austintjh19"},"content":" * Loads user tasks from file storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":192,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":193,"author":{"gitId":"Austintjh19"},"content":" private void loadUserTaskFromFileStorage() throws OsirisStorageFileException {","lastModifiedDate":"2024-02-05"},{"lineNumber":194,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e readContents \u003d taskStorage.readStorageTxtFile();","lastModifiedDate":"2024-02-03"},{"lineNumber":195,"author":{"gitId":"Austintjh19"},"content":" for (String readContentString : readContents) {","lastModifiedDate":"2024-01-29"},{"lineNumber":196,"author":{"gitId":"Austintjh19"},"content":" String[] readContentWord \u003d readContentString.split(\"\\\\|\");","lastModifiedDate":"2024-01-29"},{"lineNumber":197,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":198,"author":{"gitId":"Austintjh19"},"content":" if (readContentWord[0].trim().equals(\"T\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":199,"author":{"gitId":"Austintjh19"},"content":" this.addToDoTask(readContentWord[2].trim(), readContentWord[1].trim().equals(\"Y\"));","lastModifiedDate":"2024-01-29"},{"lineNumber":200,"author":{"gitId":"Austintjh19"},"content":" } else if (readContentWord[0].trim().equals(\"D\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":201,"author":{"gitId":"Austintjh19"},"content":" LocalDate deadline \u003d DateTimeFormatters.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":202,"author":{"gitId":"Austintjh19"},"content":" .formatStoredDate(readContentWord[3].trim());","lastModifiedDate":"2024-02-03"},{"lineNumber":203,"author":{"gitId":"Austintjh19"},"content":" this.addDeadlineTask(readContentWord[2].trim(), readContentWord[1].trim().equals(\"Y\"), deadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":204,"author":{"gitId":"Austintjh19"},"content":" } else if (readContentWord[0].trim().equals(\"E\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":205,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime[] dateTimeRange \u003d DateTimeFormatters.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":206,"author":{"gitId":"Austintjh19"},"content":" .formatStoredDateTimeRange(readContentWord[3].trim(), readContentWord[4].trim());","lastModifiedDate":"2024-02-03"},{"lineNumber":207,"author":{"gitId":"Austintjh19"},"content":" this.addEventTask(readContentWord[2].trim(), readContentWord[1].trim().equals(\"Y\"), dateTimeRange[0],","lastModifiedDate":"2024-02-03"},{"lineNumber":208,"author":{"gitId":"Austintjh19"},"content":" dateTimeRange[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":209,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":210,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":211,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":212,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":212}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":" * Represents a to-do task in the Osiris application.","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class ToDoTask extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" * Constructs a ToDoTask object with the specified task name.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" public ToDoTask(String taskName) {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" super(taskName);","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" * Constructs a ToDoTask object with the specified task name and completion status.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" * @param taskName The name of the to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" * @param isCompleted The completion status of the to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" public ToDoTask(String taskName, boolean isCompleted) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" super(taskName, isCompleted);","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the to-do task for storage.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" * @return The string representation of the to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" public String getStringStorageRepresentation() {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"T | %s\", super.getStringStorageRepresentation());","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the string representation of the to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" * @return The string representation of the to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"[T] %s\", super.toString());","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"Austintjh19":47}},{"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 java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":" * The Ui class provides methods for managing user interface interactions and displaying messages.","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" * Outputs introduction messages to the user.","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" * @return The introduction messages as a single string.","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" public String displayIntroductions() {","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" return \"Hello, I\u0027m Osiris.\\nHow may I assist you today?\";","lastModifiedDate":"2024-02-05"},{"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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" * Prompts the user with the Osiris message prompt.","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" * @return The Osiris message prompt as a single string.","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" public String displayOsirisPromptMessage() {","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" return UiOutputs.MESSAGE_OSIRIS_PROMPT;","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" * Outputs a message for unsupported commands.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" * @return The message for unsupported commands as a single string.","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" public String displayUnsupportedCommandMessage() {","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" return UiOutputs.UNSUPPORTED_COMMAND_OUTPUT;","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" * Outputs goodbye messages to the user.","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" * @return The goodbye messages as a single string.","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" public String displayGoodbyes() {","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" return UiOutputs.GOODBYES;","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" * Displays a success notification for adding a to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" * @param taskDetails The details of the added task.","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" * @param taskCount The total count of tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" * @return The success notification for adding a to-do task as a single string.","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" public String displayToDoTaskAdditionNotification(String taskDetails, int taskCount) {","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" String confirmationMessage \u003d String.format(\"Got it. I\u0027ve added this task:%n\");","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" confirmationMessage +\u003d String.format(\" %s%n\", taskDetails);","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" confirmationMessage +\u003d String.format(\"Now you have %d tasks in the list.%n\", taskCount);","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" return confirmationMessage;","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" * Displays a success notification for adding a deadline task.","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" * @param taskDetails The details of the added task.","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" * @param taskCount The total count of tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" * @return The success notification for adding a deadline task as a single string.","lastModifiedDate":"2024-02-05"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" public String displayDeadlineTaskAdditionNotification(String taskDetails, int taskCount) {","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" String confirmationMessage \u003d String.format(\"Got it. I\u0027ve added this task:%n\");","lastModifiedDate":"2024-02-05"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" confirmationMessage +\u003d String.format(\" %s%n\", taskDetails);","lastModifiedDate":"2024-02-05"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" confirmationMessage +\u003d String.format(\"Now you have %d tasks in the list.%n\", taskCount);","lastModifiedDate":"2024-02-05"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" return confirmationMessage;","lastModifiedDate":"2024-02-05"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" * Displays a success notification for adding an event task.","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" * @param taskDetails The details of the added task.","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" * @param taskCount The total count of tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" * @return The success notification for adding an event task as a single string.","lastModifiedDate":"2024-02-05"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" public String displayEventTaskAdditionNotification(String taskDetails, int taskCount) {","lastModifiedDate":"2024-02-05"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" String confirmationMessage \u003d String.format(\"Got it. I\u0027ve added this task:%n\");","lastModifiedDate":"2024-02-05"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" confirmationMessage +\u003d String.format(\" %s%n\", taskDetails);","lastModifiedDate":"2024-02-05"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" confirmationMessage +\u003d String.format(\"Now you have %d tasks in the list.%n\", taskCount);","lastModifiedDate":"2024-02-05"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" return confirmationMessage;","lastModifiedDate":"2024-02-05"},{"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":"","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" * Displays a success notification for marking a task as completed.","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" * @param taskDetails The details of the completed task.","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" * @return The success notification for marking a task as completed as a single string.","lastModifiedDate":"2024-02-05"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" public String displayMarkTaskCompleteNotification(String taskDetails) {","lastModifiedDate":"2024-02-05"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"Nice! I\u0027ve marked this task as done:%n %s\", taskDetails);","lastModifiedDate":"2024-02-05"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"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-31"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" * Displays a success notification for marking a task as incomplete.","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" * @param taskDetails The details of the incomplete task.","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" * @return The success notification for marking a task as incomplete as a single string.","lastModifiedDate":"2024-02-05"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" public String displayMarkTaskIncompleteNotification(String taskDetails) {","lastModifiedDate":"2024-02-05"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" return String.format(\"OK, I\u0027ve marked this task as not done yet:%n %s\", taskDetails);","lastModifiedDate":"2024-02-05"},{"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-31"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" * Displays a success notification for removing a task.","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" * @param taskDetails The details of the removed task.","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" * @param taskCount The total count of tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" * @return The success notification for removing a task as a single string.","lastModifiedDate":"2024-02-05"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":" public String displayDeleteTaskNotification(String taskDetails, int taskCount) {","lastModifiedDate":"2024-02-05"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":" String confirmationMessage \u003d \"Noted. I\u0027ve removed this task:\\n\";","lastModifiedDate":"2024-02-05"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" confirmationMessage +\u003d \" \" + taskDetails + \"\\n\";","lastModifiedDate":"2024-02-05"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":" confirmationMessage +\u003d String.format(\"Now you have %d tasks in the list.%n\", taskCount);","lastModifiedDate":"2024-02-05"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":" return confirmationMessage;","lastModifiedDate":"2024-02-05"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":" * Prints the list of user tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":" * @param taskDetailsList The list containing details of user tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":" * @return The list of user tasks as a single string.","lastModifiedDate":"2024-02-05"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":" public String printUserTasks(ArrayList\u003cString\u003e taskDetailsList) {","lastModifiedDate":"2024-02-05"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":" StringBuilder taskList \u003d new StringBuilder(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-02-05"},{"lineNumber":134,"author":{"gitId":"Austintjh19"},"content":" for (int i \u003d 0; i \u003c taskDetailsList.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"Austintjh19"},"content":" taskList.append(\" \").append(i + 1).append(\". \").append(taskDetailsList.get(i)).append(\"\\n\");","lastModifiedDate":"2024-02-05"},{"lineNumber":136,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"Austintjh19"},"content":" return taskList.toString();","lastModifiedDate":"2024-02-05"},{"lineNumber":138,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":141,"author":{"gitId":"Austintjh19"},"content":" * Prints the details of the found tasks to the user interface.","lastModifiedDate":"2024-02-03"},{"lineNumber":142,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":143,"author":{"gitId":"Austintjh19"},"content":" * @param taskDetailsList The list of task details to be printed.","lastModifiedDate":"2024-01-31"},{"lineNumber":144,"author":{"gitId":"Austintjh19"},"content":" * @return The details of the found tasks as a single string.","lastModifiedDate":"2024-02-05"},{"lineNumber":145,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":146,"author":{"gitId":"Austintjh19"},"content":" public String printFoundUserTasks(ArrayList\u003cString\u003e taskDetailsList) {","lastModifiedDate":"2024-02-05"},{"lineNumber":147,"author":{"gitId":"Austintjh19"},"content":" StringBuilder matchingTasks \u003d new StringBuilder(\"Here are the matching tasks in your list:\\n\");","lastModifiedDate":"2024-02-05"},{"lineNumber":148,"author":{"gitId":"Austintjh19"},"content":" for (int i \u003d 0; i \u003c taskDetailsList.size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"Austintjh19"},"content":" matchingTasks.append(\" \").append(i + 1).append(\". \").append(taskDetailsList.get(i)).append(\"\\n\");","lastModifiedDate":"2024-02-05"},{"lineNumber":150,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":151,"author":{"gitId":"Austintjh19"},"content":" return matchingTasks.toString();","lastModifiedDate":"2024-02-05"},{"lineNumber":152,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":153,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":154,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":155,"author":{"gitId":"Austintjh19"},"content":" * Prints a separator line to the console.","lastModifiedDate":"2024-01-31"},{"lineNumber":156,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":157,"author":{"gitId":"Austintjh19"},"content":" private void printSeparator() {","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"Austintjh19"},"content":" System.out.println(UiOutputs.SEPARATOR);","lastModifiedDate":"2024-02-03"},{"lineNumber":159,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":161}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":" * The UiOutputs class provides static constants for various output messages used in the UI.","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"public class UiOutputs {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":" /** The name of the Osiris chatBot. */","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":" public static final String OSIRIS_NAME \u003d \"osiris\";","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" /** The separator used in UI outputs. */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" public static final String SEPARATOR \u003d \"----------------------------------------\";","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" /** ASCII art representation of the Osiris name. */","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" public static final String[] NAME_ASCII_ART \u003d {","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" \" ,o888888o. d888888o. 8 8888 8 888888888o. 8 8888 d888888o. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" \" . 8888 `88. .`8888:\u0027 `88. 8 8888 8 8888 `88. 8 8888 .`8888:\u0027 `88. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"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":19,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 `8b `8.`8888. 8 8888 8 8888 ,88 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 88 `8.`8888. 8 8888 8 8888. ,88\u0027 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 88 `8.`8888. 8 8888 8 888888888P\u0027 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" \"88 8888 ,8P `8.`8888. 8 8888 8 8888`8b 8 8888 `8.`8888. \",","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"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":24,"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":25,"author":{"gitId":"Austintjh19"},"content":" \" `8888888P\u0027 `Y8888P ,88P\u0027 8 8888 8 8888 `88. 8 8888 `Y8888P ,88P\u0027 \"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" };","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" /** Introduction message displayed to the user. */","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" public static final String INTRODUCTIONS \u003d String.format(\"Hello! I\u0027m %s.\\nWhat can I do for you?\",","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" UiOutputs.OSIRIS_NAME);","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" /** Prompt message for the user to interact with Osiris. */","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" public static final String MESSAGE_OSIRIS_PROMPT \u003d \"Message Osiris ... \";","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" /** Goodbye message displayed to the user. */","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" public static final String GOODBYES \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" /** Message displayed for unsupported commands. */","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" public static final String UNSUPPORTED_COMMAND_OUTPUT \u003d \"Sorry, but I am unable to comprehend the instruction \"","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" + \"at my current development stage. Please enter something else.\";","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Austintjh19":41}},{"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-02-03"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.AddEventTaskCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.AddToDoTaskCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import osiris.exceptions.OsirisInvalidInputException;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import osiris.formatters.DateTimeFormatters;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" * The InputsValidator class provides methods to validate user inputs for various commands.","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"public class InputsValidator {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" /** Singleton instance variable */","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" private static InputsValidator instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" /** Return a new Input Validator instance **/","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" private InputsValidator() {}","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" * Retrieves the singleton instance of InputsValidator.","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" * @return The singleton instance of InputsValidator.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" public static InputsValidator getInstance() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" if (instance \u003d\u003d null) {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" instance \u003d new InputsValidator();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" return instance;","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" * Validates user input for marking a task as completed.","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" * @param userInput The user input string.","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" * @return True if the input is valid; otherwise, false.","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisInvalidInputException If invalid mark command provided.","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" public boolean isMarkTaskCompleteInputValid(String userInput) {","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" String[] inputtedWords \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" if (inputtedWords.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" if (taskIndexString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" return true;","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: \" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisInvalidInputException(\"Invalid task index: \"","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index. Please Reenter\");","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisInvalidInputException(\"Invalid task index. Please Reenter.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" * Validates user input for marking a task as incomplete.","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" * @param userInput The user input string.","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" * @return True if the input is valid; otherwise, false.","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisInvalidInputException If invalid unmark command provided.","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" public boolean isMarkTaskIncompleteInputValid(String userInput) {","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" String[] inputtedWords \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" if (inputtedWords.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" if (taskIndexString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index: \" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisInvalidInputException(\"Invalid task index: \"","lastModifiedDate":"2024-02-05"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index. Please Reenter.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisInvalidInputException(\"Invalid task index. Please Reenter.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" * Validates user input for removing a task.","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" * @param userInput The user input string.","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" * @return True if the input is valid; otherwise, false.","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisInvalidInputException If invalid delete command provided.","lastModifiedDate":"2024-02-05"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" public boolean isDeleteTaskInputValid(String userInput) {","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" String[] inputtedWords \u003d userInput.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" if (inputtedWords.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" String taskIndexString \u003d inputtedWords[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" if (taskIndexString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid task index: \" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisInvalidInputException(\"Invalid task index: \"","lastModifiedDate":"2024-02-05"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" + taskIndexString + \". Please enter a valid integer.\");","lastModifiedDate":"2024-02-05"},{"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(\"Invalid task index. Please Reenter\");","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisInvalidInputException(\"Invalid task index. Please Reenter.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" * Validates user input for adding a to-do task.","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" * @param userInput The user input string.","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" * @return True if the input is valid; otherwise, false.","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisInvalidInputException If invalid todo command provided.","lastModifiedDate":"2024-02-05"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":" public boolean isAddToDoTaskInputValid(String userInput) {","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" String taskName \u003d userInput.substring(AddToDoTaskCommand.COMMAND.length()).trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" if (!taskName.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisInvalidInputException(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":" * Validates user input for adding a deadline task.","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":" * @param userInput The user input string.","lastModifiedDate":"2024-01-31"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" * @return True if the input is valid; otherwise, false.","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisInvalidInputException If invalid deadline command provided.","lastModifiedDate":"2024-02-05"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":" public boolean isAddDeadlineTaskInputValid(String userInput) {","lastModifiedDate":"2024-02-03"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":" int byIndex \u003d userInput.indexOf(\"/by\");","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" if (byIndex !\u003d -1) {","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":" String taskName \u003d userInput.substring(AddDeadlineTaskCommand.COMMAND.length(), byIndex - 1).trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"Austintjh19"},"content":" if (!taskName.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":135,"author":{"gitId":"Austintjh19"},"content":" String deadline \u003d userInput.substring(byIndex + \"/by\".length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":136,"author":{"gitId":"Austintjh19"},"content":" String[] deadlineParts \u003d deadline.split(\"-\");","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"Austintjh19"},"content":" if (deadlineParts.length \u003d\u003d 3) {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"Austintjh19"},"content":" String dayStr \u003d deadlineParts[0];","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"Austintjh19"},"content":" String monthStr \u003d deadlineParts[1];","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"Austintjh19"},"content":" String yearStr \u003d deadlineParts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":141,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"Austintjh19"},"content":" if (isValidDay(dayStr) \u0026\u0026 isValidMonth(monthStr) \u0026\u0026 isValidYear(yearStr)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid day, month, or year in deadline. Please use dd-MM-yyyy. \");","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisInvalidInputException(\"Invalid day, month, or year in deadline. \"","lastModifiedDate":"2024-02-05"},{"lineNumber":147,"author":{"gitId":"Austintjh19"},"content":" + \"Please use dd-MM-yyyy. \");","lastModifiedDate":"2024-02-05"},{"lineNumber":148,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid deadline format. Please use dd-MM-yyyy.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisInvalidInputException(\"Invalid deadline format. Please use dd-MM-yyyy.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":152,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":153,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisInvalidInputException(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":156,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid input format. Please Reenter. Ensure \u0027/by\u0027 is specified for a Deadline Task. \"","lastModifiedDate":"2024-02-03"},{"lineNumber":159,"author":{"gitId":"Austintjh19"},"content":" + \"E.g. deadline Do Homework /by dd-MM-yyyy .\");","lastModifiedDate":"2024-02-03"},{"lineNumber":160,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisInvalidInputException(\"Invalid input format. Please Reenter. \"","lastModifiedDate":"2024-02-05"},{"lineNumber":161,"author":{"gitId":"Austintjh19"},"content":" + \"Ensure \u0027/by\u0027 is specified for a Deadline Task. \"","lastModifiedDate":"2024-02-05"},{"lineNumber":162,"author":{"gitId":"Austintjh19"},"content":" + \"E.g. deadline Do Homework /by dd-MM-yyyy .\");","lastModifiedDate":"2024-02-05"},{"lineNumber":163,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":167,"author":{"gitId":"Austintjh19"},"content":" * Validates user input for adding an event task.","lastModifiedDate":"2024-01-31"},{"lineNumber":168,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":169,"author":{"gitId":"Austintjh19"},"content":" * @param userInput The user input string.","lastModifiedDate":"2024-01-31"},{"lineNumber":170,"author":{"gitId":"Austintjh19"},"content":" * @return True if the input is valid; otherwise, false.","lastModifiedDate":"2024-01-31"},{"lineNumber":171,"author":{"gitId":"Austintjh19"},"content":" * @throws OsirisInvalidInputException If invalid event command provided.","lastModifiedDate":"2024-02-05"},{"lineNumber":172,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":173,"author":{"gitId":"Austintjh19"},"content":" public boolean isAddEventTaskInputValid(String userInput) {","lastModifiedDate":"2024-02-03"},{"lineNumber":174,"author":{"gitId":"Austintjh19"},"content":" int fromIndex \u003d userInput.indexOf(\"/from\");","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"Austintjh19"},"content":" int toIndex \u003d userInput.indexOf(\"/to\");","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":177,"author":{"gitId":"Austintjh19"},"content":" if (fromIndex !\u003d -1 \u0026\u0026 toIndex !\u003d -1 \u0026\u0026 fromIndex \u003c toIndex) {","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"Austintjh19"},"content":" String taskName \u003d userInput.substring(AddEventTaskCommand.COMMAND.length(), fromIndex - 1).trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":179,"author":{"gitId":"Austintjh19"},"content":" if (!taskName.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"Austintjh19"},"content":" String startDateTime \u003d userInput.substring(fromIndex + \"/from\".length(), toIndex - 1).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"Austintjh19"},"content":" String endDateTime \u003d userInput.substring(toIndex + \"/to\".length()).trim();","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"Austintjh19"},"content":" if (isValidDateTime(startDateTime) \u0026\u0026 isValidDateTime(endDateTime)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":183,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":184,"author":{"gitId":"Austintjh19"},"content":" if (DateTimeFormatters.getInstance().formatUserInputDateTime(startDateTime)","lastModifiedDate":"2024-02-03"},{"lineNumber":185,"author":{"gitId":"Austintjh19"},"content":" .isBefore((DateTimeFormatters.getInstance().formatUserInputDateTime(endDateTime)))) {","lastModifiedDate":"2024-02-03"},{"lineNumber":186,"author":{"gitId":"Austintjh19"},"content":" return true;","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":188,"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":189,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisInvalidInputException(\"Invalid date-time order. \"","lastModifiedDate":"2024-02-05"},{"lineNumber":190,"author":{"gitId":"Austintjh19"},"content":" + \"Start date/time should be before end date/time.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":191,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":192,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":193,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid date-time format. Please use dd-MM-yyyy HHmm.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisInvalidInputException(\"Invalid date-time format. Please use dd-MM-yyyy HHmm.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":196,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":197,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":198,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":199,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisInvalidInputException(\"Task name not provided. Please Reenter.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":200,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":201,"author":{"gitId":"Austintjh19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"Austintjh19"},"content":" System.out.println(\"Invalid input format. Please Reenter. \"","lastModifiedDate":"2024-02-03"},{"lineNumber":203,"author":{"gitId":"Austintjh19"},"content":" + \"Ensure \u0027/from\u0027 \u0026 \u0027/to\u0027 is specified for a Event Task. \"","lastModifiedDate":"2024-02-03"},{"lineNumber":204,"author":{"gitId":"Austintjh19"},"content":" + \"E.g. event School Meeting /from dd-MM-yyyy HHmm /to dd-MM-yyyy HHmm. Please Reenter.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":205,"author":{"gitId":"Austintjh19"},"content":" throw new OsirisInvalidInputException(\"Invalid input format. Please Reenter. \"","lastModifiedDate":"2024-02-05"},{"lineNumber":206,"author":{"gitId":"Austintjh19"},"content":" + \"Ensure \u0027/from\u0027 \u0026 \u0027/to\u0027 is specified for a Event Task. \"","lastModifiedDate":"2024-02-05"},{"lineNumber":207,"author":{"gitId":"Austintjh19"},"content":" + \"E.g. event School Meeting /from dd-MM-yyyy HHmm /to dd-MM-yyyy HHmm. Please Reenter.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":208,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":209,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"Austintjh19"},"content":" // Private helper methods for validation \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-31"},{"lineNumber":212,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":213,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":214,"author":{"gitId":"Austintjh19"},"content":" * Validates if the given day string is a valid day of the month.","lastModifiedDate":"2024-02-03"},{"lineNumber":215,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":216,"author":{"gitId":"Austintjh19"},"content":" * @param dayStr The string representation of the day.","lastModifiedDate":"2024-02-03"},{"lineNumber":217,"author":{"gitId":"Austintjh19"},"content":" * @return true if the day is valid, otherwise false.","lastModifiedDate":"2024-02-03"},{"lineNumber":218,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":219,"author":{"gitId":"Austintjh19"},"content":" private boolean isValidDay(String dayStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":220,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":221,"author":{"gitId":"Austintjh19"},"content":" int day \u003d Integer.parseInt(dayStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":222,"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":223,"author":{"gitId":"Austintjh19"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":224,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":226,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":229,"author":{"gitId":"Austintjh19"},"content":" * Validates if the given month string is a valid month of the year.","lastModifiedDate":"2024-02-03"},{"lineNumber":230,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":231,"author":{"gitId":"Austintjh19"},"content":" * @param monthStr The string representation of the month.","lastModifiedDate":"2024-02-03"},{"lineNumber":232,"author":{"gitId":"Austintjh19"},"content":" * @return true if the month is valid, otherwise false.","lastModifiedDate":"2024-02-03"},{"lineNumber":233,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":234,"author":{"gitId":"Austintjh19"},"content":" private boolean isValidMonth(String monthStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":235,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":236,"author":{"gitId":"Austintjh19"},"content":" int month \u003d Integer.parseInt(monthStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"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":238,"author":{"gitId":"Austintjh19"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":239,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":240,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":241,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":244,"author":{"gitId":"Austintjh19"},"content":" * Validates if the given year string is a valid year.","lastModifiedDate":"2024-02-03"},{"lineNumber":245,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":246,"author":{"gitId":"Austintjh19"},"content":" * @param yearStr The string representation of the year.","lastModifiedDate":"2024-02-03"},{"lineNumber":247,"author":{"gitId":"Austintjh19"},"content":" * @return true if the year is valid, otherwise false.","lastModifiedDate":"2024-02-03"},{"lineNumber":248,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":249,"author":{"gitId":"Austintjh19"},"content":" private boolean isValidYear(String yearStr) {","lastModifiedDate":"2024-01-30"},{"lineNumber":250,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":251,"author":{"gitId":"Austintjh19"},"content":" int year \u003d Integer.parseInt(yearStr);","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"Austintjh19"},"content":" return year \u003e 0 \u0026\u0026 yearStr.length() \u003d\u003d 4;","lastModifiedDate":"2024-01-30"},{"lineNumber":253,"author":{"gitId":"Austintjh19"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":258,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":259,"author":{"gitId":"Austintjh19"},"content":" * Validates if the given date-time string is in a valid format and represents a valid date and time.","lastModifiedDate":"2024-02-03"},{"lineNumber":260,"author":{"gitId":"Austintjh19"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":261,"author":{"gitId":"Austintjh19"},"content":" * @param dateTime The string representation of the date and time.","lastModifiedDate":"2024-02-03"},{"lineNumber":262,"author":{"gitId":"Austintjh19"},"content":" * @return true if the date-time is valid, otherwise false.","lastModifiedDate":"2024-02-03"},{"lineNumber":263,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":264,"author":{"gitId":"Austintjh19"},"content":" private boolean isValidDateTime(String dateTime) {","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"Austintjh19"},"content":" String[] dateTimeParts \u003d dateTime.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":268,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":269,"author":{"gitId":"Austintjh19"},"content":" if (dateTimeParts.length !\u003d 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":270,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":271,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":272,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":273,"author":{"gitId":"Austintjh19"},"content":" String[] dateParts \u003d dateTimeParts[0].split(\"-\");","lastModifiedDate":"2024-01-30"},{"lineNumber":274,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":275,"author":{"gitId":"Austintjh19"},"content":" if (dateParts.length !\u003d 3) {","lastModifiedDate":"2024-01-30"},{"lineNumber":276,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":277,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":278,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":279,"author":{"gitId":"Austintjh19"},"content":" int hour \u003d Integer.parseInt(dateTimeParts[1].substring(0, 2));","lastModifiedDate":"2024-01-30"},{"lineNumber":280,"author":{"gitId":"Austintjh19"},"content":" int minute \u003d Integer.parseInt(dateTimeParts[1].substring(2));","lastModifiedDate":"2024-01-30"},{"lineNumber":281,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":282,"author":{"gitId":"Austintjh19"},"content":" return isValidDay(dateParts[0]) \u0026\u0026 isValidMonth(dateParts[1]) \u0026\u0026 isValidYear(dateParts[2])","lastModifiedDate":"2024-01-31"},{"lineNumber":283,"author":{"gitId":"Austintjh19"},"content":" \u0026\u0026 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-31"},{"lineNumber":284,"author":{"gitId":"Austintjh19"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":285,"author":{"gitId":"Austintjh19"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":286,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":287,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":288,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Austintjh19":288}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"\u003c?import javafx.scene.text.Text?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" \u003cHBox styleClass\u003d\"dialogBox\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" \u003cText fx:id\u003d\"dialog\" text\u003d\"Label\"/\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"50.0\" fitWidth\u003d\"50.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"/\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" \u003cURL value\u003d\"@style.css\"/\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"Austintjh19":22}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"785.0\" prefWidth\u003d\"475.0\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"osiris.MainWindow\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutX\u003d\"10.0\" layoutY\u003d\"733.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"360.0\" AnchorPane.bottomAnchor\u003d\"11.0\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"385.0\" layoutY\u003d\"733.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"725.0\" prefWidth\u003d\"475.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"725.0\" prefWidth\u003d\"460.0\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"Austintjh19":19}},{"path":"src/test/java/osiris/formatters/DateTimeFormattersTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris.formatters;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"import osiris.exceptions.OsirisException;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":" * Unit tests for the DateTimeFormatters class.","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"public class DateTimeFormattersTest {","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" * Tests to validate the formatting of user input date strings into LocalDate objects.","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" public void formatUserInputDate_validInput_localDateReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" LocalDate date \u003d DateTimeFormatters.getInstance().formatUserInputDate(\"01-01-2024\");","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" assertNotNull(date);","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" * Tests to validate handling of invalid user input date strings, expecting an exception.","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" public void formatUserInputDate_invalidInput_throwException() {","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" LocalDate date \u003d DateTimeFormatters.getInstance().formatUserInputDate(\"invalid\");","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" } catch (OsirisException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" assertEquals(\"Failed to parse the date-time string: invalid\"","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" + \"\\nPlease try /by dd-mm-yyyy for a deadline tasks.\", e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" * Tests to validate the formatting of user input date-time strings into LocalDateTime objects.","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" public void formatUserInputDateTime_validInput_localDateTimeReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime dateTime \u003d DateTimeFormatters.getInstance().formatUserInputDateTime(\"01-01-2024 2359\");","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" assertNotNull(dateTime);","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" * Tests to validate handling of invalid user input date-time strings, expecting an exception.","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" public void formatUserInputDateTime_invalidInput_throwException() {","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime dateTime \u003d DateTimeFormatters.getInstance().formatUserInputDateTime(\"invalid\");","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" } catch (OsirisException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" assertEquals(\"Failed to parse the date-time string: invalid\"","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" + \"\\nPlease provide date time range \u0027dd-MM-yyyy HHmm\u0027 format.\", e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" * Tests to validate the formatting of user input date-time range strings.","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" public void formatUserInputDateTimeRange_validInput_localDateTimeArrReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime[] dateTime \u003d DateTimeFormatters.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" .formatUserInputDateTimeRange(\"01-01-2024 0000\", \"01-01-2024 2359\");","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" assertNotNull(dateTime);","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" * Tests to validate handling of invalid user input date-time range strings, expecting an exception.","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" public void formatUserInputDateTimeRange_invalidInput_throwException() {","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime[] dateTime \u003d DateTimeFormatters.getInstance()","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" .formatUserInputDateTimeRange(\"invalid\", \"invalid\");","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" } catch (OsirisException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" assertEquals(\"Failed to parse the date time range.\"","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" + \"\\nPlease provide date time range \u0027dd-MM-yyyy HHmm\u0027 format.\", e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" * Tests to validate the formatting of stored date strings into LocalDate objects.","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" public void formatStoredDate_validInput_localDateReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" LocalDate date \u003d DateTimeFormatters.getInstance().formatStoredDate(\"Jan 01 2024\");","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" assertNotNull(date);","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" * Tests to validate handling of invalid stored date strings, expecting an exception.","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" public void formatStoredDate_invalidInput_throwException() {","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" LocalDate date \u003d DateTimeFormatters.getInstance().formatStoredDate(\"invalid\");","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" } catch (OsirisException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" assertEquals(\"Unable to parse Date Times stored. \"","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" + \"Storage File may have been corrupted.\", e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" * Tests to validate the formatting of stored date-time strings into LocalDateTime objects.","lastModifiedDate":"2024-02-07"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" public void formatStoredDateTime_validInput_localDateTimeReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime dateTime \u003d DateTimeFormatters.getInstance()","lastModifiedDate":"2024-02-03"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" .formatStoredDateTime(\"Jan 01 2024 8:00 AM\");","lastModifiedDate":"2024-02-03"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" assertNotNull(dateTime);","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":" * Tests to validate handling of invalid stored date-time strings, expecting an exception.","lastModifiedDate":"2024-02-07"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":" public void formatStoredDateTime_invalidInput_throwException() {","lastModifiedDate":"2024-02-07"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime dateTime \u003d DateTimeFormatters.getInstance().formatStoredDateTime(\"invalid\");","lastModifiedDate":"2024-02-03"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" } catch (OsirisException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":" assertEquals(\"Unable to parse Date Times stored. \"","lastModifiedDate":"2024-02-07"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":" + \"Storage File may have been corrupted.\", e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":" * Tests to validate the formatting of stored date-time range strings into an array of LocalDateTime objects.","lastModifiedDate":"2024-02-07"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"Austintjh19"},"content":" public void formatStoredDateTimeRange_validInput_localDateTimeReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":136,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime[] dateTime \u003d DateTimeFormatters.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":137,"author":{"gitId":"Austintjh19"},"content":" .formatStoredDateTimeRange(\"Jan 01 2024 8:00 AM\", \"Jan 01 2024 10:00 AM\");","lastModifiedDate":"2024-02-03"},{"lineNumber":138,"author":{"gitId":"Austintjh19"},"content":" assertNotNull(dateTime);","lastModifiedDate":"2024-01-31"},{"lineNumber":139,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":140,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":141,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":142,"author":{"gitId":"Austintjh19"},"content":" * Tests to validate handling of invalid stored date-time range strings, expecting an exception.","lastModifiedDate":"2024-02-07"},{"lineNumber":143,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":144,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":145,"author":{"gitId":"Austintjh19"},"content":" public void formatStoredDateTimeRange_invalidInput_nullReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":146,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":147,"author":{"gitId":"Austintjh19"},"content":" LocalDateTime[] dateTime \u003d DateTimeFormatters.getInstance()","lastModifiedDate":"2024-02-07"},{"lineNumber":148,"author":{"gitId":"Austintjh19"},"content":" .formatStoredDateTimeRange(\"invalid\", \"invalid\");","lastModifiedDate":"2024-02-07"},{"lineNumber":149,"author":{"gitId":"Austintjh19"},"content":" } catch (OsirisException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":150,"author":{"gitId":"Austintjh19"},"content":" assertEquals(\"Unable to parse Date Times stored. \"","lastModifiedDate":"2024-02-07"},{"lineNumber":151,"author":{"gitId":"Austintjh19"},"content":" + \"Storage File may have been corrupted.\", e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":152,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":153,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":154,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"Austintjh19":154}},{"path":"src/test/java/osiris/interpreters/UserInputInterpreterTest.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-30"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import static org.junit.jupiter.api.Assertions.assertInstanceOf;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.AddDeadlineTaskCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.AddEventTaskCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.AddToDoTaskCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.Command;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.DeleteTaskCommand;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.MarkTaskCompleteCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.MarkTaskIncompleteCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.PrintUserTasksCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.TerminateChatCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":"import osiris.commands.UnsupportedCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":"import osiris.exceptions.OsirisException;","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" * Unit tests for the UserInputInterpreter class.","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":"public class UserInputInterpreterTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" * Tests interpreting the \"bye\" command.","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_bye_terminateChatCommandReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"bye\");","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(TerminateChatCommand.class, command);","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" * Tests interpreting the \"list\" command.","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_list_printUserTasksCommandReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"list\");","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(PrintUserTasksCommand.class, command);","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" * Tests interpreting the \"mark\" command.","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_mark_markTaskCompleteCommandReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"mark 1\");","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(MarkTaskCompleteCommand.class, command);","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" * Tests interpreting the \"unmark\" command.","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_unmark_markTaskIncompleteCommandReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"unmark 1\");","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(MarkTaskIncompleteCommand.class, command);","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" * Tests interpreting the \"delete\" command.","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_delete_removeTaskCommandReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"delete 1\");","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(DeleteTaskCommand.class, command);","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" * Tests interpreting the \"todo\" command.","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_todo_addToDoTaskCommandReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"todo Test\");","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(AddToDoTaskCommand.class, command);","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" * Tests interpreting the \"deadline\" command.","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_deadline_addDeadlineTaskCommandReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"deadline Test /by 01-01-2024\");","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(AddDeadlineTaskCommand.class, command);","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" * Tests interpreting the \"event\" command.","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_event_addEventTaskCommandReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" .interpretUserInput(\"event Test /from 01-01-2024 0000 /to 01-01-2024 2359\");","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(AddEventTaskCommand.class, command);","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" * Tests interpreting unsupported commands.","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_invalid_unsupportedCommandReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"Invalid.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" assertInstanceOf(UnsupportedCommand.class, command);","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":" * Tests interpreting commands with no task name. Expects an exception","lastModifiedDate":"2024-02-07"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":" public void interpretUserInput_exceptions_throwException() {","lastModifiedDate":"2024-02-07"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"todo\");","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" } catch (OsirisException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" assertEquals(\"Task name not provided. Please Reenter.\", e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"deadline\");","lastModifiedDate":"2024-02-07"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":" } catch (OsirisException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" assertEquals(\"Invalid input format. Please Reenter. \"","lastModifiedDate":"2024-02-07"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":" + \"Ensure \u0027/by\u0027 is specified for a Deadline Task. \"","lastModifiedDate":"2024-02-07"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":" + \"E.g. deadline Do Homework /by dd-MM-yyyy .\", e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" Command command \u003d UserInputInterpreter.getInstance().interpretUserInput(\"event\");","lastModifiedDate":"2024-02-07"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":" } catch (OsirisException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":" assertEquals(\"Invalid input format. Please Reenter. \"","lastModifiedDate":"2024-02-07"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":" + \"Ensure \u0027/from\u0027 \u0026 \u0027/to\u0027 is specified for a Event Task. \"","lastModifiedDate":"2024-02-07"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":" + \"E.g. event School Meeting /from dd-MM-yyyy HHmm /to dd-MM-yyyy HHmm. \"","lastModifiedDate":"2024-02-07"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":" + \"Please Reenter.\", e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"Austintjh19":133}},{"path":"src/test/java/osiris/storage/StorageTxtFileTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris.storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import java.io.File;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" * Unit tests for TxtFileStorage class.","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":"public class StorageTxtFileTest {","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":" * Tests initialise storage file function.","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" public void initialiseStorageTxtFile() {","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" StorageTxtFile storage \u003d new StorageTxtFile(\"Test.txt\");","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" storage.initialiseStorageTxtFile();","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" File testFile \u003d new File(\"Test.txt\");","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" assertTrue(testFile.exists());","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" testFile.delete();","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" * Tests storage file exists function.","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" public void storageFileExistTest() {","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" File testFile \u003d new File(\"Test.txt\");","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" testFile.createNewFile();","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" StorageTxtFile storage \u003d new StorageTxtFile(\"Test.txt\");","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" assertTrue(storage.doesStorageFileExist());","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" testFile.delete();","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" assertFalse(storage.doesStorageFileExist());","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" * Tests reading content from the text file storage function.","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" public void readTxtFileStorageTest() {","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" File testFile \u003d new File(\"Test.txt\");","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(\"Test.txt\", true);","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e testInputs \u003d new ArrayList\u003c\u003e(Arrays.asList(\"ABC\", \"123\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" for (String testStr: testInputs) {","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":" fw.write(testStr + \"\\n\");","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" StorageTxtFile storage \u003d new StorageTxtFile(\"Test.txt\");","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e readContents \u003d storage.readStorageTxtFile();","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" boolean valid \u003d true;","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" int i \u003d 0;","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" if (testInputs.size() !\u003d readContents.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" valid \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":" while (valid \u0026\u0026 i \u003c testInputs.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" if (!testInputs.get(i).equals(readContents.get(i))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" valid \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" i \u003d i + 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" assertTrue(valid);","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" testFile.delete();","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" System.err.println(e);","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" * Tests for appending content to the text file storage.","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" public void appendToTxtFileStorageTest() {","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" File testFile \u003d new File(\"Test.txt\");","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e testInputs \u003d new ArrayList\u003c\u003e(Arrays.asList(\"ABC\", \"123\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":" StorageTxtFile storage \u003d new StorageTxtFile(\"Test.txt\");","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" for (String testInput: testInputs) {","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" storage.appendToStorageTxtFile(testInput);","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e readContents \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" Scanner scanner \u003d new Scanner(testFile);","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" readContents.add(scanner.nextLine());","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" boolean valid \u003d true;","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":" int i \u003d 0;","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" if (testInputs.size() !\u003d readContents.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" valid \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" while (valid \u0026\u0026 i \u003c testInputs.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":" if (!testInputs.get(i).equals(readContents.get(i))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":" valid \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" i \u003d i + 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":" assertTrue(valid);","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":" testFile.delete();","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" System.err.println(e);","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":" File testFile \u003d new File(\"Test.txt\");","lastModifiedDate":"2024-01-31"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":" testFile.delete();","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":" * Tests for clearing content from the text file storage.","lastModifiedDate":"2024-02-07"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"Austintjh19"},"content":" public void clearTxtFileStorage() {","lastModifiedDate":"2024-01-31"},{"lineNumber":136,"author":{"gitId":"Austintjh19"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":137,"author":{"gitId":"Austintjh19"},"content":" File testFile \u003d new File(\"Test.txt\");","lastModifiedDate":"2024-01-31"},{"lineNumber":138,"author":{"gitId":"Austintjh19"},"content":" StorageTxtFile storage \u003d new StorageTxtFile(\"Test.txt\");","lastModifiedDate":"2024-02-03"},{"lineNumber":139,"author":{"gitId":"Austintjh19"},"content":" FileWriter fw \u003d new FileWriter(\"Test.txt\", true);","lastModifiedDate":"2024-01-31"},{"lineNumber":140,"author":{"gitId":"Austintjh19"},"content":" ArrayList\u003cString\u003e testInputs \u003d new ArrayList\u003c\u003e(Arrays.asList(\"ABC\", \"123\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":141,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":142,"author":{"gitId":"Austintjh19"},"content":" for (String testStr: testInputs) {","lastModifiedDate":"2024-01-31"},{"lineNumber":143,"author":{"gitId":"Austintjh19"},"content":" fw.write(testStr + \"\\n\");","lastModifiedDate":"2024-01-31"},{"lineNumber":144,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":145,"author":{"gitId":"Austintjh19"},"content":" fw.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":146,"author":{"gitId":"Austintjh19"},"content":" storage.clearStorageTxtFile();","lastModifiedDate":"2024-02-03"},{"lineNumber":147,"author":{"gitId":"Austintjh19"},"content":" int i \u003d 0;","lastModifiedDate":"2024-01-31"},{"lineNumber":148,"author":{"gitId":"Austintjh19"},"content":" Scanner scanner \u003d new Scanner(testFile);","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"Austintjh19"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":150,"author":{"gitId":"Austintjh19"},"content":" i \u003d i + 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":151,"author":{"gitId":"Austintjh19"},"content":" scanner.nextLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":152,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":153,"author":{"gitId":"Austintjh19"},"content":" assert (i \u003d\u003d 0);","lastModifiedDate":"2024-01-31"},{"lineNumber":154,"author":{"gitId":"Austintjh19"},"content":" testFile.delete();","lastModifiedDate":"2024-01-31"},{"lineNumber":155,"author":{"gitId":"Austintjh19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":156,"author":{"gitId":"Austintjh19"},"content":" System.err.println(e);","lastModifiedDate":"2024-01-31"},{"lineNumber":157,"author":{"gitId":"Austintjh19"},"content":" File testFile \u003d new File(\"Test.txt\");","lastModifiedDate":"2024-01-31"},{"lineNumber":158,"author":{"gitId":"Austintjh19"},"content":" testFile.delete();","lastModifiedDate":"2024-01-31"},{"lineNumber":159,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":160,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":161,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"Austintjh19":161}},{"path":"src/test/java/osiris/validation/InputsValidatorTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Austintjh19"},"content":"package osiris.validation;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"Austintjh19"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Austintjh19"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"Austintjh19"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"Austintjh19"},"content":"import osiris.exceptions.OsirisInvalidInputException;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Austintjh19"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"Austintjh19"},"content":" * Unit tests for InputsValidator class.","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"Austintjh19"},"content":"public class InputsValidatorTest {","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"Austintjh19"},"content":" * Tests the validity of input for marking a task as complete.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"Austintjh19"},"content":" public void isMarkTaskCompleteInputValid_validInput_trueReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance().isMarkTaskCompleteInputValid(\"mark 1\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"Austintjh19"},"content":" * Tests invalid inputs for marking a task as complete.","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"Austintjh19"},"content":" public void isMarkTaskCompleteInputValid_invalidInputs_throwException() {","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, ()-\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isMarkTaskCompleteInputValid(\"mark \"); });","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, ()-\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isMarkTaskCompleteInputValid(\"mark 1.5\"); });","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, ()-\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isMarkTaskCompleteInputValid(\"mark a\"); });","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"Austintjh19"},"content":" * Tests the validity of input for marking a task as incomplete.","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"Austintjh19"},"content":" public void isMarkTaskIncompleteInputValid_validInput_trueReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance().isMarkTaskIncompleteInputValid(\"unmark 1\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"Austintjh19"},"content":" * Tests the validity of input for marking a task as incomplete.","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"Austintjh19"},"content":" public void isMarkTaskIncompleteInputValid_invalidInput_throwException() {","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, ()-\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isMarkTaskIncompleteInputValid(\"unmark \"); });","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, ()-\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isMarkTaskIncompleteInputValid(\"unmark 1.5\"); });","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, ()-\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isMarkTaskIncompleteInputValid(\"unmark a\"); });","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"Austintjh19"},"content":" * Tests the validity of input for deleting a task.","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"Austintjh19"},"content":" public void isDeleteTaskInputValid_validInput_trueReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance().isDeleteTaskInputValid(\"delete 1\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"Austintjh19"},"content":" * Tests invalid input for deleting a task.","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"Austintjh19"},"content":" public void isDeleteTaskInputValid_invalidInput_throwException() {","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, ()-\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isDeleteTaskInputValid(\"delete \"); });","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, ()-\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isDeleteTaskInputValid(\"delete 1.5\"); });","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, ()-\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isDeleteTaskInputValid(\"delete a\"); });","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"Austintjh19"},"content":" * Tests the validity of input for adding a ToDo task.","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"Austintjh19"},"content":" public void isAddToDoTaskInputValid_validInput_trueReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance().isAddToDoTaskInputValid(\"todo 1\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance().isAddToDoTaskInputValid(\"todo Task 1\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance().isAddToDoTaskInputValid(\"todo Valid Task 1\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"Austintjh19"},"content":" * Tests invalid input for adding a ToDo task.","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"Austintjh19"},"content":" public void isAddToDoTaskInputValid_invalidInput_throwException() {","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, ()-\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isAddToDoTaskInputValid(\"todo\"); });","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, ()-\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isDeleteTaskInputValid(\"todo \"); });","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"Austintjh19"},"content":" * Tests the validity of input for adding a deadline task.","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"Austintjh19"},"content":" public void isAddDeadlineTaskInputValid_validInput_trueReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline 1 /by 01-01-2024\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task /by 01-01-2024\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task 1 /by 01-01-2024\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"Austintjh19"},"content":" * Tests invalid input for adding a deadline task.","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"Austintjh19"},"content":" public void isAddDeadlineTaskInputValid_invalidInput_throwException() {","lastModifiedDate":"2024-02-07"},{"lineNumber":114,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, () -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":115,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task\");","lastModifiedDate":"2024-02-07"},{"lineNumber":116,"author":{"gitId":"Austintjh19"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":117,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, () -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":118,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task /by 01/01/2024\");","lastModifiedDate":"2024-02-07"},{"lineNumber":119,"author":{"gitId":"Austintjh19"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":120,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, () -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":121,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline /by 01-01-2024\");","lastModifiedDate":"2024-02-07"},{"lineNumber":122,"author":{"gitId":"Austintjh19"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":123,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, () -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":124,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task /by 2024-01-01\");","lastModifiedDate":"2024-02-07"},{"lineNumber":125,"author":{"gitId":"Austintjh19"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":126,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, () -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":127,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task /by 32-01-2024\");","lastModifiedDate":"2024-02-07"},{"lineNumber":128,"author":{"gitId":"Austintjh19"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":129,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, () -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":130,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task /by 01-13-2024\");","lastModifiedDate":"2024-02-07"},{"lineNumber":131,"author":{"gitId":"Austintjh19"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":132,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, () -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":133,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task /by 1-01-2024\");","lastModifiedDate":"2024-02-07"},{"lineNumber":134,"author":{"gitId":"Austintjh19"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":135,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, () -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":136,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task /by 01-1-2024\");","lastModifiedDate":"2024-02-07"},{"lineNumber":137,"author":{"gitId":"Austintjh19"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":138,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, () -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":139,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task /by 1-1-2024\");","lastModifiedDate":"2024-02-07"},{"lineNumber":140,"author":{"gitId":"Austintjh19"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":141,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, () -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":142,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task 01-01-2024\");","lastModifiedDate":"2024-02-07"},{"lineNumber":143,"author":{"gitId":"Austintjh19"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":144,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, () -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":145,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance().isAddDeadlineTaskInputValid(\"deadline Task by 01-01-2024\");","lastModifiedDate":"2024-02-07"},{"lineNumber":146,"author":{"gitId":"Austintjh19"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":147,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":148,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":150,"author":{"gitId":"Austintjh19"},"content":" * Tests the validity of input for adding an event task.","lastModifiedDate":"2024-02-03"},{"lineNumber":151,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":152,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":153,"author":{"gitId":"Austintjh19"},"content":" public void isAddEventTaskInputValid_validInput_trueReturned() {","lastModifiedDate":"2024-02-03"},{"lineNumber":154,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":155,"author":{"gitId":"Austintjh19"},"content":" .isAddEventTaskInputValid(\"event 2 /from 01-01-2024 1200 /to 01-01-2024 1300\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":156,"author":{"gitId":"Austintjh19"},"content":" assertTrue(InputsValidator.getInstance()","lastModifiedDate":"2024-01-31"},{"lineNumber":157,"author":{"gitId":"Austintjh19"},"content":" .isAddEventTaskInputValid(\"event School Meeting /from 01-01-2024 1200 /to 01-01-2024 1300\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":158,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":159,"author":{"gitId":"Austintjh19"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":160,"author":{"gitId":"Austintjh19"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":161,"author":{"gitId":"Austintjh19"},"content":" * Tests invalid input for adding an event task.","lastModifiedDate":"2024-02-03"},{"lineNumber":162,"author":{"gitId":"Austintjh19"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":163,"author":{"gitId":"Austintjh19"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":164,"author":{"gitId":"Austintjh19"},"content":" public void isAddEventTaskInputValid_invalidInput_throwException() {","lastModifiedDate":"2024-02-07"},{"lineNumber":165,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, () -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":166,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance()","lastModifiedDate":"2024-02-07"},{"lineNumber":167,"author":{"gitId":"Austintjh19"},"content":" .isAddEventTaskInputValid(\"event /from 01-01-2024 1200 /to 01-01-2024 1300\");","lastModifiedDate":"2024-02-07"},{"lineNumber":168,"author":{"gitId":"Austintjh19"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":169,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, () -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":170,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance()","lastModifiedDate":"2024-02-07"},{"lineNumber":171,"author":{"gitId":"Austintjh19"},"content":" .isAddEventTaskInputValid(\"event School Meeting from 01-01-2024 1200 to 01-01-2024 1300\");","lastModifiedDate":"2024-02-07"},{"lineNumber":172,"author":{"gitId":"Austintjh19"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":173,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, () -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":174,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance()","lastModifiedDate":"2024-02-07"},{"lineNumber":175,"author":{"gitId":"Austintjh19"},"content":" .isAddEventTaskInputValid(\"event School Meeting /from 01-01-2024 /to 01-01-2024\");","lastModifiedDate":"2024-02-07"},{"lineNumber":176,"author":{"gitId":"Austintjh19"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":177,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, () -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":178,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance()","lastModifiedDate":"2024-02-07"},{"lineNumber":179,"author":{"gitId":"Austintjh19"},"content":" .isAddEventTaskInputValid(\"event School Meeting /from 01-01-2024 1300 /to 01-01-2024 1200\");","lastModifiedDate":"2024-02-07"},{"lineNumber":180,"author":{"gitId":"Austintjh19"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":181,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, () -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":182,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance()","lastModifiedDate":"2024-02-07"},{"lineNumber":183,"author":{"gitId":"Austintjh19"},"content":" .isAddEventTaskInputValid(\"event School Meeting 01-01-2024 1200 01-01-2024 1300\");","lastModifiedDate":"2024-02-07"},{"lineNumber":184,"author":{"gitId":"Austintjh19"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":185,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, () -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":186,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance()","lastModifiedDate":"2024-02-07"},{"lineNumber":187,"author":{"gitId":"Austintjh19"},"content":" .isAddEventTaskInputValid(\"event School Meeting /from 32-01-2024 1200 /to 33-01-2024 1300\");","lastModifiedDate":"2024-02-07"},{"lineNumber":188,"author":{"gitId":"Austintjh19"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":189,"author":{"gitId":"Austintjh19"},"content":" assertThrows(OsirisInvalidInputException.class, () -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":190,"author":{"gitId":"Austintjh19"},"content":" InputsValidator.getInstance()","lastModifiedDate":"2024-02-07"},{"lineNumber":191,"author":{"gitId":"Austintjh19"},"content":" .isAddEventTaskInputValid(\"event School Meeting /from 01-13-2024 1200 /to 01-13-2024 1300\");","lastModifiedDate":"2024-02-07"},{"lineNumber":192,"author":{"gitId":"Austintjh19"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":193,"author":{"gitId":"Austintjh19"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":194,"author":{"gitId":"Austintjh19"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"Austintjh19":194}},{"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 a06b96cd..e920776b 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}}},{"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}}},{"hash":"6fab743849df393547cd0a9207d665f004c71897","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b274c1872f5506a1744b8bda89eabc07d8bc19e5","isMergeCommit":false,"messageTitle":"A-Gradle. { Completed }","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":1},"txt":{"insertions":2,"deletions":2},"java":{"insertions":79,"deletions":85}}}]},{"date":"2024-01-31","commitResults":[{"hash":"811015e98aba93af3ccac635642b129044a0f158","isMergeCommit":false,"messageTitle":"A-JUnit. { Completed Key functions }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":461,"deletions":110}}},{"hash":"c88b896d3c976f630e10ff6bfb93844cc9fc9192","isMergeCommit":false,"messageTitle":"A-Jar. { Completed }.","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"6ec9f0817d2031bd3fb7fbc611483e7303098b2d","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e8c47e25a04e007ba8381bad03ee33da8f1ef20f","isMergeCommit":false,"messageTitle":"A-JavaDoc.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":170,"deletions":13}}},{"hash":"947f4cc513b87c911e862af24d23dc64c4291a7d","isMergeCommit":false,"messageTitle":"A-JavaDoc. { Completed. }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":600,"deletions":33}}},{"hash":"c325c19fab88f8a3491bd90865301bbcd89cd073","isMergeCommit":false,"messageTitle":"A-CodingStandard. { Completed }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":73}}},{"hash":"c5a44d9d9d808bdd9326b7c890070e91da6b658c","isMergeCommit":false,"messageTitle":"Level 9. Find. { Completed }","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":0}}},{"hash":"d84a37fe7c3150e29816e9b7dcaff8b869859d6c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ed1ddbb3d35fc897ce6fb53edc17d86db78434e9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/osiris/Osiris.java\n#\tsrc/main/java/osiris/commands/NoCommand.java\n#\tsrc/main/java/osiris/commands/UnsupportedCommand.java\n#\tsrc/main/java/osiris/commands/addDeadlineTaskCommand.java\n#\tsrc/main/java/osiris/commands/addEventTaskCommand.java\n#\tsrc/main/java/osiris/commands/addToDoTaskCommand.java\n#\tsrc/main/java/osiris/commands/markTaskCompletedCommand.java\n#\tsrc/main/java/osiris/commands/markTaskIncompleteCommand.java\n#\tsrc/main/java/osiris/commands/printUserTasksCommand.java\n#\tsrc/main/java/osiris/commands/removeTaskCommand.java\n#\tsrc/main/java/osiris/commands/terminateChatCommand.java\n#\tsrc/main/java/osiris/task/EventTask.java\n#\tsrc/main/java/osiris/task/InvalidTaskException.java\n#\tsrc/main/java/osiris/task/Task.java\n#\tsrc/main/java/osiris/task/TaskManager.java\n#\tsrc/main/java/osiris/ui/Ui.java\n","fileTypesAndContributionMap":{}},{"hash":"be65f073f7066ec066c28b9a4a9bc505f4ef9e6f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/osiris/task/TaskManager.java\n#\tsrc/main/java/osiris/ui/Ui.java\n","fileTypesAndContributionMap":{}}]},{"date":"2024-02-03","commitResults":[{"hash":"5cf65f9b051d3b9be685d144d3dd004a3c2b1a01","isMergeCommit":false,"messageTitle":"Coding Standard fix: Updated according to Coding Standard Provided.","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":0},"java":{"insertions":365,"deletions":289}}},{"hash":"429a47c7e5acd8f545d5d22f8d4ca93eb2b7812e","isMergeCommit":false,"messageTitle":"Coding Standard fix: Updated according to Coding Standard Provided.","messageBody":"Test files have Coding Standards Violation.\nUpdated tags for A-JavaDoc, A_CodingStandards \u0026 A-JUnit.\n","tags":["A-JavaDoc","A-JUnit","A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":135,"deletions":102}}}]}]},"authorFileTypeContributionMap":{"Austintjh19":{"java":2457,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":23,"txt":24}},"authorContributionVariance":{"Austintjh19":257118.83},"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}}},{"hash":"6fab743849df393547cd0a9207d665f004c71897","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b274c1872f5506a1744b8bda89eabc07d8bc19e5","isMergeCommit":false,"messageTitle":"A-Gradle. { Completed }","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":1},"txt":{"insertions":2,"deletions":2},"java":{"insertions":79,"deletions":85}}}]},{"date":"2024-01-31","commitResults":[{"hash":"811015e98aba93af3ccac635642b129044a0f158","isMergeCommit":false,"messageTitle":"A-JUnit. { Completed Key functions }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":461,"deletions":110}}},{"hash":"c88b896d3c976f630e10ff6bfb93844cc9fc9192","isMergeCommit":false,"messageTitle":"A-Jar. { Completed }.","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"6ec9f0817d2031bd3fb7fbc611483e7303098b2d","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e8c47e25a04e007ba8381bad03ee33da8f1ef20f","isMergeCommit":false,"messageTitle":"A-JavaDoc.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":170,"deletions":13}}},{"hash":"947f4cc513b87c911e862af24d23dc64c4291a7d","isMergeCommit":false,"messageTitle":"A-JavaDoc. { Completed. }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":600,"deletions":33}}},{"hash":"c325c19fab88f8a3491bd90865301bbcd89cd073","isMergeCommit":false,"messageTitle":"A-CodingStandard. { Completed }","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":73}}},{"hash":"c5a44d9d9d808bdd9326b7c890070e91da6b658c","isMergeCommit":false,"messageTitle":"Level 9. Find. { Completed }","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":0}}},{"hash":"d84a37fe7c3150e29816e9b7dcaff8b869859d6c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ed1ddbb3d35fc897ce6fb53edc17d86db78434e9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/osiris/Osiris.java\n#\tsrc/main/java/osiris/commands/NoCommand.java\n#\tsrc/main/java/osiris/commands/UnsupportedCommand.java\n#\tsrc/main/java/osiris/commands/addDeadlineTaskCommand.java\n#\tsrc/main/java/osiris/commands/addEventTaskCommand.java\n#\tsrc/main/java/osiris/commands/addToDoTaskCommand.java\n#\tsrc/main/java/osiris/commands/markTaskCompletedCommand.java\n#\tsrc/main/java/osiris/commands/markTaskIncompleteCommand.java\n#\tsrc/main/java/osiris/commands/printUserTasksCommand.java\n#\tsrc/main/java/osiris/commands/removeTaskCommand.java\n#\tsrc/main/java/osiris/commands/terminateChatCommand.java\n#\tsrc/main/java/osiris/task/EventTask.java\n#\tsrc/main/java/osiris/task/InvalidTaskException.java\n#\tsrc/main/java/osiris/task/Task.java\n#\tsrc/main/java/osiris/task/TaskManager.java\n#\tsrc/main/java/osiris/ui/Ui.java\n","fileTypesAndContributionMap":{}},{"hash":"be65f073f7066ec066c28b9a4a9bc505f4ef9e6f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/osiris/task/TaskManager.java\n#\tsrc/main/java/osiris/ui/Ui.java\n","fileTypesAndContributionMap":{}}]},{"date":"2024-02-03","commitResults":[{"hash":"5cf65f9b051d3b9be685d144d3dd004a3c2b1a01","isMergeCommit":false,"messageTitle":"Coding Standard fix: Updated according to Coding Standard Provided.","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":0},"java":{"insertions":365,"deletions":289}}},{"hash":"429a47c7e5acd8f545d5d22f8d4ca93eb2b7812e","isMergeCommit":false,"messageTitle":"Coding Standard fix: Updated according to Coding Standard Provided.","messageBody":"Test files have Coding Standards Violation.\nUpdated tags for A-JavaDoc, A_CodingStandards \u0026 A-JUnit.\n","tags":["A-JavaDoc","A-JUnit","A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":135,"deletions":102}}}]},{"date":"2024-02-04","commitResults":[{"hash":"31f3621bdaf682e355057bb66656cafddb347f32","isMergeCommit":false,"messageTitle":"Initialise basics for JafaFx","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":39,"deletions":0},"java":{"insertions":171,"deletions":7}}}]},{"date":"2024-02-05","commitResults":[{"hash":"fc6b7db2a93fa9f03ffee41625f94b720f7e905d","isMergeCommit":false,"messageTitle":"Add Exception Classes","messageBody":"For the purpose of integrating with the JavaFX interface.\nPrintln commands no longer viable after validation checks.\n","fileTypesAndContributionMap":{"java":{"insertions":390,"deletions":185}}},{"hash":"71f6bba1bff7192e9b28c64dac06e5eae850b545","isMergeCommit":false,"messageTitle":"Add JavaDoc for new classes.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":42}}}]},{"date":"2024-02-07","commitResults":[{"hash":"c84ba2426ca409118bfeb39a560fcdd930590075","isMergeCommit":false,"messageTitle":"Update Unit Tests","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"fxml":{"insertions":4,"deletions":2},"java":{"insertions":242,"deletions":105}}},{"hash":"4093489bf125c07649bfc192705f0b327c4060c5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Austintjh19":{"java":2986,"md":0,"fxml":41,"sh":1,"bat":0,"gradle":23,"txt":24}},"authorContributionVariance":{"Austintjh19":218199.12},"authorDisplayNameMap":{"Austintjh19":"CS2103T-T16-1 TAN ..HENG"}} diff --git a/AwJoey_ip_master/authorship.json b/AwJoey_ip_master/authorship.json index d870d9ec..f409964b 100644 --- a/AwJoey_ip_master/authorship.json +++ b/AwJoey_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"public enum Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":" TODO(\"todo\", \"todo \u003ctask_name\u003e\"),","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":" DEADLINE(\"deadline\", \"deadline \u003ctask_name\u003e /by \u003cdue_date\u003e\"),","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":" EVENT(\"event\",\"event \u003ctask_name\u003e /from \u003cstart_date\u003e /to \u003cend_date\"),","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":" LIST(\"list\", \"list\"),","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":" MARK (\"mark\", \"mark \u003ctask_number\u003e\"),","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":" UNMARK(\"unmark\", \"unmark \u003ctask_number\u003e\"),","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":" DELETE(\"delete\", \"delete \u003ctask_number\u003e\"),","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":" TERMINATE(\"bye\", \"bye\");","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":" public final String commandName;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":" public final String commandSignature;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":" private Command(String commandName, String commandSignature) {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":" this.commandName \u003d commandName;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":" this.commandSignature \u003d commandSignature;","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"AwJoey":18}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":" static protected String ALIAS \u003d \"D\";","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":" public Deadline(String taskName, boolean status, LocalDateTime by) {","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":" super(taskName, status);","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":" return \"[\" + ALIAS + \"]\" + super.toString() + \" (by: \" + by.format(dateTimeString) + \")\";","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"AwJoey"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"AwJoey"},"content":" public String toStore() {","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"AwJoey"},"content":" return ALIAS + super.toStore() + \",\" + by.format(Parser.dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AwJoey":21}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":" private Storage storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":" private Ui ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":" public Duke() {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":" storage \u003d new Storage();","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":" tasks \u003d new TaskList(Storage.retrieveList());","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"AwJoey"},"content":" public void run() {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"AwJoey"},"content":" ui.showWelcome();","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"AwJoey"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"AwJoey"},"content":" while (!isExit) {","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"AwJoey"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"AwJoey"},"content":" isExit \u003d Parser.parse(fullCommand, ui);","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"AwJoey"},"content":" ui.showExit();","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"AwJoey"},"content":" new Duke().run();","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"AwJoey"},"content":"// public static DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"AwJoey"},"content":"// private static Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"AwJoey"},"content":"// public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"AwJoey"},"content":"// ArrayList\u003cTask\u003e list \u003d Storage.retrieveList();","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"AwJoey"},"content":"// Storage.createFile();","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"AwJoey"},"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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"AwJoey"},"content":"// \"Hello I\u0027m Axolotl! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"AwJoey"},"content":"// \"What can I do for you? \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"AwJoey"},"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\u003d\u003d \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"AwJoey"},"content":"// String input \u003d sc.nextLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"AwJoey"},"content":"// while (!input.equals(Command.TERMINATE.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"AwJoey"},"content":"// int cmdSplit \u003d input.indexOf(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"AwJoey"},"content":"// String command \u003d input;","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"AwJoey"},"content":"// String task \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"AwJoey"},"content":"// try {","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"AwJoey"},"content":"// if (cmdSplit !\u003d -1) {","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"AwJoey"},"content":"// command \u003d input.substring(0, cmdSplit);","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"AwJoey"},"content":"// task \u003d input.substring(input.indexOf(\" \") + 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"AwJoey"},"content":"// } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"AwJoey"},"content":"// if (command.equals(Command.MARK.commandName) | command.equals(Command.UNMARK.commandName) | command.equals(Command.DELETE.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"AwJoey"},"content":"// \"Oops, I\u0027m not sure which task you are referring to! Please indicate a task number (e.g. \" + command + \" 1) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"AwJoey"},"content":"// continue;","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"AwJoey"},"content":"// } else if (command.equals(Command.TODO.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"AwJoey"},"content":"// \"Oops, wrong format! Please indicate task details (e.g. todo CS2103 Lab 1) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"AwJoey"},"content":"// continue;","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"AwJoey"},"content":"// if (command.equals(Command.LIST.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"AwJoey"},"content":"// printTaskList(list);","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"AwJoey"},"content":"// } else if (command.equals(Command.MARK.commandName) | command.equals(Command.UNMARK.commandName) | command.equals(Command.DELETE.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"AwJoey"},"content":"// try {","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"AwJoey"},"content":"// int taskNo \u003d Integer.parseInt(task) - 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"AwJoey"},"content":"// if (taskNo \u003e\u003d list.size()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"AwJoey"},"content":"// \"Oops, task \" + task + \" does not exist. Please try again! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"AwJoey"},"content":"// \"Here is your list for reference: \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"AwJoey"},"content":"// printTaskList(list);","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"AwJoey"},"content":"// } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"AwJoey"},"content":"// Task t \u003d list.get(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"AwJoey"},"content":"// if (command.equals(Command.MARK.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"AwJoey"},"content":"// t.done();","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"AwJoey"},"content":"// \"Nice! I\u0027ve marked task \" + task + \" as done: \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"AwJoey"},"content":"// t.toString() + \"\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"AwJoey"},"content":"// } else if (command.equals(Command.UNMARK.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"AwJoey"},"content":"// t.undone();","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"AwJoey"},"content":"// \"Sure, I\u0027ve marked task \" + task + \" as not done yet: \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"AwJoey"},"content":"// t.toString() + \"\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"AwJoey"},"content":"// } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"AwJoey"},"content":"// list.remove(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"AwJoey"},"content":"// \"Okay, I will delete this task: \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"AwJoey"},"content":"// t.toString() + \"\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"AwJoey"},"content":"// \"You now have \" + list.size() + \" in the list. \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"AwJoey"},"content":"// } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":106,"author":{"gitId":"AwJoey"},"content":"// \"Oops, please enter task numbers instead! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":107,"author":{"gitId":"AwJoey"},"content":"// \"(e.g. mark 1) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"AwJoey"},"content":"// } else if (command.equals(Command.TODO.commandName) | command.equals(Command.DEADLINE.commandName) | command.equals(Command.EVENT.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":111,"author":{"gitId":"AwJoey"},"content":"// Task t \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"AwJoey"},"content":"// boolean success \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":113,"author":{"gitId":"AwJoey"},"content":"// try {","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"AwJoey"},"content":"// if (command.equals(Command.TODO.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"AwJoey"},"content":"// t \u003d new ToDo(task, false);","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"AwJoey"},"content":"// } else if (command.equals(Command.DEADLINE.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"AwJoey"},"content":"// if (task \u003d\u003d null || !task.contains(\" /by \")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":118,"author":{"gitId":"AwJoey"},"content":"// success \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":119,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"AwJoey"},"content":"// \"Oops, wrong format! Please follow this format for deadline task entries (e.g. deadline submit report /by 11/10/2019 5pm ) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":121,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":122,"author":{"gitId":"AwJoey"},"content":"// } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":123,"author":{"gitId":"AwJoey"},"content":"// String[] deadline \u003d task.split(\" /by \");","lastModifiedDate":"2024-02-06"},{"lineNumber":124,"author":{"gitId":"AwJoey"},"content":"// t \u003d new Deadline(deadline[0], false, LocalDateTime.parse(deadline[1], dateTimeFormatter));","lastModifiedDate":"2024-02-06"},{"lineNumber":125,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":126,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":127,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":128,"author":{"gitId":"AwJoey"},"content":"// } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":129,"author":{"gitId":"AwJoey"},"content":"// if (task \u003d\u003d null || !(task.contains(\" /from \") \u0026\u0026 task.contains(\" /to \"))) {","lastModifiedDate":"2024-02-06"},{"lineNumber":130,"author":{"gitId":"AwJoey"},"content":"// success \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":131,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":132,"author":{"gitId":"AwJoey"},"content":"// \"Oops, wrong format! Please follow this format for event task entries (e.g. event team project meeting /from 11/10/2019 4pm /to 11/10/2019 5pm ) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":133,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":134,"author":{"gitId":"AwJoey"},"content":"// } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":135,"author":{"gitId":"AwJoey"},"content":"// String event \u003d task.substring(0, task.indexOf(\" /from \"));","lastModifiedDate":"2024-02-06"},{"lineNumber":136,"author":{"gitId":"AwJoey"},"content":"// try {","lastModifiedDate":"2024-02-06"},{"lineNumber":137,"author":{"gitId":"AwJoey"},"content":"// LocalDateTime from \u003d LocalDateTime.parse(task.substring(task.indexOf(\"/from \") + 6, task.indexOf(\" /to \")), dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":138,"author":{"gitId":"AwJoey"},"content":"// LocalDateTime to \u003d LocalDateTime.parse(task.substring((task.indexOf(\"/to \") + 4)), dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":139,"author":{"gitId":"AwJoey"},"content":"// t \u003d new Event(event, false, from, to);","lastModifiedDate":"2024-02-06"},{"lineNumber":140,"author":{"gitId":"AwJoey"},"content":"// } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":141,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":142,"author":{"gitId":"AwJoey"},"content":"// \"Oops, wrong format! Please follow this format for event task entries (e.g. event team project meeting /from 11/10/2019 4pm /to 11/10/2019 5pm ) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":143,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":144,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":145,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":146,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":147,"author":{"gitId":"AwJoey"},"content":"// if (success) {","lastModifiedDate":"2024-02-06"},{"lineNumber":148,"author":{"gitId":"AwJoey"},"content":"// list.add(t);","lastModifiedDate":"2024-02-06"},{"lineNumber":149,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":150,"author":{"gitId":"AwJoey"},"content":"// \"Sure, I\u0027ve added this task: \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":151,"author":{"gitId":"AwJoey"},"content":"// t.toString() + \"\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":152,"author":{"gitId":"AwJoey"},"content":"// \"Now you have \" + list.size() + \" task(s) in the list. \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":153,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":154,"author":{"gitId":"AwJoey"},"content":"// Storage.updateFile(list);","lastModifiedDate":"2024-02-06"},{"lineNumber":155,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":156,"author":{"gitId":"AwJoey"},"content":"// } catch (DateTimeException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":157,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":158,"author":{"gitId":"AwJoey"},"content":"// \"Oops, wrong datetime format! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":159,"author":{"gitId":"AwJoey"},"content":"// \"Please follow this format \u003cdd/MM/yyyy HHmm\u003e (e.g. 2/12/2019 1800) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":160,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":161,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":162,"author":{"gitId":"AwJoey"},"content":"// } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":163,"author":{"gitId":"AwJoey"},"content":"// System.out.println( \"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":164,"author":{"gitId":"AwJoey"},"content":"// \"Oops, I\u0027m not sure what you meant by that! Commands available:\");","lastModifiedDate":"2024-02-06"},{"lineNumber":165,"author":{"gitId":"AwJoey"},"content":"// for (Command c: EnumSet.allOf(Command.class)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":166,"author":{"gitId":"AwJoey"},"content":"// System.out.println(c.commandSignature);","lastModifiedDate":"2024-02-06"},{"lineNumber":167,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":168,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":169,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":170,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":171,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":172,"author":{"gitId":"AwJoey"},"content":"// finally {","lastModifiedDate":"2024-02-06"},{"lineNumber":173,"author":{"gitId":"AwJoey"},"content":"// input \u003d sc.nextLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":174,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":175,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":176,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":177,"author":{"gitId":"AwJoey"},"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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":178,"author":{"gitId":"AwJoey"},"content":"// \"Bye. Hope to see you again soon! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":179,"author":{"gitId":"AwJoey"},"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\u003d\u003d \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":180,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":181,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":182,"author":{"gitId":"AwJoey"},"content":"// public static void printTaskList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-02-06"},{"lineNumber":183,"author":{"gitId":"AwJoey"},"content":"// System.out.println( \"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":184,"author":{"gitId":"AwJoey"},"content":"// \"Here are the tasks in your list:\");","lastModifiedDate":"2024-02-06"},{"lineNumber":185,"author":{"gitId":"AwJoey"},"content":"// if (list.isEmpty()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":186,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"----You have no tasks yet.----\");","lastModifiedDate":"2024-02-06"},{"lineNumber":187,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":188,"author":{"gitId":"AwJoey"},"content":"// else {","lastModifiedDate":"2024-02-06"},{"lineNumber":189,"author":{"gitId":"AwJoey"},"content":"// for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":190,"author":{"gitId":"AwJoey"},"content":"// Task iTask \u003d list.get(i);","lastModifiedDate":"2024-02-06"},{"lineNumber":191,"author":{"gitId":"AwJoey"},"content":"// System.out.println((i + 1) + \". \" + iTask.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":192,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":193,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":194,"author":{"gitId":"AwJoey"},"content":"// System.out.println( \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":195,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":196,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"AwJoey":193,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":" public DukeException() {","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":" super();","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":" super(message);","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"AwJoey":10}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":" static protected String ALIAS \u003d \"E\";","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":" public Event(String taskName, boolean status, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":" super(taskName, status);","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":" return \"[\" + ALIAS + \"]\" + super.toString() + \" (from: \" + from.format(dateTimeString) + \" to: \" + to.format(dateTimeString) + \")\";","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"AwJoey"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"AwJoey"},"content":" public String toStore() {","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"AwJoey"},"content":" return ALIAS + super.toStore() + \",\" + from.format(Parser.dateTimeFormatter) + \",\" + to.format(Parser.dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AwJoey":23}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":"public class Parser {","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":" public static DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":" //public static DateTimeFormatter dateTimeString \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":" public static boolean parse(String input, Ui ui) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":" int cmdSplit \u003d input.indexOf(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":" String command \u003d input;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":" String task \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":" if (cmdSplit \u003d\u003d -1) {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":" if (command.equals(Command.MARK.commandName) | command.equals(Command.UNMARK.commandName) | command.equals(Command.DELETE.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"AwJoey"},"content":" \"Oops, I\u0027m not sure which task you are referring to! Please indicate a task number (e.g. \" + command + \" 1) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"AwJoey"},"content":" } else if (command.equals(Command.TODO.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"AwJoey"},"content":" \"Oops, wrong format! Please indicate task details (e.g. todo CS2103 Lab 1) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"AwJoey"},"content":" } else if (command.equals(Command.LIST.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"AwJoey"},"content":" TaskList.printTaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"AwJoey"},"content":" } else if (command.equals(Command.TERMINATE.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"AwJoey"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"AwJoey"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorAndPrintCommands();","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"AwJoey"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"AwJoey"},"content":" command \u003d input.substring(0, cmdSplit);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"AwJoey"},"content":" task \u003d input.substring(input.indexOf(\" \") + 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"AwJoey"},"content":" if (command.equals(Command.MARK.commandName) | command.equals(Command.UNMARK.commandName) | command.equals(Command.DELETE.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"AwJoey"},"content":" int taskNo \u003d Integer.parseInt(task) - 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"AwJoey"},"content":" if (command.equals(Command.MARK.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"AwJoey"},"content":" TaskList.markTask(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"AwJoey"},"content":" } else if (command.equals(Command.UNMARK.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"AwJoey"},"content":" TaskList.unmarkTask(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"AwJoey"},"content":" } else if (command.equals(Command.DELETE.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"AwJoey"},"content":" TaskList.removeTask(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"AwJoey"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorNumbersOnly();","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"AwJoey"},"content":" } else if (command.equals(Command.TODO.commandName) | command.equals(Command.DEADLINE.commandName) | command.equals(Command.EVENT.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"AwJoey"},"content":" Task t \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"AwJoey"},"content":" boolean success \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"AwJoey"},"content":" if (command.equals(Command.TODO.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"AwJoey"},"content":" t \u003d new ToDo(task, false);","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"AwJoey"},"content":" } else if (command.equals(Command.DEADLINE.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"AwJoey"},"content":" if (task \u003d\u003d null || !task.contains(\" /by \")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"AwJoey"},"content":" success \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorDeadlineFormat();","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"AwJoey"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"AwJoey"},"content":" String[] deadline \u003d task.split(\" /by \");","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"AwJoey"},"content":" t \u003d new Deadline(deadline[0], false, LocalDateTime.parse(deadline[1], dateTimeFormatter));","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"AwJoey"},"content":" //test","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"AwJoey"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"AwJoey"},"content":" if (task \u003d\u003d null || !(task.contains(\" /from \") \u0026\u0026 task.contains(\" /to \"))) {","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"AwJoey"},"content":" success \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorEventFormat();","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"AwJoey"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"AwJoey"},"content":" String event \u003d task.substring(0, task.indexOf(\" /from \"));","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"AwJoey"},"content":" LocalDateTime from \u003d LocalDateTime.parse(task.substring(task.indexOf(\"/from \") + 6, task.indexOf(\" /to \")), dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"AwJoey"},"content":" LocalDateTime to \u003d LocalDateTime.parse(task.substring((task.indexOf(\"/to \") + 4)), dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"AwJoey"},"content":" t \u003d new Event(event, false, from, to);","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"AwJoey"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorEventTimingFormat();","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"AwJoey"},"content":" if (success) {","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"AwJoey"},"content":" TaskList.addTask(t);","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"AwJoey"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorDatetimeFormat();","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"AwJoey"},"content":" else {","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorAndPrintCommands();","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"AwJoey"},"content":" return false;","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"AwJoey":90}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":"import java.io.InputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":"import java.io.PrintStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":"import java.lang.reflect.Array;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":"import java.util.List;","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"AwJoey"},"content":"public class Storage {","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"AwJoey"},"content":" private static final String HOME \u003d System.getProperty(\"user.home\");","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"AwJoey"},"content":" private static final Path FILEPATH \u003d Paths.get(HOME, \"Downloads\", \"NUS_CS\",","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"AwJoey"},"content":" \"CS2103\", \"duke.txt\");","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"AwJoey"},"content":" public Storage() {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"AwJoey"},"content":" public static ArrayList\u003cTask\u003e retrieveList() throws IOException {","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"AwJoey"},"content":" if (Files.exists(FILEPATH)) {","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"AwJoey"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"AwJoey"},"content":" BufferedReader br \u003d Files.newBufferedReader(FILEPATH);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"AwJoey"},"content":" String currentLine \u003d null;","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"AwJoey"},"content":" while ((currentLine \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"AwJoey"},"content":" String[] inputs \u003d currentLine.split(\",\");","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"AwJoey"},"content":" boolean isDone \u003d Boolean.parseBoolean(inputs[1]);","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"AwJoey"},"content":" switch (inputs[0]) {","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"AwJoey"},"content":" case \"T\":","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"AwJoey"},"content":" ToDo t \u003d new ToDo(inputs[2], isDone);","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"AwJoey"},"content":" taskList.add(t);","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"AwJoey"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"AwJoey"},"content":" case \"D\":","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"AwJoey"},"content":" LocalDateTime by \u003d LocalDateTime.parse(inputs[3], Parser.dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"AwJoey"},"content":" Deadline d \u003d new Deadline(inputs[2], isDone, by);","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"AwJoey"},"content":" taskList.add(d);","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"AwJoey"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"AwJoey"},"content":" case \"E\":","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"AwJoey"},"content":" LocalDateTime from \u003d LocalDateTime.parse(inputs[3], Parser.dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"AwJoey"},"content":" LocalDateTime to \u003d LocalDateTime.parse(inputs[4], Parser.dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"AwJoey"},"content":" Event e \u003d new Event(inputs[0], isDone, from, to);","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"AwJoey"},"content":" taskList.add(e);","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"AwJoey"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"AwJoey"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"AwJoey"},"content":" //System.out.println(\"LOG: Dates of tasks corrupted.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"AwJoey"},"content":" Ui.showLoadingError();","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"AwJoey"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"AwJoey"},"content":" return taskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"AwJoey"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"AwJoey"},"content":" //System.out.println(\"LOG: File not found, empty list\");","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"AwJoey"},"content":" Ui.showLoadingError();","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"AwJoey"},"content":" return new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"AwJoey"},"content":" public static void updateFile(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"AwJoey"},"content":" createFile();","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"AwJoey"},"content":" ArrayList\u003cString\u003e taskContent \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"AwJoey"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"AwJoey"},"content":" taskContent.add(t.toStore());","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"AwJoey"},"content":" Files.write(FILEPATH, taskContent);","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"LOG: Updated file contents.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"AwJoey"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"LOG: File cannot be found.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"AwJoey"},"content":" public static void createFile() {","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"AwJoey"},"content":" Files.createFile(FILEPATH);","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"LOG: File created\");","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"AwJoey"},"content":" catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"LOG: File already exists.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"AwJoey":94}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":" public static DateTimeFormatter dateTimeString \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy hh:mma\");","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":" private String taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":" protected boolean status;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":" public Task(String taskName, boolean status) {","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":" this.status \u003d status;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":" public String getTaskName() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":" return taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":" return status ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"AwJoey"},"content":" public void done() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"AwJoey"},"content":" status \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"AwJoey"},"content":" public void undone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"AwJoey"},"content":" status \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"AwJoey"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"AwJoey"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"AwJoey"},"content":" return getStatusIcon() + \" \" + taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"AwJoey"},"content":" public String toStore() {","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"AwJoey"},"content":" return \",\" + status + \",\" + taskName;","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AwJoey":36}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"import java.io.*;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":"public class TaskList extends ArrayList\u003cTask\u003e {","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":" private static ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":" public TaskList() {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":" public static void addTask(Task t) {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":" tasks.add(t);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"AwJoey"},"content":" Ui.printTaskAdded(t, tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"AwJoey"},"content":" Storage.updateFile(tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"AwJoey"},"content":" public static void removeTask(int taskNo) {","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"AwJoey"},"content":" Task t \u003d tasks.get(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"AwJoey"},"content":" tasks.remove(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"AwJoey"},"content":" Ui.printTaskRemoved(t, tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"AwJoey"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorNotExist(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"AwJoey"},"content":" public static void markTask(int taskNo) {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"AwJoey"},"content":" Task t \u003d tasks.get(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"AwJoey"},"content":" t.done();","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"AwJoey"},"content":" Ui.printTaskMarked(taskNo, t);","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"AwJoey"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorNotExist(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"AwJoey"},"content":" public static void unmarkTask(int taskNo) {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"AwJoey"},"content":" Task t \u003d tasks.get(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"AwJoey"},"content":" t.undone();","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"AwJoey"},"content":" Ui.printTaskUnmarked(taskNo, t);","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"AwJoey"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorNotExist(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"AwJoey"},"content":" public static void printTaskList() {","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"AwJoey"},"content":" Ui.printTasks(tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"AwJoey":54}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"public class ToDo extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":" static protected String ALIAS \u003d \"T\";","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":" public ToDo(String taskName, boolean status) {","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":" super(taskName, status);","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":" return \"[\" + ALIAS + \"]\" + super.toString();","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":" public String toStore() {","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":" return ALIAS + super.toStore();","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AwJoey":16}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"import java.io.InputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"import java.io.PrintStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":"import java.util.EnumSet;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":" * Text UI of the application","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":"public class Ui {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":" private static final String BORDER_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\";","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":" private static final String DIVIDER \u003d \"--------------------------------\";","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":" private final Scanner in;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":" private final PrintStream out;","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"AwJoey"},"content":" public Ui() {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"AwJoey"},"content":" this(System.in, System.out);","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"AwJoey"},"content":" public Ui(InputStream in, PrintStream out) {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"AwJoey"},"content":" this.in \u003d new Scanner(in);","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"AwJoey"},"content":" this.out \u003d out;","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"AwJoey"},"content":" public void showWelcome() {","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"AwJoey"},"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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"AwJoey"},"content":" \"Hello I\u0027m Axolotl! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"AwJoey"},"content":" \"What can I do for you? \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"AwJoey"},"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\u003d\u003d \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"AwJoey"},"content":" public String readCommand() {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"AwJoey"},"content":" String input \u003d in.nextLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"AwJoey"},"content":" return input;","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"AwJoey"},"content":" public static void printTaskMarked(int taskNo, Task t) {","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"AwJoey"},"content":" \"Nice! I\u0027ve marked task \" + (taskNo + 1) + \" as done: \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"AwJoey"},"content":" t.toString() + \"\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"AwJoey"},"content":" public static void printTaskUnmarked(int taskNo, Task t) {","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"AwJoey"},"content":" \"Sure, I\u0027ve marked task \" + (taskNo + 1) + \" as not done yet: \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"AwJoey"},"content":" t.toString() + \"\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"AwJoey"},"content":" public static void printTaskRemoved(Task t, ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"AwJoey"},"content":" \"Okay, I will delete this task: \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"AwJoey"},"content":" t.toString() + \"\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"AwJoey"},"content":" \"You now have \" + list.size() + \" in the list. \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"AwJoey"},"content":" public static void printTaskAdded(Task t, ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"AwJoey"},"content":" \"Sure, I\u0027ve added this task: \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"AwJoey"},"content":" t.toString() + \"\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"AwJoey"},"content":" \"Now you have \" + list.size() + \" task(s) in the list. \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"AwJoey"},"content":" public static void printTasks(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"AwJoey"},"content":" System.out.println( \"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"AwJoey"},"content":" \"Here are the tasks in your list:\");","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"AwJoey"},"content":" if (list.isEmpty()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"----You have no tasks yet.----\");","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"AwJoey"},"content":" else {","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"AwJoey"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"AwJoey"},"content":" Task iTask \u003d list.get(i);","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"AwJoey"},"content":" System.out.println((i + 1) + \". \" + iTask.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"AwJoey"},"content":" System.out.println( \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"AwJoey"},"content":" public static void showLoadingError() {","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"AwJoey"},"content":" \"Oops, error in uploading saved tasks. Please check if the format is correct.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"AwJoey"},"content":" public static void showErrorNotExist(int taskNo) {","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"AwJoey"},"content":" \"Oops, task \" + (taskNo + 1) + \" does not exist. Please try again! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"AwJoey"},"content":" \"Here is your list for reference: \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"AwJoey"},"content":" TaskList.printTaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"AwJoey"},"content":" public static void showErrorNumbersOnly() {","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"AwJoey"},"content":" \"Oops, please enter task numbers instead! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"AwJoey"},"content":" \"(e.g. mark 1) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"AwJoey"},"content":" public static void showErrorDeadlineFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":106,"author":{"gitId":"AwJoey"},"content":" \"Oops, wrong format! Please follow this format for deadline task entries (e.g. deadline submit report /by 11/10/2019 5pm ) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":107,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"AwJoey"},"content":" public static void showErrorEventFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":111,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"AwJoey"},"content":" \"Oops, wrong format! Please follow this format for event task entries (e.g. event team project meeting /from 11/10/2019 4pm /to 11/10/2019 5pm ) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":113,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"AwJoey"},"content":" public static void showErrorDatetimeFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":118,"author":{"gitId":"AwJoey"},"content":" \"Oops, wrong datetime format! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":119,"author":{"gitId":"AwJoey"},"content":" \"Please follow this format \u003cdd/MM/yyyy HHmm\u003e (e.g. 02/12/2019 1800) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":121,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":122,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":123,"author":{"gitId":"AwJoey"},"content":" public static void showErrorEventTimingFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":124,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":125,"author":{"gitId":"AwJoey"},"content":" \"Oops, wrong format! Please follow this format for event task entries (e.g. event team project meeting /from 11/10/2019 4pm /to 11/10/2019 5pm ) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":126,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":127,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":128,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":129,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":130,"author":{"gitId":"AwJoey"},"content":" public void showLine() {","lastModifiedDate":"2024-02-06"},{"lineNumber":131,"author":{"gitId":"AwJoey"},"content":" out.println(DIVIDER);","lastModifiedDate":"2024-02-06"},{"lineNumber":132,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":133,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":134,"author":{"gitId":"AwJoey"},"content":" public static void showErrorAndPrintCommands() {","lastModifiedDate":"2024-02-06"},{"lineNumber":135,"author":{"gitId":"AwJoey"},"content":" System.out.println( \"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":136,"author":{"gitId":"AwJoey"},"content":" \"Oops, I\u0027m not sure what you meant by that! Commands available:\");","lastModifiedDate":"2024-02-06"},{"lineNumber":137,"author":{"gitId":"AwJoey"},"content":" for (Command c: EnumSet.allOf(Command.class)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":138,"author":{"gitId":"AwJoey"},"content":" System.out.println(c.commandSignature);","lastModifiedDate":"2024-02-06"},{"lineNumber":139,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":140,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":141,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":142,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":143,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":144,"author":{"gitId":"AwJoey"},"content":" public static void showExit() {","lastModifiedDate":"2024-02-06"},{"lineNumber":145,"author":{"gitId":"AwJoey"},"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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":146,"author":{"gitId":"AwJoey"},"content":" \"Bye. Hope to see you again soon! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":147,"author":{"gitId":"AwJoey"},"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\u003d\u003d \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":148,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":149,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":150,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"AwJoey":150}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"todo read book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":"list","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AwJoey":10}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"# duke.Duke project template","lastModifiedDate":"2024-02-07"},{"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":"AwJoey"},"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-02-07"},{"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":{"AwJoey":2,"-":22}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"package duke;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":" private Storage storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":" private Ui ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":" public Duke() {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"AwJoey"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"AwJoey"},"content":" storage \u003d new Storage();","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"AwJoey"},"content":" tasks \u003d new TaskList(Storage.retrieveList());","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"AwJoey"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"AwJoey"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"AwJoey"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"AwJoey"},"content":" public void run() {","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"AwJoey"},"content":" ui.showWelcome();","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"AwJoey"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"AwJoey"},"content":" while (!isExit) {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"AwJoey"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"AwJoey"},"content":" isExit \u003d Parser.parse(fullCommand, ui);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"AwJoey"},"content":" ui.showExit();","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"AwJoey"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"AwJoey"},"content":" new Duke().run();","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"AwJoey"},"content":"// public static DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"AwJoey"},"content":"// private static Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"AwJoey"},"content":"// public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"AwJoey"},"content":"// ArrayList\u003cduke.task.Task\u003e list \u003d duke.storage.Storage.retrieveList();","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"AwJoey"},"content":"// duke.storage.Storage.createFile();","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"AwJoey"},"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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"AwJoey"},"content":"// \"Hello I\u0027m Axolotl! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"AwJoey"},"content":"// \"What can I do for you? \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"AwJoey"},"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\u003d\u003d \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"AwJoey"},"content":"// String input \u003d sc.nextLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"AwJoey"},"content":"// while (!input.equals(duke.command.Command.TERMINATE.commandName)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"AwJoey"},"content":"// int cmdSplit \u003d input.indexOf(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"AwJoey"},"content":"// String command \u003d input;","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"AwJoey"},"content":"// String task \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"AwJoey"},"content":"// try {","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"AwJoey"},"content":"// if (cmdSplit !\u003d -1) {","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"AwJoey"},"content":"// command \u003d input.substring(0, cmdSplit);","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"AwJoey"},"content":"// task \u003d input.substring(input.indexOf(\" \") + 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"AwJoey"},"content":"// } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"AwJoey"},"content":"// if (command.equals(duke.command.Command.MARK.commandName) | command.equals(duke.command.Command.UNMARK.commandName) | command.equals(duke.command.Command.DELETE.commandName)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"AwJoey"},"content":"// \"Oops, I\u0027m not sure which task you are referring to! Please indicate a task number (e.g. \" + command + \" 1) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"AwJoey"},"content":"// continue;","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"AwJoey"},"content":"// } else if (command.equals(duke.command.Command.TODO.commandName)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"AwJoey"},"content":"// \"Oops, wrong format! Please indicate task details (e.g. todo CS2103 Lab 1) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"AwJoey"},"content":"// continue;","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"AwJoey"},"content":"// if (command.equals(duke.command.Command.LIST.commandName)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"AwJoey"},"content":"// printTaskList(list);","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"AwJoey"},"content":"// } else if (command.equals(duke.command.Command.MARK.commandName) | command.equals(duke.command.Command.UNMARK.commandName) | command.equals(duke.command.Command.DELETE.commandName)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"AwJoey"},"content":"// try {","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"AwJoey"},"content":"// int taskNo \u003d Integer.parseInt(task) - 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"AwJoey"},"content":"// if (taskNo \u003e\u003d list.size()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"AwJoey"},"content":"// \"Oops, task \" + task + \" does not exist. Please try again! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"AwJoey"},"content":"// \"Here is your list for reference: \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"AwJoey"},"content":"// printTaskList(list);","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"AwJoey"},"content":"// } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"AwJoey"},"content":"// duke.task.Task t \u003d list.get(taskNo);","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"AwJoey"},"content":"// if (command.equals(duke.command.Command.MARK.commandName)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"AwJoey"},"content":"// t.done();","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"AwJoey"},"content":"// \"Nice! I\u0027ve marked task \" + task + \" as done: \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"AwJoey"},"content":"// t.toString() + \"\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"AwJoey"},"content":"// } else if (command.equals(duke.command.Command.UNMARK.commandName)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"AwJoey"},"content":"// t.undone();","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"AwJoey"},"content":"// \"Sure, I\u0027ve marked task \" + task + \" as not done yet: \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"AwJoey"},"content":"// t.toString() + \"\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"AwJoey"},"content":"// } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"AwJoey"},"content":"// list.remove(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"AwJoey"},"content":"// \"Okay, I will delete this task: \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":106,"author":{"gitId":"AwJoey"},"content":"// t.toString() + \"\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":107,"author":{"gitId":"AwJoey"},"content":"// \"You now have \" + list.size() + \" in the list. \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":111,"author":{"gitId":"AwJoey"},"content":"// } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":113,"author":{"gitId":"AwJoey"},"content":"// \"Oops, please enter task numbers instead! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"AwJoey"},"content":"// \"(e.g. mark 1) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"AwJoey"},"content":"// } else if (command.equals(duke.command.Command.TODO.commandName) | command.equals(duke.command.Command.DEADLINE.commandName) | command.equals(duke.command.Command.EVENT.commandName)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":118,"author":{"gitId":"AwJoey"},"content":"// duke.task.Task t \u003d null;","lastModifiedDate":"2024-02-07"},{"lineNumber":119,"author":{"gitId":"AwJoey"},"content":"// boolean success \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"AwJoey"},"content":"// try {","lastModifiedDate":"2024-02-06"},{"lineNumber":121,"author":{"gitId":"AwJoey"},"content":"// if (command.equals(duke.command.Command.TODO.commandName)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":122,"author":{"gitId":"AwJoey"},"content":"// t \u003d new duke.task.ToDo(task, false);","lastModifiedDate":"2024-02-07"},{"lineNumber":123,"author":{"gitId":"AwJoey"},"content":"// } else if (command.equals(duke.command.Command.DEADLINE.commandName)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":124,"author":{"gitId":"AwJoey"},"content":"// if (task \u003d\u003d null || !task.contains(\" /by \")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":125,"author":{"gitId":"AwJoey"},"content":"// success \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":126,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":127,"author":{"gitId":"AwJoey"},"content":"// \"Oops, wrong format! Please follow this format for deadline task entries (e.g. deadline submit report /by 11/10/2019 5pm ) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":128,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":129,"author":{"gitId":"AwJoey"},"content":"// } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":130,"author":{"gitId":"AwJoey"},"content":"// String[] deadline \u003d task.split(\" /by \");","lastModifiedDate":"2024-02-06"},{"lineNumber":131,"author":{"gitId":"AwJoey"},"content":"// t \u003d new duke.task.Deadline(deadline[0], false, LocalDateTime.parse(deadline[1], dateTimeFormatter));","lastModifiedDate":"2024-02-07"},{"lineNumber":132,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":133,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":134,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":135,"author":{"gitId":"AwJoey"},"content":"// } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":136,"author":{"gitId":"AwJoey"},"content":"// if (task \u003d\u003d null || !(task.contains(\" /from \") \u0026\u0026 task.contains(\" /to \"))) {","lastModifiedDate":"2024-02-06"},{"lineNumber":137,"author":{"gitId":"AwJoey"},"content":"// success \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":138,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":139,"author":{"gitId":"AwJoey"},"content":"// \"Oops, wrong format! Please follow this format for event task entries (e.g. event team project meeting /from 11/10/2019 4pm /to 11/10/2019 5pm ) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":140,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":141,"author":{"gitId":"AwJoey"},"content":"// } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":142,"author":{"gitId":"AwJoey"},"content":"// String event \u003d task.substring(0, task.indexOf(\" /from \"));","lastModifiedDate":"2024-02-06"},{"lineNumber":143,"author":{"gitId":"AwJoey"},"content":"// try {","lastModifiedDate":"2024-02-06"},{"lineNumber":144,"author":{"gitId":"AwJoey"},"content":"// LocalDateTime from \u003d LocalDateTime.parse(task.substring(task.indexOf(\"/from \") + 6, task.indexOf(\" /to \")), dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":145,"author":{"gitId":"AwJoey"},"content":"// LocalDateTime to \u003d LocalDateTime.parse(task.substring((task.indexOf(\"/to \") + 4)), dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":146,"author":{"gitId":"AwJoey"},"content":"// t \u003d new duke.task.Event(event, false, from, to);","lastModifiedDate":"2024-02-07"},{"lineNumber":147,"author":{"gitId":"AwJoey"},"content":"// } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":148,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":149,"author":{"gitId":"AwJoey"},"content":"// \"Oops, wrong format! Please follow this format for event task entries (e.g. event team project meeting /from 11/10/2019 4pm /to 11/10/2019 5pm ) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":150,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":151,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":152,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":153,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":154,"author":{"gitId":"AwJoey"},"content":"// if (success) {","lastModifiedDate":"2024-02-06"},{"lineNumber":155,"author":{"gitId":"AwJoey"},"content":"// list.add(t);","lastModifiedDate":"2024-02-06"},{"lineNumber":156,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":157,"author":{"gitId":"AwJoey"},"content":"// \"Sure, I\u0027ve added this task: \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":158,"author":{"gitId":"AwJoey"},"content":"// t.toString() + \"\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":159,"author":{"gitId":"AwJoey"},"content":"// \"Now you have \" + list.size() + \" task(s) in the list. \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":160,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":161,"author":{"gitId":"AwJoey"},"content":"// duke.storage.Storage.updateFile(list);","lastModifiedDate":"2024-02-07"},{"lineNumber":162,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":163,"author":{"gitId":"AwJoey"},"content":"// } catch (DateTimeException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":164,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":165,"author":{"gitId":"AwJoey"},"content":"// \"Oops, wrong datetime format! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":166,"author":{"gitId":"AwJoey"},"content":"// \"Please follow this format \u003cdd/MM/yyyy HHmm\u003e (e.g. 2/12/2019 1800) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":167,"author":{"gitId":"AwJoey"},"content":"// \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":168,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":169,"author":{"gitId":"AwJoey"},"content":"// } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":170,"author":{"gitId":"AwJoey"},"content":"// System.out.println( \"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":171,"author":{"gitId":"AwJoey"},"content":"// \"Oops, I\u0027m not sure what you meant by that! Commands available:\");","lastModifiedDate":"2024-02-06"},{"lineNumber":172,"author":{"gitId":"AwJoey"},"content":"// for (duke.command.Command c: EnumSet.allOf(duke.command.Command.class)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":173,"author":{"gitId":"AwJoey"},"content":"// System.out.println(c.commandSignature);","lastModifiedDate":"2024-02-06"},{"lineNumber":174,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":175,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":176,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":177,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":178,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":179,"author":{"gitId":"AwJoey"},"content":"// finally {","lastModifiedDate":"2024-02-06"},{"lineNumber":180,"author":{"gitId":"AwJoey"},"content":"// input \u003d sc.nextLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":181,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":182,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":183,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":184,"author":{"gitId":"AwJoey"},"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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":185,"author":{"gitId":"AwJoey"},"content":"// \"Bye. Hope to see you again soon! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":186,"author":{"gitId":"AwJoey"},"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\u003d\u003d \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":187,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":188,"author":{"gitId":"AwJoey"},"content":"//","lastModifiedDate":"2024-02-06"},{"lineNumber":189,"author":{"gitId":"AwJoey"},"content":"// public static void printTaskList(ArrayList\u003cduke.task.Task\u003e list) {","lastModifiedDate":"2024-02-07"},{"lineNumber":190,"author":{"gitId":"AwJoey"},"content":"// System.out.println( \"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":191,"author":{"gitId":"AwJoey"},"content":"// \"Here are the tasks in your list:\");","lastModifiedDate":"2024-02-06"},{"lineNumber":192,"author":{"gitId":"AwJoey"},"content":"// if (list.isEmpty()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":193,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"----You have no tasks yet.----\");","lastModifiedDate":"2024-02-06"},{"lineNumber":194,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":195,"author":{"gitId":"AwJoey"},"content":"// else {","lastModifiedDate":"2024-02-06"},{"lineNumber":196,"author":{"gitId":"AwJoey"},"content":"// for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":197,"author":{"gitId":"AwJoey"},"content":"// duke.task.Task iTask \u003d list.get(i);","lastModifiedDate":"2024-02-07"},{"lineNumber":198,"author":{"gitId":"AwJoey"},"content":"// System.out.println((i + 1) + \". \" + iTask.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":199,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":200,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":201,"author":{"gitId":"AwJoey"},"content":"// System.out.println( \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":202,"author":{"gitId":"AwJoey"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":203,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":204,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"AwJoey":203,"-":1}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"package duke;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":" public DukeException() {","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":" super();","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":" super(message);","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"AwJoey":12}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"package duke.command;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":"public enum Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":" TODO(\"todo\", \"todo \u003ctask_name\u003e\"),","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":" DEADLINE(\"deadline\", \"deadline \u003ctask_name\u003e /by \u003cdue_date\u003e\"),","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":" EVENT(\"event\",\"event \u003ctask_name\u003e /from \u003cstart_date\u003e /to \u003cend_date\"),","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":" LIST(\"list\", \"list\"),","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":" MARK (\"mark\", \"mark \u003ctask_number\u003e\"),","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":" UNMARK(\"unmark\", \"unmark \u003ctask_number\u003e\"),","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":" DELETE(\"delete\", \"delete \u003ctask_number\u003e\"),","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":" TERMINATE(\"bye\", \"bye\");","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":" public final String commandName;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":" public final String commandSignature;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":" private Command(String commandName, String commandSignature) {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"AwJoey"},"content":" this.commandName \u003d commandName;","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"AwJoey"},"content":" this.commandSignature \u003d commandSignature;","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"AwJoey":20}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"package duke.parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":"import duke.command.Command;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":"import duke.task.*;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":"public class Parser {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":" public static DateTimeFormatter dateTimeFormatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":" //public static DateTimeFormatter dateTimeString \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":" public static boolean parse(String input, Ui ui) {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"AwJoey"},"content":" int cmdSplit \u003d input.indexOf(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"AwJoey"},"content":" String command \u003d input;","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"AwJoey"},"content":" String task \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"AwJoey"},"content":" if (cmdSplit \u003d\u003d -1) {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"AwJoey"},"content":" if (command.equals(Command.MARK.commandName) | command.equals(Command.UNMARK.commandName) | command.equals(Command.DELETE.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"AwJoey"},"content":" \"Oops, I\u0027m not sure which task you are referring to! Please indicate a task number (e.g. \" + command + \" 1) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"AwJoey"},"content":" } else if (command.equals(Command.TODO.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"AwJoey"},"content":" \"Oops, wrong format! Please indicate task details (e.g. todo CS2103 Lab 1) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"AwJoey"},"content":" } else if (command.equals(Command.LIST.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"AwJoey"},"content":" TaskList.printTaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"AwJoey"},"content":" } else if (command.equals(Command.TERMINATE.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"AwJoey"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"AwJoey"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorAndPrintCommands();","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"AwJoey"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"AwJoey"},"content":" command \u003d input.substring(0, cmdSplit);","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"AwJoey"},"content":" task \u003d input.substring(input.indexOf(\" \") + 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"AwJoey"},"content":" if (command.equals(Command.MARK.commandName) | command.equals(Command.UNMARK.commandName) | command.equals(Command.DELETE.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"AwJoey"},"content":" int taskNo \u003d Integer.parseInt(task) - 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"AwJoey"},"content":" if (command.equals(Command.MARK.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"AwJoey"},"content":" TaskList.markTask(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"AwJoey"},"content":" } else if (command.equals(Command.UNMARK.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"AwJoey"},"content":" TaskList.unmarkTask(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"AwJoey"},"content":" } else if (command.equals(Command.DELETE.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"AwJoey"},"content":" TaskList.removeTask(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"AwJoey"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorNumbersOnly();","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"AwJoey"},"content":" } else if (command.equals(Command.TODO.commandName) | command.equals(Command.DEADLINE.commandName) | command.equals(Command.EVENT.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"AwJoey"},"content":" Task t \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"AwJoey"},"content":" boolean success \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"AwJoey"},"content":" if (command.equals(Command.TODO.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"AwJoey"},"content":" t \u003d new ToDo(task, false);","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"AwJoey"},"content":" } else if (command.equals(Command.DEADLINE.commandName)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"AwJoey"},"content":" if (task \u003d\u003d null || !task.contains(\" /by \")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"AwJoey"},"content":" success \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorDeadlineFormat();","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"AwJoey"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"AwJoey"},"content":" String[] deadline \u003d task.split(\" /by \");","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"AwJoey"},"content":" t \u003d new Deadline(deadline[0], false, LocalDateTime.parse(deadline[1], dateTimeFormatter));","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"AwJoey"},"content":" //test","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"AwJoey"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"AwJoey"},"content":" if (task \u003d\u003d null || !(task.contains(\" /from \") \u0026\u0026 task.contains(\" /to \"))) {","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"AwJoey"},"content":" success \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorEventFormat();","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"AwJoey"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"AwJoey"},"content":" String event \u003d task.substring(0, task.indexOf(\" /from \"));","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"AwJoey"},"content":" LocalDateTime from \u003d LocalDateTime.parse(task.substring(task.indexOf(\"/from \") + 6, task.indexOf(\" /to \")), dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"AwJoey"},"content":" LocalDateTime to \u003d LocalDateTime.parse(task.substring((task.indexOf(\"/to \") + 4)), dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"AwJoey"},"content":" t \u003d new Event(event, false, from, to);","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"AwJoey"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorEventTimingFormat();","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"AwJoey"},"content":" if (success) {","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"AwJoey"},"content":" TaskList.addTask(t);","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"AwJoey"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorDatetimeFormat();","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"AwJoey"},"content":" else {","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorAndPrintCommands();","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"AwJoey"},"content":" return false;","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"AwJoey":96}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"package duke.storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":"import duke.task.Event;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":"import duke.task.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":"import duke.task.ToDo;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"AwJoey"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"AwJoey"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"AwJoey"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"AwJoey"},"content":"public class Storage {","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"AwJoey"},"content":" private static final String HOME \u003d System.getProperty(\"user.home\");","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"AwJoey"},"content":" private static final Path FILEPATH \u003d Paths.get(HOME, \"Downloads\", \"NUS_CS\",","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"AwJoey"},"content":" \"CS2103\", \"duke.txt\");","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"AwJoey"},"content":" public Storage() {","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"AwJoey"},"content":" public static ArrayList\u003cTask\u003e retrieveList() throws IOException {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"AwJoey"},"content":" if (Files.exists(FILEPATH)) {","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"AwJoey"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"AwJoey"},"content":" BufferedReader br \u003d Files.newBufferedReader(FILEPATH);","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"AwJoey"},"content":" String currentLine \u003d null;","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"AwJoey"},"content":" while ((currentLine \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"AwJoey"},"content":" String[] inputs \u003d currentLine.split(\",\");","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"AwJoey"},"content":" boolean isDone \u003d Boolean.parseBoolean(inputs[1]);","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"AwJoey"},"content":" switch (inputs[0]) {","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"AwJoey"},"content":" case \"T\":","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"AwJoey"},"content":" ToDo t \u003d new ToDo(inputs[2], isDone);","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"AwJoey"},"content":" taskList.add(t);","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"AwJoey"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"AwJoey"},"content":" case \"D\":","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"AwJoey"},"content":" LocalDateTime by \u003d LocalDateTime.parse(inputs[3], Parser.dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"AwJoey"},"content":" Deadline d \u003d new Deadline(inputs[2], isDone, by);","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"AwJoey"},"content":" taskList.add(d);","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"AwJoey"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"AwJoey"},"content":" case \"E\":","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"AwJoey"},"content":" LocalDateTime from \u003d LocalDateTime.parse(inputs[3], Parser.dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"AwJoey"},"content":" LocalDateTime to \u003d LocalDateTime.parse(inputs[4], Parser.dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"AwJoey"},"content":" Event e \u003d new Event(inputs[0], isDone, from, to);","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"AwJoey"},"content":" taskList.add(e);","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"AwJoey"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"AwJoey"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"AwJoey"},"content":" //System.out.println(\"LOG: Dates of tasks corrupted.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"AwJoey"},"content":" Ui.showLoadingError();","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"AwJoey"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"AwJoey"},"content":" return taskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"AwJoey"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"AwJoey"},"content":" //System.out.println(\"LOG: File not found, empty list\");","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"AwJoey"},"content":" Ui.showLoadingError();","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"AwJoey"},"content":" return new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"AwJoey"},"content":" public static void updateFile(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"AwJoey"},"content":" createFile();","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"AwJoey"},"content":" ArrayList\u003cString\u003e taskContent \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"AwJoey"},"content":" for (Task t : taskList) {","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"AwJoey"},"content":" taskContent.add(t.toStore());","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"AwJoey"},"content":" Files.write(FILEPATH, taskContent);","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"LOG: Updated file contents.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"AwJoey"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"LOG: File cannot be found.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"AwJoey"},"content":" public static void createFile() {","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"AwJoey"},"content":" Files.createFile(FILEPATH);","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"LOG: File created\");","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"AwJoey"},"content":" catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"AwJoey"},"content":"// System.out.println(\"LOG: File already exists.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"AwJoey":97}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"package duke.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":" static protected String ALIAS \u003d \"D\";","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":" public Deadline(String taskName, boolean status, LocalDateTime by) {","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":" super(taskName, status);","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"AwJoey"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"AwJoey"},"content":" return \"[\" + ALIAS + \"]\" + super.toString() + \" (by: \" + by.format(dateTimeString) + \")\";","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"AwJoey"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"AwJoey"},"content":" public String toStore() {","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"AwJoey"},"content":" return ALIAS + super.toStore() + \",\" + by.format(Parser.dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AwJoey":25}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"package duke.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":" static protected String ALIAS \u003d \"E\";","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":" public Event(String taskName, boolean status, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":" super(taskName, status);","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"AwJoey"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"AwJoey"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"AwJoey"},"content":" return \"[\" + ALIAS + \"]\" + super.toString() + \" (from: \" + from.format(dateTimeString) + \" to: \" + to.format(dateTimeString) + \")\";","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"AwJoey"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"AwJoey"},"content":" public String toStore() {","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"AwJoey"},"content":" return ALIAS + super.toStore() + \",\" + from.format(Parser.dateTimeFormatter) + \",\" + to.format(Parser.dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AwJoey":27}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"package duke.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":" public static DateTimeFormatter dateTimeString \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy hh:mma\");","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":" private String taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":" protected boolean status;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":" public Task(String taskName, boolean status) {","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":" this.status \u003d status;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":" public String getTaskName() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":" return taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"AwJoey"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"AwJoey"},"content":" return status ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"AwJoey"},"content":" public void done() {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"AwJoey"},"content":" status \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"AwJoey"},"content":" public void undone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"AwJoey"},"content":" status \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"AwJoey"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"AwJoey"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"AwJoey"},"content":" return getStatusIcon() + \" \" + taskName;","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"AwJoey"},"content":" public String toStore() {","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"AwJoey"},"content":" return \",\" + status + \",\" + taskName;","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AwJoey":38}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"package duke.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":"public class TaskList extends ArrayList\u003cTask\u003e {","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":" private static ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":" public TaskList() {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"AwJoey"},"content":" public static void addTask(Task t) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"AwJoey"},"content":" tasks.add(t);","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"AwJoey"},"content":" Ui.printTaskAdded(t, tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"AwJoey"},"content":" Storage.updateFile(tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"AwJoey"},"content":" public static void removeTask(int taskNo) {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"AwJoey"},"content":" Task t \u003d tasks.get(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"AwJoey"},"content":" tasks.remove(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"AwJoey"},"content":" Ui.printTaskRemoved(t, tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"AwJoey"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorNotExist(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"AwJoey"},"content":" public static void markTask(int taskNo) {","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"AwJoey"},"content":" Task t \u003d tasks.get(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"AwJoey"},"content":" t.done();","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"AwJoey"},"content":" Ui.printTaskMarked(taskNo, t);","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"AwJoey"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorNotExist(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"AwJoey"},"content":" public static void unmarkTask(int taskNo) {","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"AwJoey"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"AwJoey"},"content":" Task t \u003d tasks.get(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"AwJoey"},"content":" t.undone();","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"AwJoey"},"content":" Ui.printTaskUnmarked(taskNo, t);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"AwJoey"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"AwJoey"},"content":" Ui.showErrorNotExist(taskNo);","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"AwJoey"},"content":" public static void printTaskList() {","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"AwJoey"},"content":" Ui.printTasks(tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"AwJoey":57}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"package duke.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":"public class ToDo extends Task{","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":" static protected String ALIAS \u003d \"T\";","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":" public ToDo(String taskName, boolean status) {","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":" super(taskName, status);","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":" return \"[\" + ALIAS + \"]\" + super.toString();","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":" public String toStore() {","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":" return ALIAS + super.toStore();","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AwJoey":18}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"package duke.ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":"import duke.command.Command;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":"import duke.task.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":"import java.io.InputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":"import java.io.PrintStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":"import java.util.EnumSet;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"AwJoey"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"AwJoey"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"AwJoey"},"content":" * Text UI of the application","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"AwJoey"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"AwJoey"},"content":"public class Ui {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"AwJoey"},"content":" private static final String BORDER_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\";","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"AwJoey"},"content":" private static final String DIVIDER \u003d \"--------------------------------\";","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"AwJoey"},"content":" private final Scanner in;","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"AwJoey"},"content":" private final PrintStream out;","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"AwJoey"},"content":" public Ui() {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"AwJoey"},"content":" this(System.in, System.out);","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"AwJoey"},"content":" public Ui(InputStream in, PrintStream out) {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"AwJoey"},"content":" this.in \u003d new Scanner(in);","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"AwJoey"},"content":" this.out \u003d out;","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"AwJoey"},"content":" public void showWelcome() {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"AwJoey"},"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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"AwJoey"},"content":" \"Hello I\u0027m Axolotl! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"AwJoey"},"content":" \"What can I do for you? \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"AwJoey"},"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\u003d\u003d \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"AwJoey"},"content":" public String readCommand() {","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"AwJoey"},"content":" String input \u003d in.nextLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"AwJoey"},"content":" return input;","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"AwJoey"},"content":" public static void printTaskMarked(int taskNo, Task t) {","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"AwJoey"},"content":" \"Nice! I\u0027ve marked task \" + (taskNo + 1) + \" as done: \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"AwJoey"},"content":" t.toString() + \"\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"AwJoey"},"content":" public static void printTaskUnmarked(int taskNo, Task t) {","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"AwJoey"},"content":" \"Sure, I\u0027ve marked task \" + (taskNo + 1) + \" as not done yet: \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"AwJoey"},"content":" t.toString() + \"\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"AwJoey"},"content":" public static void printTaskRemoved(Task t, ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"AwJoey"},"content":" \"Okay, I will delete this task: \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"AwJoey"},"content":" t.toString() + \"\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"AwJoey"},"content":" \"You now have \" + list.size() + \" in the list. \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"AwJoey"},"content":" public static void printTaskAdded(Task t, ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"AwJoey"},"content":" \"Sure, I\u0027ve added this task: \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"AwJoey"},"content":" t.toString() + \"\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"AwJoey"},"content":" \"Now you have \" + list.size() + \" task(s) in the list. \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"AwJoey"},"content":" public static void printTasks(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"AwJoey"},"content":" System.out.println( \"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"AwJoey"},"content":" \"Here are the tasks in your list:\");","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"AwJoey"},"content":" if (list.isEmpty()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"----You have no tasks yet.----\");","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"AwJoey"},"content":" else {","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"AwJoey"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"AwJoey"},"content":" Task iTask \u003d list.get(i);","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"AwJoey"},"content":" System.out.println((i + 1) + \". \" + iTask.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"AwJoey"},"content":" System.out.println( \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"AwJoey"},"content":" public static void showLoadingError() {","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"AwJoey"},"content":" \"Oops, error in uploading saved tasks. Please check if the format is correct.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"AwJoey"},"content":" public static void showErrorNotExist(int taskNo) {","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"AwJoey"},"content":" \"Oops, task \" + (taskNo + 1) + \" does not exist. Please try again! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"AwJoey"},"content":" \"Here is your list for reference: \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"AwJoey"},"content":" TaskList.printTaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"AwJoey"},"content":" public static void showErrorNumbersOnly() {","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"AwJoey"},"content":" \"Oops, please enter task numbers instead! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":106,"author":{"gitId":"AwJoey"},"content":" \"(e.g. mark 1) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":107,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"AwJoey"},"content":" public static void showErrorDeadlineFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":111,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"AwJoey"},"content":" \"Oops, wrong format! Please follow this format for deadline task entries (e.g. deadline submit report /by 11/10/2019 5pm ) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":113,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"AwJoey"},"content":" public static void showErrorEventFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":118,"author":{"gitId":"AwJoey"},"content":" \"Oops, wrong format! Please follow this format for event task entries (e.g. event team project meeting /from 11/10/2019 4pm /to 11/10/2019 5pm ) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":119,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":121,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":122,"author":{"gitId":"AwJoey"},"content":" public static void showErrorDatetimeFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":123,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":124,"author":{"gitId":"AwJoey"},"content":" \"Oops, wrong datetime format! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":125,"author":{"gitId":"AwJoey"},"content":" \"Please follow this format \u003cdd/MM/yyyy HHmm\u003e (e.g. 02/12/2019 1800) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":126,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":127,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":128,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":129,"author":{"gitId":"AwJoey"},"content":" public static void showErrorEventTimingFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":130,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":131,"author":{"gitId":"AwJoey"},"content":" \"Oops, wrong format! Please follow this format for event task entries (e.g. event team project meeting /from 11/10/2019 4pm /to 11/10/2019 5pm ) \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":132,"author":{"gitId":"AwJoey"},"content":" \"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":133,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":134,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":135,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":136,"author":{"gitId":"AwJoey"},"content":" public void showLine() {","lastModifiedDate":"2024-02-06"},{"lineNumber":137,"author":{"gitId":"AwJoey"},"content":" out.println(DIVIDER);","lastModifiedDate":"2024-02-06"},{"lineNumber":138,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":139,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":140,"author":{"gitId":"AwJoey"},"content":" public static void showErrorAndPrintCommands() {","lastModifiedDate":"2024-02-06"},{"lineNumber":141,"author":{"gitId":"AwJoey"},"content":" System.out.println( \"-------------------------------- \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":142,"author":{"gitId":"AwJoey"},"content":" \"Oops, I\u0027m not sure what you meant by that! Commands available:\");","lastModifiedDate":"2024-02-06"},{"lineNumber":143,"author":{"gitId":"AwJoey"},"content":" for (Command c: EnumSet.allOf(Command.class)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":144,"author":{"gitId":"AwJoey"},"content":" System.out.println(c.commandSignature);","lastModifiedDate":"2024-02-06"},{"lineNumber":145,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":146,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":147,"author":{"gitId":"AwJoey"},"content":" System.out.println(\"-------------------------------- \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":148,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":149,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":150,"author":{"gitId":"AwJoey"},"content":" public static void showExit() {","lastModifiedDate":"2024-02-06"},{"lineNumber":151,"author":{"gitId":"AwJoey"},"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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":152,"author":{"gitId":"AwJoey"},"content":" \"Bye. Hope to see you again soon! \\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":153,"author":{"gitId":"AwJoey"},"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\u003d\u003d \\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":154,"author":{"gitId":"AwJoey"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":155,"author":{"gitId":"AwJoey"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":156,"author":{"gitId":"AwJoey"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"AwJoey":156}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"AwJoey"},"content":"todo read book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"AwJoey"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"AwJoey"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"AwJoey"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"AwJoey"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"AwJoey"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"AwJoey"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"AwJoey"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"AwJoey"},"content":"unmark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"AwJoey"},"content":"list","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"AwJoey":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":"AwJoey"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-07"},{"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":{"AwJoey":1,"-":20}}] diff --git a/AwJoey_ip_master/commits.json b/AwJoey_ip_master/commits.json index 2d9a3b74..adf5ddf2 100644 --- a/AwJoey_ip_master/commits.json +++ b/AwJoey_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"AwJoey":[{"date":"2024-01-22","commitResults":[{"hash":"706bdd2dcbe7abf5fb42635bd65505d2be0ba52c","isMergeCommit":false,"messageTitle":"chatbot renamed to axolotl and added greet and exit messages","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}}]},{"date":"2024-01-23","commitResults":[{"hash":"b1c043b61b4eee9dab54a321be47f1bfcdc8a058","isMergeCommit":false,"messageTitle":"edited design of greeting messages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":4}}},{"hash":"3f3b635e09e8508de06e1dc09a85b81002c9fd1c","isMergeCommit":false,"messageTitle":"optimizing input and print speed","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":3}}},{"hash":"1e7e93eb398cecfa4e20797dd775b6f23d6f7fe3","isMergeCommit":false,"messageTitle":"echo commands entered by user","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":7}}},{"hash":"3de828db7ba2d66f6a36093f69ef75d379af3ccf","isMergeCommit":false,"messageTitle":"store user inputs into list and list can be displayed","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":39}}}]},{"date":"2024-01-24","commitResults":[{"hash":"909b7bef3764acf87d03f6967b8fabbb20392219","isMergeCommit":false,"messageTitle":"Created Task class as tasks have statuses now","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"1ff9cfbd1e01187afbc69ffcecbc477dd8c000a7","isMergeCommit":false,"messageTitle":"Added the ability to mark tasks as done/undone","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":5}}},{"hash":"71123bb654b954c84cae7ffd495b86d6b791f5d8","isMergeCommit":false,"messageTitle":"Made changes to the method of task status retrieval so as to reduce repetition","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":8}}},{"hash":"fc241fb079f75340b15528356b5c93d6600a83d4","isMergeCommit":false,"messageTitle":"Implemented new types of Tasks (ToDo, Deadline, Event) and edited chatbot\u0027s commands to cater to them","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":24}}},{"hash":"476eccfcdad83600489addc93a641074d1be6c64","isMergeCommit":false,"messageTitle":"set up automated text UI testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}},{"hash":"9ae30280ec676fa874446b923a21305e0fe27386","isMergeCommit":false,"messageTitle":"handled some errors that may occur and customized error messages for each case","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":14}}},{"hash":"0dff871844f859a163505b03a3e228af073d5f2f","isMergeCommit":false,"messageTitle":"discovered more errors and handled them","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":103}}}]},{"date":"2024-01-25","commitResults":[{"hash":"507b65005b4e6e740d97cf2e415f901f8ddd6bd0","isMergeCommit":false,"messageTitle":"Implemented delete function to chatbot","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":30}}},{"hash":"61a0a84d0384ff183609373a9d3a4a58cb919c67","isMergeCommit":false,"messageTitle":"Implemented enumerators for command types for easy additiona nd modification in future","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":68}}}]},{"date":"2024-01-29","commitResults":[{"hash":"385595d0df1d9034a8405eed0ce71246cd167fe0","isMergeCommit":false,"messageTitle":"Revert \"Implemented enumerators for command types for easy additiona nd modification in future\"","messageBody":"This reverts commit 61a0a84d0384ff183609373a9d3a4a58cb919c67.\n","fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":79}}},{"hash":"de18a2b2320da018d59252fe1dc1b7e2107cdba2","isMergeCommit":false,"messageTitle":"Reapply \"Implemented enumerators for command types for easy additiona nd modification in future\"","messageBody":"This reverts commit 385595d0df1d9034a8405eed0ce71246cd167fe0.\n","fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":68}}}]},{"date":"2024-02-01","commitResults":[{"hash":"4c76f42c8b1e685cbf0d77e6cf1651179f3802c9","isMergeCommit":false,"messageTitle":"Add DukeExcpetion.java","messageBody":"To handle general exceptions in the application.\n","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"07f6f7277fab0948c76e2f83d3c881293df1539b","isMergeCommit":false,"messageTitle":"Add Storage.java: to consolidate IO file functions","messageBody":"Make code easier to find and implement for future edits and debug.\n","fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":0}}},{"hash":"281b511a9cf7a121477238b285e08f79519db85e","isMergeCommit":false,"messageTitle":"Edit Event.java, Task.java, ToDo.java: added toStore() method","messageBody":"Task subclasses have some common behaviors.\n\nThe common behaviors across different Task subtypes cause code\nduplication.\n\nExtracting the common behavior into a super class allows us to use\npolymorphism when storing file content.\n\nLet\u0027s pull up storage behaviors common to all task subclasses into a new\nparent class named Task.\n\nUsing inheritance is preferable over composition in this situation\nbecause the common behaviors are not composable.\n","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":14}}},{"hash":"473bd1d3a58f0c4f27a6803fe9056e3e1e8bcb28","isMergeCommit":false,"messageTitle":"Edit Duke.java: Implement save tasks feature","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}}]},{"date":"2024-02-04","commitResults":[{"hash":"559d01fa5cdc53eeeca15560ba5cb4801da22b16","isMergeCommit":false,"messageTitle":"Edit Event.java, Task.java, Deadline.java: edited dates from String to DateTime","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":10}}},{"hash":"ab1b6441480e060dac46fcb8105d13486b0be28c","isMergeCommit":false,"messageTitle":"Edit Duke.java, Storage.java: edited methods involving addition of Tasks which involve time (Deadline, Event)","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":59}}}]},{"date":"2024-02-05","commitResults":[{"hash":"beabf230e13648f58fe5810379ae06927ff5f401","isMergeCommit":false,"messageTitle":"Edit Duke.java: Caught IndexOutOfBounds for Event entry format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":4}}}]},{"date":"2024-02-06","commitResults":[{"hash":"9648928e346619c6d60666169b9e6fb359e9fd01","isMergeCommit":false,"messageTitle":"Add Ui.java: to consolidate System IO functions in a place","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":150,"deletions":0}}},{"hash":"bdfdc45cfd515daeb10d60e96f5ca72393cd4bc9","isMergeCommit":false,"messageTitle":"Command.java: Enum class for saving command names and description","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"f6bd40c38c20b3134acb7327d12c22bdac604172","isMergeCommit":false,"messageTitle":"Add Parser.java: Process user command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":0}}},{"hash":"de0bee027067018ac16dab56eaef01416e6b605d","isMergeCommit":false,"messageTitle":"Add TaskList.java: Consolidate operations to do on task list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":0}}},{"hash":"71228bc9ad047a00b43612546a98d58fcadfd028","isMergeCommit":false,"messageTitle":"Add Storage.java: Operations to save/retrieve tasks from local file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":39}}},{"hash":"ba080040c91c1cac11e62a19036f325a23d278bb","isMergeCommit":false,"messageTitle":"Add DukeException.java: Custom exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"a8966636f4544834830ef9f47e392133a2f1ec8a","isMergeCommit":false,"messageTitle":"Edit Deadline.java, Duke.java, Event.java: modifications to cater to new code consolidation","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":187,"deletions":183}}}]}]},"authorFileTypeContributionMap":{"AwJoey":{"java":705,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":10}},"authorContributionVariance":{"AwJoey":40971.324},"authorDisplayNameMap":{"AwJoey":"CS2103-F15-4 AW J..JOEY"}} +{"authorDailyContributionsMap":{"AwJoey":[{"date":"2024-01-22","commitResults":[{"hash":"706bdd2dcbe7abf5fb42635bd65505d2be0ba52c","isMergeCommit":false,"messageTitle":"chatbot renamed to axolotl and added greet and exit messages","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}}]},{"date":"2024-01-23","commitResults":[{"hash":"b1c043b61b4eee9dab54a321be47f1bfcdc8a058","isMergeCommit":false,"messageTitle":"edited design of greeting messages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":4}}},{"hash":"3f3b635e09e8508de06e1dc09a85b81002c9fd1c","isMergeCommit":false,"messageTitle":"optimizing input and print speed","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":3}}},{"hash":"1e7e93eb398cecfa4e20797dd775b6f23d6f7fe3","isMergeCommit":false,"messageTitle":"echo commands entered by user","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":7}}},{"hash":"3de828db7ba2d66f6a36093f69ef75d379af3ccf","isMergeCommit":false,"messageTitle":"store user inputs into list and list can be displayed","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":39}}}]},{"date":"2024-01-24","commitResults":[{"hash":"909b7bef3764acf87d03f6967b8fabbb20392219","isMergeCommit":false,"messageTitle":"Created Task class as tasks have statuses now","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"1ff9cfbd1e01187afbc69ffcecbc477dd8c000a7","isMergeCommit":false,"messageTitle":"Added the ability to mark tasks as done/undone","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":5}}},{"hash":"71123bb654b954c84cae7ffd495b86d6b791f5d8","isMergeCommit":false,"messageTitle":"Made changes to the method of task status retrieval so as to reduce repetition","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":8}}},{"hash":"fc241fb079f75340b15528356b5c93d6600a83d4","isMergeCommit":false,"messageTitle":"Implemented new types of Tasks (ToDo, Deadline, Event) and edited chatbot\u0027s commands to cater to them","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":24}}},{"hash":"476eccfcdad83600489addc93a641074d1be6c64","isMergeCommit":false,"messageTitle":"set up automated text UI testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0}}},{"hash":"9ae30280ec676fa874446b923a21305e0fe27386","isMergeCommit":false,"messageTitle":"handled some errors that may occur and customized error messages for each case","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":14}}},{"hash":"0dff871844f859a163505b03a3e228af073d5f2f","isMergeCommit":false,"messageTitle":"discovered more errors and handled them","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":103}}}]},{"date":"2024-01-25","commitResults":[{"hash":"507b65005b4e6e740d97cf2e415f901f8ddd6bd0","isMergeCommit":false,"messageTitle":"Implemented delete function to chatbot","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":30}}},{"hash":"61a0a84d0384ff183609373a9d3a4a58cb919c67","isMergeCommit":false,"messageTitle":"Implemented enumerators for command types for easy additiona nd modification in future","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":68}}}]},{"date":"2024-01-29","commitResults":[{"hash":"385595d0df1d9034a8405eed0ce71246cd167fe0","isMergeCommit":false,"messageTitle":"Revert \"Implemented enumerators for command types for easy additiona nd modification in future\"","messageBody":"This reverts commit 61a0a84d0384ff183609373a9d3a4a58cb919c67.\n","fileTypesAndContributionMap":{"java":{"insertions":68,"deletions":79}}},{"hash":"de18a2b2320da018d59252fe1dc1b7e2107cdba2","isMergeCommit":false,"messageTitle":"Reapply \"Implemented enumerators for command types for easy additiona nd modification in future\"","messageBody":"This reverts commit 385595d0df1d9034a8405eed0ce71246cd167fe0.\n","fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":68}}}]},{"date":"2024-02-01","commitResults":[{"hash":"4c76f42c8b1e685cbf0d77e6cf1651179f3802c9","isMergeCommit":false,"messageTitle":"Add DukeExcpetion.java","messageBody":"To handle general exceptions in the application.\n","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"07f6f7277fab0948c76e2f83d3c881293df1539b","isMergeCommit":false,"messageTitle":"Add Storage.java: to consolidate IO file functions","messageBody":"Make code easier to find and implement for future edits and debug.\n","fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":0}}},{"hash":"281b511a9cf7a121477238b285e08f79519db85e","isMergeCommit":false,"messageTitle":"Edit Event.java, Task.java, ToDo.java: added toStore() method","messageBody":"Task subclasses have some common behaviors.\n\nThe common behaviors across different Task subtypes cause code\nduplication.\n\nExtracting the common behavior into a super class allows us to use\npolymorphism when storing file content.\n\nLet\u0027s pull up storage behaviors common to all task subclasses into a new\nparent class named Task.\n\nUsing inheritance is preferable over composition in this situation\nbecause the common behaviors are not composable.\n","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":14}}},{"hash":"473bd1d3a58f0c4f27a6803fe9056e3e1e8bcb28","isMergeCommit":false,"messageTitle":"Edit Duke.java: Implement save tasks feature","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}}]},{"date":"2024-02-04","commitResults":[{"hash":"559d01fa5cdc53eeeca15560ba5cb4801da22b16","isMergeCommit":false,"messageTitle":"Edit Event.java, Task.java, Deadline.java: edited dates from String to DateTime","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":10}}},{"hash":"ab1b6441480e060dac46fcb8105d13486b0be28c","isMergeCommit":false,"messageTitle":"Edit Duke.java, Storage.java: edited methods involving addition of Tasks which involve time (Deadline, Event)","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":59}}}]},{"date":"2024-02-05","commitResults":[{"hash":"beabf230e13648f58fe5810379ae06927ff5f401","isMergeCommit":false,"messageTitle":"Edit Duke.java: Caught IndexOutOfBounds for Event entry format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":4}}}]},{"date":"2024-02-06","commitResults":[{"hash":"9648928e346619c6d60666169b9e6fb359e9fd01","isMergeCommit":false,"messageTitle":"Add Ui.java: to consolidate System IO functions in a place","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":150,"deletions":0}}},{"hash":"bdfdc45cfd515daeb10d60e96f5ca72393cd4bc9","isMergeCommit":false,"messageTitle":"Command.java: Enum class for saving command names and description","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":0}}},{"hash":"f6bd40c38c20b3134acb7327d12c22bdac604172","isMergeCommit":false,"messageTitle":"Add Parser.java: Process user command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":0}}},{"hash":"de0bee027067018ac16dab56eaef01416e6b605d","isMergeCommit":false,"messageTitle":"Add TaskList.java: Consolidate operations to do on task list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":0}}},{"hash":"71228bc9ad047a00b43612546a98d58fcadfd028","isMergeCommit":false,"messageTitle":"Add Storage.java: Operations to save/retrieve tasks from local file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":39}}},{"hash":"ba080040c91c1cac11e62a19036f325a23d278bb","isMergeCommit":false,"messageTitle":"Add DukeException.java: Custom exception","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":1}}},{"hash":"a8966636f4544834830ef9f47e392133a2f1ec8a","isMergeCommit":false,"messageTitle":"Edit Deadline.java, Duke.java, Event.java: modifications to cater to new code consolidation","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":187,"deletions":183}}}]},{"date":"2024-02-07","commitResults":[{"hash":"a9c4e2a2c8b0893b951d5dd7bc4d1e3564777c37","isMergeCommit":false,"messageTitle":"Organize *.java files into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":29},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"AwJoey":{"java":749,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":10}},"authorContributionVariance":{"AwJoey":38931.797},"authorDisplayNameMap":{"AwJoey":"CS2103-F15-4 AW J..JOEY"}} diff --git a/CaptainKeqing_ip_master/authorship.json b/CaptainKeqing_ip_master/authorship.json index 3315cb54..12912965 100644 --- a/CaptainKeqing_ip_master/authorship.json +++ b/CaptainKeqing_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Lindi.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.Command;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.parser.Parser;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.StorageLoadException;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" * Entry point of Lindi Application.","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" * Initializes the application and starts the interaction with the user.","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"public class Lindi {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" private final Storage storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" private final Ui ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" private final String NAME \u003d \"Lindi\"; // Log It N Do It -\u003e LINDI","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" * Initializes Lindi","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" * @param dataDir directory of data file","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" * @param dataFileName name of data file","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" public Lindi(String dataDir, String dataFileName) {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" this.storage \u003d new Storage(dataDir, dataFileName);","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" this.ui \u003d new Ui(this.NAME);","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" this.tasks \u003d this.storage.loadFromFile();","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" } catch (StorageLoadException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" this.ui.displayError(e);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" * Runs the program. This loops until terminated by user with lindi.commands.ExitCommand.","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" public void run() {","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" this.ui.greeting();","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" boolean toExit \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" while (!toExit) {","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" String userInput \u003d this.ui.getUserInput();","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" Command c \u003d Parser.parse(userInput);","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" c.execute(this.tasks, this.storage);","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" this.ui.displayCommand(c);","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" toExit \u003d c.isExit();","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" new Lindi(\"./.data\", \"LindiData.txt\").run();","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"CaptainKeqing":56}},{"path":"src/main/java/lindi/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a user command to be executed","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"public abstract class Command {","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" protected String statusMsg \u003d \"Not executed yet\";","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" * Returns if the command is to exit. lindi.commands.ExitCommand overrides this method to return true.","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" * @return true if it is an lindi.commands.ExitCommand","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" return false;","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" * Returns the status message of this command.","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" public String status() {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" return this.statusMsg;","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" * Executes the command. Updates status msg accordingly.","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" * @param tasks lindi.task.TaskList to be used in execution. May be modified.","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" * @param storage lindi.storage.Storage for automatic saving of changes","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" public abstract void execute(TaskList tasks, Storage storage);","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":"// @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":"// public String toString() {","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"// return commandStatus();","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"CaptainKeqing":40}},{"path":"src/main/java/lindi/commands/CreateTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.CreateTaskException;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a command that creates a lindi.task.Task upon execution","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"public class CreateTaskCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" private final String commandString;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" * Creates command to create lindi.task.Task with the arguments supplied by the user","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" * @param commandString user input string","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" public CreateTaskCommand(String commandString) {","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" this.commandString \u003d commandString;","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" * Creates lindi.task relying on lindi.task.Task class factory method, adds it to lindi.task list.","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" try{","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" Task createdtask \u003d Task.create(this.commandString);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" tasks.add(createdtask);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d String.format(\"Okay. I\u0027ve deleted this lindi.task:\\n\\t%s\\nNow you have %d tasks in the list.\",","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" createdtask, tasks.size());","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" } catch (CreateTaskException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d e.getMessage();","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"CaptainKeqing":40}},{"path":"src/main/java/lindi/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a command that deletes a lindi.task.Task upon execution","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" private final int listIndex;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" * Creates command to delete a lindi.task.Task from the lindi.task list","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" * @param listIndex index of lindi.task to delete","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" public DeleteCommand(int listIndex) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" this.listIndex \u003d listIndex;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" * Delete the lindi.task at listIndex from tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" Task deletedTask \u003d tasks.delete(this.listIndex);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d String.format(\"Okay. I\u0027ve deleted this lindi.task:\\n\\t%s\\nNow you have %d tasks in the list.\",","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" deletedTask, tasks.size());","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d \"Sorry, I can\u0027t find that lindi.task. Please enter a valid index\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" \"You can see the tasks list by inputting \\\"list\\\"\";","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"CaptainKeqing":39}},{"path":"src/main/java/lindi/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a command that exits the program upon execution","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"CaptainKeqing":19}},{"path":"src/main/java/lindi/commands/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an invalid command that has no effect","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" * Creates the invalid command","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" * @param invalidMessage reason for invalidity","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" public InvalidCommand(String invalidMessage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d invalidMessage;","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" return; // Do nothing","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"CaptainKeqing":23}},{"path":"src/main/java/lindi/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a command that lists out tasks in the lindi.task list upon execution","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" * Loads the tasks in lindi.task list into status msg to be printed.","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d tasks.toString();","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"CaptainKeqing":19}},{"path":"src/main/java/lindi/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a command that marks a lindi.task as done upon execution","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" private final int listIndex;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" * Creates command that marks a lindi.task.Task in the lindi.task.Task List","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" * @param listIndex index of lindi.task to mark","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" public MarkCommand(int listIndex) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" this.listIndex \u003d listIndex;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" * Marks the lindi.task at listIndex in tasks as done.","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" Task markedTask \u003d tasks.mark(this.listIndex);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d \"Nice! I\u0027ve marked this lindi.task as done:\\n\\t\" + markedTask;","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d \"Sorry, I can\u0027t find that lindi.task. Please enter a valid index\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" \"You can see the tasks list by inputting \\\"list\\\"\";","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"CaptainKeqing":38}},{"path":"src/main/java/lindi/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a command that marks a lindi.task as not done upon execution","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" private final int listIndex;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" * Creates command that unmarks a lindi.task.Task in the lindi.task.Task List","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" * @param listIndex index of lindi.task to unmark","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" public UnmarkCommand(int listIndex) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" this.listIndex \u003d listIndex;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" * Marks the lindi.task at listIndex in tasks as `not` done.","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" Task unmarkedTask \u003d tasks.unmark(this.listIndex);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d \"Nice! I\u0027ve marked this lindi.task as not done yet:\\n\\t\" + unmarkedTask;","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d \"Sorry, I can\u0027t find that lindi.task. Please enter a valid index\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" \"You can see the tasks list by inputting \\\"list\\\"\";","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"CaptainKeqing":38}},{"path":"src/main/java/lindi/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.parser;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.Command;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.CreateTaskCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.DeleteCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.ExitCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.InvalidCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.ListCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.MarkCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.UnmarkCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" * Deals with making sense (parsing) of the user command.","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"public class Parser {","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" * Parses the user input and returns the corresponding lindi.commands.Command","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" * @param userInput the user input command string","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" * @return the lindi.commands.Command corresponding to the input string.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" public static Command parse(String userInput) {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" // if command called, will be index 0, rest of string (args) in index 1","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" String[] userInputTokens \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" String commandWord \u003d userInputTokens[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" String args \u003d userInputTokens.length \u003d\u003d 2 ? userInputTokens[1] : null;","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" switch (commandWord) {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" case \"list\":","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" return prepareUnmark(args);","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" case \"mark\":","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" return prepareMark(args);","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" case \"delete\":","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" return prepareDelete(args);","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" case \"todo\":","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" // Fallthrough","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" case \"event\":","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" // Fallthrough","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" return new CreateTaskCommand(userInput);","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" case \"bye\":","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" return new ExitCommand();","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" default:","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" return new InvalidCommand(\"Uhh, English please? Haha, just kidding...\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" \"but for reals I didn\u0027t really understand that :(\");","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" private static int getIndexFromArgs(String args) throws NumberFormatException {","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" return Integer.parseInt(args);","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" private static Command prepareUnmark(String args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" if (args \u003d\u003d null) {","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" return new InvalidCommand(\"Uh oh ! You have to give me the index \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" \"of the lindi.task you want to modify :)\");","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" int listIndex \u003d getIndexFromArgs(args);","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" return new UnmarkCommand(listIndex);","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" return new InvalidCommand(\"I\u0027m pretty sure I gave you the indexes in base 10...\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" \"there shouldn\u0027t be any characters!! :(\");","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" private static Command prepareMark(String args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" if (args \u003d\u003d null) {","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" return new InvalidCommand(\"Uh oh ! You have to give me the index \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" \"of the lindi.task you want to modify :)\");","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" int listIndex \u003d getIndexFromArgs(args);","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" return new MarkCommand(listIndex);","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" return new InvalidCommand(\"I\u0027m pretty sure I gave you the indexes in base 10...\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" \"there shouldn\u0027t be any characters!! :(\");","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" private static Command prepareDelete(String args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" if (args \u003d\u003d null) {","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" return new InvalidCommand(\"Uh oh ! You have to give me the index \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" \"of the lindi.task you want to modify :)\");","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" int listIndex \u003d getIndexFromArgs(args);","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" return new DeleteCommand(listIndex);","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":" return new InvalidCommand(\"I\u0027m pretty sure I gave you the indexes in base 10...\\n\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" \"there shouldn\u0027t be any characters!! :(\");","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"CaptainKeqing":102}},{"path":"src/main/java/lindi/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import java.io.File;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.CreateTaskException;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" * Represents the lindi.storage unit for the application. Deals with loading tasks from the file and saving tasks in the file.","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"public class Storage {","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" private FileWriter fileWriter;","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" private Scanner fileScanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" String dataDir;","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" String dataFileName;","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" * Initialises lindi.storage.Storage to load data from and save data to a file. Creates","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" * the required directories and files if necessary.","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" * @param dataDir directory to store the data file","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" * @param dataFileName name of data file (.txt format)","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" * @throws IOException - if an I/O operation occurred using File","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" public Storage(String dataDir, String dataFileName) {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" this.dataDir \u003d dataDir;","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" this.dataFileName \u003d dataFileName;","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" * Saves the lindi.task list to the designated text file for storing data for the program.","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" * Creates one if it does not exist yet.","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" * @param tasks lindi.task.Task list to save to file","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" public void saveToFile(TaskList tasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" // Loops through taskList, appends them to string with the specified format","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" tasks.getTasks().forEachRemaining(","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" task -\u003e {","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" String parsedTask \u003d task.parsedFormatToSave();","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" sb.append(parsedTask).append(\u0027\\n\u0027);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" );","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" // Creates the directories if they do not exist yet. No effect if it exists.","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" File dir \u003d new File(dataDir);","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" dir.mkdirs();","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" // Creates the file if it does not exist yet. No effect if it exists.","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" File dataFile \u003d new File(dir, dataFileName);","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" dataFile.createNewFile();","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" this.fileWriter \u003d new FileWriter(dataFile);","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" this.fileWriter.write(sb.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" this.fileWriter.close();","lastModifiedDate":"2024-02-05"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-02-05"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" * Loads the taskList from the data file for this session","lastModifiedDate":"2024-02-05"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" * @throws FileNotFoundException if data file not exist at file path","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" public TaskList loadFromFile() throws StorageLoadException {","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" this.fileScanner \u003d new Scanner(new File(dataDir, dataFileName));","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" TaskList tasksToReturn \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" // Data file exist in folder, load it into our taskList","lastModifiedDate":"2024-02-05"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" while (fileScanner.hasNextLine()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" String parsedString \u003d fileScanner.nextLine();","lastModifiedDate":"2024-02-05"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" Task task \u003d Task.createFromParsedString(parsedString);","lastModifiedDate":"2024-02-05"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" tasksToReturn.add(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" return tasksToReturn;","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" } catch (CreateTaskException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" throw new StorageLoadException(\"Error loading tasks from save file. Might be corrupted...\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" + e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" throw new StorageLoadException(\"Error loading tasks from save file. \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" \"File not found at path specified...\\n\" + new File(dataDir, dataFileName));","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"CaptainKeqing":92}},{"path":"src/main/java/lindi/storage/StorageLoadException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"public class StorageLoadException extends Exception {","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":" public StorageLoadException(String s) {","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":" super(s);","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"CaptainKeqing":7}},{"path":"src/main/java/lindi/task/CreateDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"public class CreateDeadlineException extends CreateTaskException {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":" public CreateDeadlineException(String s) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":" super(s);","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"CaptainKeqing":7}},{"path":"src/main/java/lindi/task/CreateEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"public class CreateEventException extends CreateTaskException {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":" public CreateEventException(String s) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":" super(s);","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"CaptainKeqing":7}},{"path":"src/main/java/lindi/task/CreateTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"public class CreateTaskException extends Exception {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":" public CreateTaskException(String s) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":" super(s);","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"CaptainKeqing":7}},{"path":"src/main/java/lindi/task/CreateToDoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"public class CreateToDoException extends CreateTaskException {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":" public CreateToDoException(String s) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":" super(s);","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"CaptainKeqing":7}},{"path":"src/main/java/lindi/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" public Deadline(String description, String by) throws CreateDeadlineException {","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" this.by \u003d LocalDateTime.parse(by, this.saveLoadDateTimeFormat);","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateDeadlineException(String.format(\"lindi.task.Deadline /by argument in the wrong format. Use \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" \"format \u0027%s\u0027 instead. Not saving seconds and below :)\", this.saveLoadDtFormatString));","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(this.displayDateTimeFormat) + \")\";","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" public String parsedFormatToSave() {","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" return String.format(\"D | %c | %s | %s\",","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" this.isDone ? \u0027y\u0027 : \u0027n\u0027, this.description,","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" this.by.format(this.saveLoadDateTimeFormat));","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"CaptainKeqing":29}},{"path":"src/main/java/lindi/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" public Event(String description, String from, String to) throws CreateEventException {","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" this.from \u003d LocalDateTime.parse(from, this.saveLoadDateTimeFormat);","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" this.to \u003d LocalDateTime.parse(to, this.saveLoadDateTimeFormat);","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateEventException(String.format(\"lindi.task.Event /from or /to argument in the wrong format. Use \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" \"format \u0027%s\u0027 for each instead. Not saving seconds and below :)\", this.saveLoadDtFormatString));","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" return \"[E]\" + super.toString() + String.format(\" (when: %s - %s)\",","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" this.from.format(this.displayDateTimeFormat),","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" this.to.format(this.displayDateTimeFormat));","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" public String parsedFormatToSave() {","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" return String.format(\"E | %c | %s | %s | %s\",","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" this.isDone ? \u0027y\u0027 : \u0027n\u0027, this.description,","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" this.from.format(this.saveLoadDateTimeFormat),","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" this.to.format(this.saveLoadDateTimeFormat));","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"CaptainKeqing":35}},{"path":"src/main/java/lindi/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"public abstract class Task { // Adapted from Course Website","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" protected final String displayDtFormatString \u003d \"MMM dd yyyy HH:mm\";","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" protected final String saveLoadDtFormatString \u003d \"yyyy-MM-dd-HH-mm\";","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" protected final DateTimeFormatter displayDateTimeFormat \u003d DateTimeFormatter.ofPattern(displayDtFormatString);","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" protected final DateTimeFormatter saveLoadDateTimeFormat \u003d DateTimeFormatter.ofPattern(saveLoadDtFormatString);","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" public static Task create(String fullString) throws CreateTaskException {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" // s is either `todo`, `event` or `deadline`","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" String[] sTokens \u003d fullString.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" if (sTokens.length \u003c 2) {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateTaskException(\"soo what exactly are you trying to do? :)\");","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" String command \u003d sTokens[0];","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" String taskString \u003d sTokens[1];","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" switch (command) {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" case \"todo\":","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" return new ToDo(taskString);","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" // Further split the remaining string based on /by","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" if (!taskString.contains(\"/by\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateDeadlineException(","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" \"You can\u0027t expect me to track a deadline if you don\u0027t give me the.. deadline right? haha\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" \"please include \u0027/by\u0027 followed by the deadline :)\");","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" String[] descriptionNBy \u003d taskString.split(\"/by\");","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" if (descriptionNBy.length \u003e 2) {","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateDeadlineException(\"Don\u0027t procrastinate with multiple deadlines !! :)\");","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" return new Deadline(descriptionNBy[0].trim(),","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" descriptionNBy[1].trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" // Further split the remaining string based on /from and /to","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" if (!taskString.contains(\"/from\") || !taskString.contains(\"/to\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateEventException(","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" \"I\u0027m not sure how you\u0027re going for an event without a start time or end time\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" \"please include \u0027/from\u0027 and \u0027/to\u0027 so I can keep track for you :)\");","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" if (taskString.indexOf(\"/from\") \u003e taskString.indexOf(\"/to\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateEventException(\"Sorry! /from must appear before /to :)\");","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" String[] descriptionNFromNTo \u003d taskString.split(\"/from |/to \");","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" if (descriptionNFromNTo.length \u003e 3) {","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateEventException(\"um.. I\u0027m not sure how I can track for you an event that has\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" \"more than 1 start or end time! :)\");","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" return new Event(descriptionNFromNTo[0].trim(),","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" descriptionNFromNTo[1].trim(),","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" descriptionNFromNTo[2].trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" return null; // shouldn\u0027t come here, since we have done the check already before calling this factory function","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" * Returns a new lindi.task.Task created from the parsedString taken from the saved data file.","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" * @param parsedString string from data file","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" * @return a subclass of lindi.task.Task (lindi.task.ToDo, lindi.task.Event, lindi.task.Deadline)","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" * @throws CreateTaskException if save file corrupted or edited such that format is not what is expected","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" public static Task createFromParsedString(String parsedString) throws CreateTaskException {","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" // Get trimmed tokens","lastModifiedDate":"2024-02-04"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" // ToDos -\u003e T | y or n | description","lastModifiedDate":"2024-02-04"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" // Deadlines -\u003e D | y or n | description | by","lastModifiedDate":"2024-02-04"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" // Events -\u003e E | y or n | description | from | to","lastModifiedDate":"2024-02-04"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" String[] parsedTokens \u003d parsedString.split(\"\\\\|\");","lastModifiedDate":"2024-02-04"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" for (int i \u003d 0; i \u003c parsedTokens.length; i++) {","lastModifiedDate":"2024-02-04"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" parsedTokens[i] \u003d parsedTokens[i].trim();","lastModifiedDate":"2024-02-04"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" // The check below considers todos having minimum of 3 tokens, and events having maximum of 5 tokens.","lastModifiedDate":"2024-02-04"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" if (parsedTokens.length \u003c 3 || parsedTokens.length \u003e 5) {","lastModifiedDate":"2024-02-04"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateTaskException(\"Token count not valid. File corrupted.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" boolean taskIsDone \u003d parsedTokens[1].equals(\"y\");","lastModifiedDate":"2024-02-04"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" String taskDescription \u003d parsedTokens[2];","lastModifiedDate":"2024-02-04"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" String taskType \u003d parsedTokens[0].equals(\"T\") ? \"todo\"","lastModifiedDate":"2024-02-04"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" : parsedTokens[0].equals(\"D\") ? \"deadline\"","lastModifiedDate":"2024-02-04"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" : parsedTokens[0].equals(\"E\") ? \"event\"","lastModifiedDate":"2024-02-04"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" : \"unknown\";","lastModifiedDate":"2024-02-04"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" if (taskType.equals(\"unknown\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateTaskException(\"taskType invalid. File corrupted.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" String commandString \u003d String.format(\"%s %s\", taskType, taskDescription);","lastModifiedDate":"2024-02-04"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":" Task newTask;","lastModifiedDate":"2024-02-04"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" // Create the new lindi.task using the user input string constructor","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" if (taskType.equals(\"todo\") \u0026\u0026 parsedTokens.length \u003d\u003d 3) {","lastModifiedDate":"2024-02-04"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" newTask \u003d Task.create(commandString);","lastModifiedDate":"2024-02-04"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" } else if (taskType.equals(\"deadline\") \u0026\u0026 parsedTokens.length \u003d\u003d 4) {","lastModifiedDate":"2024-02-04"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" newTask \u003d Task.create(commandString + String.format(\"/by %s\", parsedTokens[3]));","lastModifiedDate":"2024-02-04"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" } else if (taskType.equals(\"event\") \u0026\u0026 parsedTokens.length \u003d\u003d 5) {","lastModifiedDate":"2024-02-04"},{"lineNumber":106,"author":{"gitId":"CaptainKeqing"},"content":" newTask \u003d Task.create(commandString + String.format(\"/from %s /to %s\", parsedTokens[3], parsedTokens[4]));","lastModifiedDate":"2024-02-04"},{"lineNumber":107,"author":{"gitId":"CaptainKeqing"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":108,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateTaskException(\"lindi.task.Task type and token count not matched. File corrupted.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":110,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":111,"author":{"gitId":"CaptainKeqing"},"content":" // Finally mark if lindi.task is done or not","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"CaptainKeqing"},"content":" if (taskIsDone) {","lastModifiedDate":"2024-02-04"},{"lineNumber":113,"author":{"gitId":"CaptainKeqing"},"content":" assert newTask !\u003d null;","lastModifiedDate":"2024-02-04"},{"lineNumber":114,"author":{"gitId":"CaptainKeqing"},"content":" newTask.markDone();","lastModifiedDate":"2024-02-04"},{"lineNumber":115,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":116,"author":{"gitId":"CaptainKeqing"},"content":" return newTask;","lastModifiedDate":"2024-02-04"},{"lineNumber":117,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":118,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":119,"author":{"gitId":"CaptainKeqing"},"content":" public void markDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"CaptainKeqing"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"CaptainKeqing"},"content":" public void unmarkDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"CaptainKeqing"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"CaptainKeqing"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"CaptainKeqing"},"content":" return String.format(\"[%s] %s\",","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"CaptainKeqing"},"content":" isDone ? \"X\" : \" \",","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"CaptainKeqing"},"content":" this.description);","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":134,"author":{"gitId":"CaptainKeqing"},"content":" public abstract String parsedFormatToSave();","lastModifiedDate":"2024-02-04"},{"lineNumber":135,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"CaptainKeqing":135}},{"path":"src/main/java/lindi/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents the taskList to be used in the application.","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"public class TaskList {","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" private final ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" * Returns the number of tasks in the lindi.task list.","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" public int size() {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" return tasks.size();","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" * Adds a lindi.task to the lindi.task list","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" public void add(Task task) {","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" * Deletes the lindi.task at index from lindi.task list, and returns it","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" * @param listIndex index of lindi.task to delete as shown by list command","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" * @return the lindi.task that was deleted","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" * @throws IndexOutOfBoundsException if index is out of bounds","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" public Task delete(int listIndex) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" return tasks.remove(listIndex - 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" * Marks the item in lindi.task list at index as done, and returns it","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" * @param listIndex index of lindi.task to mark as shown by list command","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" * @return the lindi.task that was marked","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" * @throws IndexOutOfBoundsException if index is out of bounds","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" public Task mark(int listIndex) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" Task task \u003d tasks.get(listIndex - 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" task.markDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" return task;","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" * Unmarks the item in lindi.task list at index as done, and returns it","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" * @param listIndex index of lindi.task to unmark as shown by list command","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" * @return the lindi.task that was unmarked","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" * @throws IndexOutOfBoundsException if index is out of bounds","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" public Task unmark(int listIndex) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" Task task \u003d tasks.get(listIndex - 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" task.unmarkDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" return task;","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" * Returns the tasks as an Iterator to prevent modification. Meant to be only used by lindi.storage.Storage to save this data","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" public Iterator\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" return this.tasks.iterator();","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" public String toString() {","lastModifiedDate":"2024-02-05"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-05"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-05"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" sb.append(String.format(\"%d. %s \\n\", i + 1, tasks.get(i).toString()));","lastModifiedDate":"2024-02-05"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-02-05"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" sb.append(\"There are no tasks for you today. Enjoy :)\");","lastModifiedDate":"2024-02-05"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" return sb.toString();","lastModifiedDate":"2024-02-05"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"CaptainKeqing":81}},{"path":"src/main/java/lindi/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" public String parsedFormatToSave() {","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" return String.format(\"T | %c | %s\",","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" this.isDone ? \u0027y\u0027 : \u0027n\u0027, this.description);","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"CaptainKeqing":18}},{"path":"src/main/java/lindi/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.Command;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" * Text based UI of the application. Deals with interactions with the user","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"public class Ui {","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" private static final String LINE_SEPARATOR \u003d \"-\".repeat(50); // For visibility purposes","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" private final Scanner in;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" private final String name;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a user interface with system.in input","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" public Ui(String name) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" this.in \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" this.name \u003d name;","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" * Returns the input line read in from user","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" public String getUserInput() {","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" return in.nextLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" * Prints the given string, decorated with a line separator for better visibility","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" private void print(String s) {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" System.out.println(LINE_SEPARATOR);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" System.out.println(s);","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" System.out.println(LINE_SEPARATOR);","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" * Displays to the user the status of the given command.","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" public void displayCommand(Command command) {","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" this.print(command.status());","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" * Displays to the user the exception.","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" public void displayError(Exception e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" this.print(\"Oops ! There was an error:\\n\" + e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" * Displays a greeting message.","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" public void greeting() {","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" this.print(String.format(\"Hello I\u0027m %s\\nWhat can I do for you?\", this.name));","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"CaptainKeqing":60}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"hello","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"todo practice piano","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"deadline finish iP /by Sat 26 2359","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"event volunteering /from Sat 930am /to 1130am","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"mark 2","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"event cca practice /to 10pm","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"event cca practice /to 10pm /from 8pm","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"deadline cca leader selection","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"CaptainKeqing":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":"CaptainKeqing"},"content":"java -classpath ../bin Lindi \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-26"},{"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":"CaptainKeqing"},"content":"#dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-26"},{"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,"CaptainKeqing":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":"CaptainKeqing"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-07"},{"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":"CaptainKeqing"},"content":" mainClass.set(\"lindi.Lindi\")","lastModifiedDate":"2024-02-07"},{"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":"CaptainKeqing"},"content":" archiveBaseName \u003d \"lindi\"","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":"checkstyle {","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"-":40,"CaptainKeqing":7}},{"path":"src/main/java/lindi/Lindi.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.Command;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.parser.Parser;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.StorageLoadException;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" * Entry point of Lindi Application.","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" * Initializes the application and starts the interaction with the user.","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"public class Lindi {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" private final Storage storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" private final Ui ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" private final String name \u003d \"Lindi\"; // Log It N Do It -\u003e LINDI","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" * Initializes Lindi","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" * @param dataDir directory of data file","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" * @param dataFileName name of data file","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" public Lindi(String dataDir, String dataFileName) {","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" this.storage \u003d new Storage(dataDir, dataFileName);","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" this.ui \u003d new Ui(this.name);","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" this.tasks \u003d this.storage.loadFromFile();","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" } catch (StorageLoadException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" this.ui.displayError(e);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" * Runs the program. This loops until terminated by user with lindi.commands.ExitCommand.","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" public void run() {","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" this.ui.greeting();","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" boolean toExit \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" while (!toExit) {","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" String userInput \u003d this.ui.getUserInput();","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" Command c \u003d Parser.parse(userInput);","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" c.execute(this.tasks, this.storage);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" this.ui.displayCommand(c);","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" toExit \u003d c.isExit();","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" new Lindi(\"./.data\", \"LindiData.txt\").run();","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"CaptainKeqing":58}},{"path":"src/main/java/lindi/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a user command to be executed","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"public abstract class Command {","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" protected String statusMsg \u003d \"Not executed yet\";","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" * Returns if the command is to exit. lindi.commands.ExitCommand overrides this method to return true.","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" * @return true if it is an lindi.commands.ExitCommand","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" return false;","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" * Returns the status message of this command.","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" public String status() {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" return this.statusMsg;","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" * Executes the command. Updates status msg accordingly.","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" * @param tasks lindi.task.TaskList to be used in execution. May be modified.","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" * @param storage lindi.storage.Storage for automatic saving of changes","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" public abstract void execute(TaskList tasks, Storage storage);","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"CaptainKeqing":35}},{"path":"src/main/java/lindi/commands/CreateTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.CreateTaskException;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a command that creates a task upon execution","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"public class CreateTaskCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" private final String commandString;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" * Creates command to create a task with the arguments supplied by the user","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" * @param commandString user input string","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" public CreateTaskCommand(String commandString) {","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" this.commandString \u003d commandString;","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" * Creates task relying on Task class factory method, adds it to task list.","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" Task createdtask \u003d Task.create(this.commandString);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" tasks.add(createdtask);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d String.format(\"Okay. I\u0027ve deleted this task:\\n\\t%s\\nNow you have %d tasks in the list.\",","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" createdtask, tasks.size());","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" } catch (CreateTaskException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d e.getMessage();","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"CaptainKeqing":40}},{"path":"src/main/java/lindi/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a command that deletes a task upon execution","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" private final int listIndex;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" * Creates command to delete a task from the task list","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" * @param listIndex index of task to delete","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" public DeleteCommand(int listIndex) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" this.listIndex \u003d listIndex;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" * Delete the task at listIndex from tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" Task deletedTask \u003d tasks.delete(this.listIndex);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d String.format(\"Okay. I\u0027ve deleted this task:\\n\\t%s\\nNow you have %d tasks in the list.\",","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" deletedTask, tasks.size());","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d \"Sorry, I can\u0027t find that task. Please enter a valid index\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" + \"You can see the tasks list by inputting \\\"list\\\"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"CaptainKeqing":39}},{"path":"src/main/java/lindi/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a command that exits the program upon execution","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" * Returns true. Will exit main program loop.","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"CaptainKeqing":22}},{"path":"src/main/java/lindi/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a command that filters out tasks in the task list upon execution","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" private final String keyword;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" * Creates command to find a task by keyword","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" * @param keyword keyword to look for in task description","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" public FindCommand(String keyword) {","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" * Loads and filters the tasks in task list, matching this.keyword, into status msg to be printed.","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" TaskList tasksToDisplay \u003d new TaskList();","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" tasks.getTasks().forEachRemaining(","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" task -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" if (task.getDescription().contains(this.keyword)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" tasksToDisplay.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" );","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d tasksToDisplay.size() \u003d\u003d 0","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" ? \"There are no tasks containing that search key!\" // Replaces default no tasks message in TaskList","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" : tasksToDisplay.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"CaptainKeqing":40}},{"path":"src/main/java/lindi/commands/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an invalid command that has no effect","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" * Creates the invalid command","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" * @param invalidMessage reason for invalidity","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" public InvalidCommand(String invalidMessage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d invalidMessage;","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" return; // Do nothing","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"CaptainKeqing":23}},{"path":"src/main/java/lindi/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a command that lists out tasks in the task list upon execution","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" * Loads the tasks in lindi.task list into status msg to be printed.","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d tasks.toString();","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"CaptainKeqing":19}},{"path":"src/main/java/lindi/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a command that marks a task as done upon execution","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" private final int listIndex;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" * Creates command that marks a task in the task List","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" * @param listIndex index of task to mark","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" public MarkCommand(int listIndex) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" this.listIndex \u003d listIndex;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" * Marks the task at listIndex in tasks as done.","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" Task markedTask \u003d tasks.mark(this.listIndex);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d \"Nice! I\u0027ve marked this task as done:\\n\\t\" + markedTask;","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d \"Sorry, I can\u0027t find that task. Please enter a valid index\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" + \"You can see the tasks list by inputting \\\"list\\\"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"CaptainKeqing":38}},{"path":"src/main/java/lindi/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.storage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a command that marks a task as not done upon execution","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" private final int listIndex;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" * Creates command that unmarks a task in the task List","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" * @param listIndex index of task to unmark","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" public UnmarkCommand(int listIndex) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" this.listIndex \u003d listIndex;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" * Marks the task at listIndex in tasks as `not` done.","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" public void execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" Task unmarkedTask \u003d tasks.unmark(this.listIndex);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d \"Nice! I\u0027ve marked this task as not done yet:\\n\\t\" + unmarkedTask;","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" storage.saveToFile(tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" this.statusMsg \u003d \"Sorry, I can\u0027t find that task. Please enter a valid index\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" + \"You can see the tasks list by inputting \\\"list\\\"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"CaptainKeqing":38}},{"path":"src/main/java/lindi/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.parser;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.Command;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.CreateTaskCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.DeleteCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.ExitCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.FindCommand;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.InvalidCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.ListCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.MarkCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.UnmarkCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" * Deals with making sense (parsing) of the user command.","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":"public class Parser {","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" * Parses the user input and returns the corresponding Command","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" * @param userInput the user input command string","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" * @return the Command corresponding to the input string.","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" public static Command parse(String userInput) {","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" // if command called, will be index 0, rest of string (args) in index 1","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" String[] userInputTokens \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" String commandWord \u003d userInputTokens[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" String args \u003d userInputTokens.length \u003d\u003d 2 ? userInputTokens[1] : null;","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" switch (commandWord) {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" case \"list\":","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" case \"find\":","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" return prepareFind(args);","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" return prepareUnmark(args);","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" case \"mark\":","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" return prepareMark(args);","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" case \"delete\":","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" return prepareDelete(args);","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" case \"todo\":","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" // Fallthrough","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" case \"event\":","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" // Fallthrough","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" return new CreateTaskCommand(userInput);","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" case \"bye\":","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" return new ExitCommand();","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" default:","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" return new InvalidCommand(\"Uhh, English please? Haha, just kidding...\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" + \"but for reals I didn\u0027t really understand that :(\");","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" private static int getIndexFromArgs(String args) throws NumberFormatException {","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" return Integer.parseInt(args);","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" * Returns an FindCommand if args are valid, else InvalidCommand","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" * @param args arguments from user input","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" * @return FindCommand if args are valid. \u003cp\u003eInvalidCommand if args is null","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" private static Command prepareFind(String args) {","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" if (args \u003d\u003d null) {","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" return new InvalidCommand(\"Please give me something to search for :)\");","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" return new FindCommand(args);","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" * Returns an UnmarkCommand if args are valid, else InvalidCommand","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" * @param args arguments from user input","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" * @return UnmarkCommand if args are valid. \u003cp\u003eInvalidCommand if args is null or non-integer","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" private static Command prepareUnmark(String args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" if (args \u003d\u003d null) {","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" return new InvalidCommand(\"Uh oh ! You have to give me the index \"","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" + \"of the task you want to modify :)\");","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" int listIndex \u003d getIndexFromArgs(args);","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" return new UnmarkCommand(listIndex);","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" return new InvalidCommand(\"I\u0027m pretty sure I gave you the indexes in base 10...\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" + \"there shouldn\u0027t be any characters!! :(\");","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":" * Returns an MarkCommand if args are valid, else InvalidCommand","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" * @param args arguments from user input","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" * @return MarkCommand if args are valid. \u003cp\u003eInvalidCommand if args is null or non-integer","lastModifiedDate":"2024-02-07"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" private static Command prepareMark(String args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":" if (args \u003d\u003d null) {","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" return new InvalidCommand(\"Uh oh ! You have to give me the index \"","lastModifiedDate":"2024-02-06"},{"lineNumber":106,"author":{"gitId":"CaptainKeqing"},"content":" + \"of the task you want to modify :)\");","lastModifiedDate":"2024-02-07"},{"lineNumber":107,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"CaptainKeqing"},"content":" int listIndex \u003d getIndexFromArgs(args);","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"CaptainKeqing"},"content":" return new MarkCommand(listIndex);","lastModifiedDate":"2024-02-06"},{"lineNumber":111,"author":{"gitId":"CaptainKeqing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"CaptainKeqing"},"content":" return new InvalidCommand(\"I\u0027m pretty sure I gave you the indexes in base 10...\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":113,"author":{"gitId":"CaptainKeqing"},"content":" + \"there shouldn\u0027t be any characters!! :(\");","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":118,"author":{"gitId":"CaptainKeqing"},"content":" * Returns an DeleteCommand if args are valid, else InvalidCommand","lastModifiedDate":"2024-02-07"},{"lineNumber":119,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":120,"author":{"gitId":"CaptainKeqing"},"content":" * @param args arguments from user input","lastModifiedDate":"2024-02-07"},{"lineNumber":121,"author":{"gitId":"CaptainKeqing"},"content":" * @return DeleteCommand if args are valid. \u003cp\u003eInvalidCommand if args is null or non-integer","lastModifiedDate":"2024-02-07"},{"lineNumber":122,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":123,"author":{"gitId":"CaptainKeqing"},"content":" private static Command prepareDelete(String args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":124,"author":{"gitId":"CaptainKeqing"},"content":" if (args \u003d\u003d null) {","lastModifiedDate":"2024-02-06"},{"lineNumber":125,"author":{"gitId":"CaptainKeqing"},"content":" return new InvalidCommand(\"Uh oh ! You have to give me the index \"","lastModifiedDate":"2024-02-06"},{"lineNumber":126,"author":{"gitId":"CaptainKeqing"},"content":" + \"of the task you want to modify :)\");","lastModifiedDate":"2024-02-07"},{"lineNumber":127,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":128,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":129,"author":{"gitId":"CaptainKeqing"},"content":" int listIndex \u003d getIndexFromArgs(args);","lastModifiedDate":"2024-02-06"},{"lineNumber":130,"author":{"gitId":"CaptainKeqing"},"content":" return new DeleteCommand(listIndex);","lastModifiedDate":"2024-02-06"},{"lineNumber":131,"author":{"gitId":"CaptainKeqing"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":132,"author":{"gitId":"CaptainKeqing"},"content":" return new InvalidCommand(\"I\u0027m pretty sure I gave you the indexes in base 10...\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":133,"author":{"gitId":"CaptainKeqing"},"content":" + \"there shouldn\u0027t be any characters!! :(\");","lastModifiedDate":"2024-02-06"},{"lineNumber":134,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":135,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":136,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"CaptainKeqing":136}},{"path":"src/main/java/lindi/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.io.File;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.CreateTaskException;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" * Represents the storage unit for the application.","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" * Deals with loading tasks from the file and saving tasks in the file.","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":"public class Storage {","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" private FileWriter fileWriter;","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" private Scanner fileScanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" private final String dataDir;","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" private final String dataFileName;","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" * Initialises Storage to load data from and save data to a file. Creates","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" * the required directories and files if necessary.","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" * @param dataDir directory to store the data file","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" * @param dataFileName name of data file (.txt format)","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" public Storage(String dataDir, String dataFileName) {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" this.dataDir \u003d dataDir;","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" this.dataFileName \u003d dataFileName;","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" * Saves the task list to the designated text file for storing data for the program.","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" * Creates one if it does not exist yet.","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" * @param tasks task list to save to file","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" public void saveToFile(TaskList tasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" // Loops through taskList, appends them to string with the specified format","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" tasks.getTasks().forEachRemaining(","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" task -\u003e {","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" String parsedTask \u003d task.parsedFormatToSave();","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" sb.append(parsedTask).append(\u0027\\n\u0027);","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" );","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" // Creates the directories if they do not exist yet. No effect if it exists.","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" File dir \u003d new File(dataDir);","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" dir.mkdirs();","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" // Creates the file if it does not exist yet. No effect if it exists.","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" File dataFile \u003d new File(dir, dataFileName);","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" dataFile.createNewFile();","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" this.fileWriter \u003d new FileWriter(dataFile);","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" this.fileWriter.write(sb.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" this.fileWriter.close();","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-02-05"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" * Loads the taskList from the data file for this session","lastModifiedDate":"2024-02-05"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" * @throws StorageLoadException if data file not exist at file path","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" public TaskList loadFromFile() throws StorageLoadException {","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" this.fileScanner \u003d new Scanner(new File(dataDir, dataFileName));","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" TaskList tasksToReturn \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" // Data file exist in folder, load it into our taskList","lastModifiedDate":"2024-02-05"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" while (fileScanner.hasNextLine()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" String parsedString \u003d fileScanner.nextLine();","lastModifiedDate":"2024-02-05"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" Task task \u003d Task.createFromParsedString(parsedString);","lastModifiedDate":"2024-02-05"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" tasksToReturn.add(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":" return tasksToReturn;","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" } catch (CreateTaskException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" throw new StorageLoadException(\"Error loading tasks from save file. Might be corrupted...\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" + e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" throw new StorageLoadException(\"Error loading tasks from save file. \"","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" + \"File not found at path specified...\\n\" + new File(dataDir, dataFileName));","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"CaptainKeqing":91}},{"path":"src/main/java/lindi/storage/StorageLoadException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an Exception related to loading data from file into Storage","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"public class StorageLoadException extends Exception {","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" public StorageLoadException(String s) {","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" super(s);","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"CaptainKeqing":10}},{"path":"src/main/java/lindi/task/CreateDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an Exception related to creation of Deadline task","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"public class CreateDeadlineException extends CreateTaskException {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" public CreateDeadlineException(String s) {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" super(s);","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"CaptainKeqing":10}},{"path":"src/main/java/lindi/task/CreateEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an Exception related to creation of Event task","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"public class CreateEventException extends CreateTaskException {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" public CreateEventException(String s) {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" super(s);","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"CaptainKeqing":10}},{"path":"src/main/java/lindi/task/CreateTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an Exception related to creation of a task","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"public class CreateTaskException extends Exception {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" public CreateTaskException(String s) {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" super(s);","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"CaptainKeqing":10}},{"path":"src/main/java/lindi/task/CreateToDoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an Exception related to creation of ToDo task","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"public class CreateToDoException extends CreateTaskException {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" public CreateToDoException(String s) {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" super(s);","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"CaptainKeqing":10}},{"path":"src/main/java/lindi/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents a deadline task","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" * Initialises the deadline task","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" * @param description description of the deadline","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" * @param by datetime of the deadline following \u0027{@value SAVE_LOAD_DT_FORMAT_STRING}\u0027 format","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" * @throws CreateDeadlineException if param by provided is in the wrong format","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" public Deadline(String description, String by) throws CreateDeadlineException {","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" this.by \u003d LocalDateTime.parse(by, Task.SAVE_LOAD_DATETIME_FORMAT);","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateDeadlineException(String.format(\"Deadline /by argument in the wrong format. Use \"","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" + \"format \u0027%s\u0027 instead. Not saving seconds and below :)\", Task.SAVE_LOAD_DATETIME_FORMAT));","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(Task.DISPLAY_DATETIME_FORMAT) + \")\";","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" public String parsedFormatToSave() {","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" return String.format(\"D | %c | %s | %s\",","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" this.isDone ? \u0027y\u0027 : \u0027n\u0027, this.description,","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" this.by.format(Task.SAVE_LOAD_DATETIME_FORMAT));","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"CaptainKeqing":40}},{"path":"src/main/java/lindi/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an event task","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" * Initialises the event task","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" * @param description description of the event","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" * @param from start datetime of event following \u0027{@value SAVE_LOAD_DT_FORMAT_STRING}\u0027 format","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" * @param to end datetime of the dateline following \u0027{@value SAVE_LOAD_DT_FORMAT_STRING}\u0027 format","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" * @throws CreateEventException if param from or to provided is in the wrong format","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" public Event(String description, String from, String to) throws CreateEventException {","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" this.from \u003d LocalDateTime.parse(from, Task.SAVE_LOAD_DATETIME_FORMAT);","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" this.to \u003d LocalDateTime.parse(to, Task.SAVE_LOAD_DATETIME_FORMAT);","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateEventException(String.format(\"Event /from or /to argument in the wrong format. Use \"","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" + \"format \u0027%s\u0027 for each instead. Not saving seconds and below :)\", Task.SAVE_LOAD_DATETIME_FORMAT));","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" return \"[E]\" + super.toString() + String.format(\" (when: %s - %s)\",","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" this.from.format(Task.DISPLAY_DATETIME_FORMAT),","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" this.to.format(Task.DISPLAY_DATETIME_FORMAT));","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" public String parsedFormatToSave() {","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" return String.format(\"E | %c | %s | %s | %s\",","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" this.isDone ? \u0027y\u0027 : \u0027n\u0027, this.description,","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" this.from.format(Task.SAVE_LOAD_DATETIME_FORMAT),","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" this.to.format(Task.SAVE_LOAD_DATETIME_FORMAT));","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"CaptainKeqing":47}},{"path":"src/main/java/lindi/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":" * Abstract representation for tasks","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"public abstract class Task { // Adapted from Course Website","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" protected static final String DISPLAY_DT_FORMAT_STRING \u003d \"MMM dd yyyy HH:mm\";","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" protected static final String SAVE_LOAD_DT_FORMAT_STRING \u003d \"yyyy-MM-dd-HH-mm\";","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" protected static final DateTimeFormatter DISPLAY_DATETIME_FORMAT \u003d","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" DateTimeFormatter.ofPattern(DISPLAY_DT_FORMAT_STRING);","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" protected static final DateTimeFormatter SAVE_LOAD_DATETIME_FORMAT \u003d","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" DateTimeFormatter.ofPattern(SAVE_LOAD_DT_FORMAT_STRING);","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" protected final String description;","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" protected boolean isDone \u003d false;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" * Initialises the task with the given description","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" * @param description description of the task","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" * Factory method for subclasses of Task.","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" * @param fullString full user input string","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" * @return ToDo, Deadline or Event depending on input string","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" * @throws CreateTaskException if arguments to create task are invalid","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" public static Task create(String fullString) throws CreateTaskException {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" // s is either `todo`, `event` or `deadline`","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" String[] sTokens \u003d fullString.split(\" \", 2);","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" if (sTokens.length \u003c 2) {","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateTaskException(\"soo what exactly are you trying to do? :)\");","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" String command \u003d sTokens[0];","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" String taskString \u003d sTokens[1];","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" switch (command) {","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" case \"todo\":","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" return new ToDo(taskString);","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" // Further split the remaining string based on /by","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" if (!taskString.contains(\"/by\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateDeadlineException(","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" \"You can\u0027t expect me to track a deadline if you don\u0027t give me the.. deadline right? haha\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" + \"please include \u0027/by\u0027 followed by the deadline :)\");","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" String[] descriptionNBy \u003d taskString.split(\"/by\");","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" if (descriptionNBy.length \u003e 2) {","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateDeadlineException(\"Don\u0027t procrastinate with multiple deadlines !! :)\");","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" return new Deadline(descriptionNBy[0].trim(),","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" descriptionNBy[1].trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" case \"event\":","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" // Further split the remaining string based on /from and /to","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" if (!taskString.contains(\"/from\") || !taskString.contains(\"/to\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateEventException(","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" \"I\u0027m not sure how you\u0027re going for an event without a start time or end time\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" + \"please include \u0027/from\u0027 and \u0027/to\u0027 so I can keep track for you :)\");","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" if (taskString.indexOf(\"/from\") \u003e taskString.indexOf(\"/to\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateEventException(\"Sorry! /from must appear before /to :)\");","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":" String[] descriptionNFromNTo \u003d taskString.split(\"/from |/to \");","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" if (descriptionNFromNTo.length \u003e 3) {","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateEventException(\"um.. I\u0027m not sure how I can track for you an event that has\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" + \"more than 1 start or end time! :)\");","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" return new Event(descriptionNFromNTo[0].trim(),","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" descriptionNFromNTo[1].trim(),","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" descriptionNFromNTo[2].trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" default:","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" return null;","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":83,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":84,"author":{"gitId":"CaptainKeqing"},"content":" * Returns a new lindi.task.Task created from the parsedString taken from the saved data file.","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":86,"author":{"gitId":"CaptainKeqing"},"content":" * @param parsedString string from data file","lastModifiedDate":"2024-02-04"},{"lineNumber":87,"author":{"gitId":"CaptainKeqing"},"content":" * @return a subclass of lindi.task.Task (lindi.task.ToDo, lindi.task.Event, lindi.task.Deadline)","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"CaptainKeqing"},"content":" * @throws CreateTaskException if save file corrupted or edited such that format is not what is expected","lastModifiedDate":"2024-02-04"},{"lineNumber":89,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":90,"author":{"gitId":"CaptainKeqing"},"content":" public static Task createFromParsedString(String parsedString) throws CreateTaskException {","lastModifiedDate":"2024-02-04"},{"lineNumber":91,"author":{"gitId":"CaptainKeqing"},"content":" // Get trimmed tokens","lastModifiedDate":"2024-02-04"},{"lineNumber":92,"author":{"gitId":"CaptainKeqing"},"content":" // ToDos -\u003e T | y or n | description","lastModifiedDate":"2024-02-04"},{"lineNumber":93,"author":{"gitId":"CaptainKeqing"},"content":" // Deadlines -\u003e D | y or n | description | by","lastModifiedDate":"2024-02-04"},{"lineNumber":94,"author":{"gitId":"CaptainKeqing"},"content":" // Events -\u003e E | y or n | description | from | to","lastModifiedDate":"2024-02-04"},{"lineNumber":95,"author":{"gitId":"CaptainKeqing"},"content":" String[] parsedTokens \u003d parsedString.split(\"\\\\|\");","lastModifiedDate":"2024-02-04"},{"lineNumber":96,"author":{"gitId":"CaptainKeqing"},"content":" for (int i \u003d 0; i \u003c parsedTokens.length; i++) {","lastModifiedDate":"2024-02-04"},{"lineNumber":97,"author":{"gitId":"CaptainKeqing"},"content":" parsedTokens[i] \u003d parsedTokens[i].trim();","lastModifiedDate":"2024-02-04"},{"lineNumber":98,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":99,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":100,"author":{"gitId":"CaptainKeqing"},"content":" // The check below considers todos having minimum of 3 tokens, and events having maximum of 5 tokens.","lastModifiedDate":"2024-02-04"},{"lineNumber":101,"author":{"gitId":"CaptainKeqing"},"content":" if (parsedTokens.length \u003c 3 || parsedTokens.length \u003e 5) {","lastModifiedDate":"2024-02-04"},{"lineNumber":102,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateTaskException(\"Token count not valid. File corrupted.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":103,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":104,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":105,"author":{"gitId":"CaptainKeqing"},"content":" boolean taskIsDone \u003d parsedTokens[1].equals(\"y\");","lastModifiedDate":"2024-02-04"},{"lineNumber":106,"author":{"gitId":"CaptainKeqing"},"content":" String taskDescription \u003d parsedTokens[2];","lastModifiedDate":"2024-02-04"},{"lineNumber":107,"author":{"gitId":"CaptainKeqing"},"content":" String taskType \u003d parsedTokens[0].equals(\"T\") ? \"todo\"","lastModifiedDate":"2024-02-04"},{"lineNumber":108,"author":{"gitId":"CaptainKeqing"},"content":" : parsedTokens[0].equals(\"D\") ? \"deadline\"","lastModifiedDate":"2024-02-04"},{"lineNumber":109,"author":{"gitId":"CaptainKeqing"},"content":" : parsedTokens[0].equals(\"E\") ? \"event\"","lastModifiedDate":"2024-02-04"},{"lineNumber":110,"author":{"gitId":"CaptainKeqing"},"content":" : \"unknown\";","lastModifiedDate":"2024-02-04"},{"lineNumber":111,"author":{"gitId":"CaptainKeqing"},"content":" if (taskType.equals(\"unknown\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":112,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateTaskException(\"taskType invalid. File corrupted.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":113,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":114,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":115,"author":{"gitId":"CaptainKeqing"},"content":" String commandString \u003d String.format(\"%s %s\", taskType, taskDescription);","lastModifiedDate":"2024-02-04"},{"lineNumber":116,"author":{"gitId":"CaptainKeqing"},"content":" Task newTask;","lastModifiedDate":"2024-02-04"},{"lineNumber":117,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":118,"author":{"gitId":"CaptainKeqing"},"content":" // Create the new lindi.task using the user input string constructor","lastModifiedDate":"2024-02-06"},{"lineNumber":119,"author":{"gitId":"CaptainKeqing"},"content":" if (taskType.equals(\"todo\") \u0026\u0026 parsedTokens.length \u003d\u003d 3) {","lastModifiedDate":"2024-02-04"},{"lineNumber":120,"author":{"gitId":"CaptainKeqing"},"content":" newTask \u003d Task.create(commandString);","lastModifiedDate":"2024-02-04"},{"lineNumber":121,"author":{"gitId":"CaptainKeqing"},"content":" } else if (taskType.equals(\"deadline\") \u0026\u0026 parsedTokens.length \u003d\u003d 4) {","lastModifiedDate":"2024-02-04"},{"lineNumber":122,"author":{"gitId":"CaptainKeqing"},"content":" newTask \u003d Task.create(commandString + String.format(\"/by %s\", parsedTokens[3]));","lastModifiedDate":"2024-02-04"},{"lineNumber":123,"author":{"gitId":"CaptainKeqing"},"content":" } else if (taskType.equals(\"event\") \u0026\u0026 parsedTokens.length \u003d\u003d 5) {","lastModifiedDate":"2024-02-04"},{"lineNumber":124,"author":{"gitId":"CaptainKeqing"},"content":" newTask \u003d Task.create(commandString + String.format(\"/from %s /to %s\", parsedTokens[3], parsedTokens[4]));","lastModifiedDate":"2024-02-04"},{"lineNumber":125,"author":{"gitId":"CaptainKeqing"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":126,"author":{"gitId":"CaptainKeqing"},"content":" throw new CreateTaskException(\"lindi.task.Task type and token count not matched. File corrupted.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":127,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":128,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":129,"author":{"gitId":"CaptainKeqing"},"content":" // Finally mark if lindi.task is done or not","lastModifiedDate":"2024-02-06"},{"lineNumber":130,"author":{"gitId":"CaptainKeqing"},"content":" if (taskIsDone) {","lastModifiedDate":"2024-02-04"},{"lineNumber":131,"author":{"gitId":"CaptainKeqing"},"content":" assert newTask !\u003d null;","lastModifiedDate":"2024-02-04"},{"lineNumber":132,"author":{"gitId":"CaptainKeqing"},"content":" newTask.markDone();","lastModifiedDate":"2024-02-04"},{"lineNumber":133,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":134,"author":{"gitId":"CaptainKeqing"},"content":" return newTask;","lastModifiedDate":"2024-02-04"},{"lineNumber":135,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":136,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":137,"author":{"gitId":"CaptainKeqing"},"content":" public void markDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"CaptainKeqing"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"CaptainKeqing"},"content":" public void unmarkDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":142,"author":{"gitId":"CaptainKeqing"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"CaptainKeqing"},"content":" public String getDescription() {","lastModifiedDate":"2024-02-07"},{"lineNumber":146,"author":{"gitId":"CaptainKeqing"},"content":" return this.description;","lastModifiedDate":"2024-02-07"},{"lineNumber":147,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":148,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":149,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":150,"author":{"gitId":"CaptainKeqing"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"CaptainKeqing"},"content":" return String.format(\"[%s] %s\",","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"CaptainKeqing"},"content":" isDone ? \"X\" : \" \", this.description);","lastModifiedDate":"2024-02-07"},{"lineNumber":153,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":155,"author":{"gitId":"CaptainKeqing"},"content":" public abstract String parsedFormatToSave();","lastModifiedDate":"2024-02-04"},{"lineNumber":156,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"CaptainKeqing":156}},{"path":"src/main/java/lindi/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" * Represents the taskList to be used in the application.","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"public class TaskList {","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":" private final ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" * Returns the number of tasks in the lindi.task list.","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" public int size() {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" return tasks.size();","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" * Adds a lindi.task to the lindi.task list","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":" public void add(Task task) {","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" * Deletes the lindi.task at index from lindi.task list, and returns it","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":" * @param listIndex index of lindi.task to delete as shown by list command","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" * @return the lindi.task that was deleted","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" * @throws IndexOutOfBoundsException if index is out of bounds","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" public Task delete(int listIndex) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" return tasks.remove(listIndex - 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":" * Marks the item in lindi.task list at index as done, and returns it","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" * @param listIndex index of lindi.task to mark as shown by list command","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" * @return the lindi.task that was marked","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" * @throws IndexOutOfBoundsException if index is out of bounds","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" public Task mark(int listIndex) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":" Task task \u003d tasks.get(listIndex - 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" task.markDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" return task;","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":" * Unmarks the item in lindi.task list at index as done, and returns it","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":" * @param listIndex index of lindi.task to unmark as shown by list command","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" * @return the lindi.task that was unmarked","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" * @throws IndexOutOfBoundsException if index is out of bounds","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" public Task unmark(int listIndex) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" Task task \u003d tasks.get(listIndex - 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" task.unmarkDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":" return task;","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"CaptainKeqing"},"content":" * Returns the tasks as an Iterator to prevent modification.","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"CaptainKeqing"},"content":" public Iterator\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"CaptainKeqing"},"content":" return this.tasks.iterator();","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":71,"author":{"gitId":"CaptainKeqing"},"content":" public String toString() {","lastModifiedDate":"2024-02-05"},{"lineNumber":72,"author":{"gitId":"CaptainKeqing"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-05"},{"lineNumber":73,"author":{"gitId":"CaptainKeqing"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-05"},{"lineNumber":74,"author":{"gitId":"CaptainKeqing"},"content":" sb.append(String.format(\"%d. %s \\n\", i + 1, tasks.get(i).toString()));","lastModifiedDate":"2024-02-05"},{"lineNumber":75,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":76,"author":{"gitId":"CaptainKeqing"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-02-05"},{"lineNumber":77,"author":{"gitId":"CaptainKeqing"},"content":" sb.append(\"There are no tasks for you today. Enjoy :)\");","lastModifiedDate":"2024-02-05"},{"lineNumber":78,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":79,"author":{"gitId":"CaptainKeqing"},"content":" return sb.toString();","lastModifiedDate":"2024-02-05"},{"lineNumber":80,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":81,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"CaptainKeqing":81}},{"path":"src/main/java/lindi/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":" * Represents an todo task","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" public String parsedFormatToSave() {","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" return String.format(\"T | %c | %s\",","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" this.isDone ? \u0027y\u0027 : \u0027n\u0027, this.description);","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"CaptainKeqing":21}},{"path":"src/main/java/lindi/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"package lindi.ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"import lindi.commands.Command;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":" * Text based UI of the application. Deals with interactions with the user","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"public class Ui {","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":" private static final String LINE_SEPARATOR \u003d \"-\".repeat(50); // For visibility purposes","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":" private final Scanner in;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":" private final String name;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"CaptainKeqing"},"content":" * Creates a user interface with system.in input","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"CaptainKeqing"},"content":" public Ui(String name) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"CaptainKeqing"},"content":" this.in \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"CaptainKeqing"},"content":" this.name \u003d name;","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"CaptainKeqing"},"content":" * Returns the input line read in from user","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"CaptainKeqing"},"content":" public String getUserInput() {","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"CaptainKeqing"},"content":" return in.nextLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"CaptainKeqing"},"content":" * Prints the given string, decorated with a line separator for better visibility","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"CaptainKeqing"},"content":" private void print(String s) {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"CaptainKeqing"},"content":" System.out.println(LINE_SEPARATOR);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"CaptainKeqing"},"content":" System.out.println(s);","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"CaptainKeqing"},"content":" System.out.println(LINE_SEPARATOR);","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"CaptainKeqing"},"content":" * Displays to the user the status of the given command.","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"CaptainKeqing"},"content":" public void displayCommand(Command command) {","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"CaptainKeqing"},"content":" this.print(command.status());","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"CaptainKeqing"},"content":" * Displays to the user the exception.","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"CaptainKeqing"},"content":" public void displayError(Exception e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"CaptainKeqing"},"content":" this.print(\"Oops ! There was an error:\\n\" + e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"CaptainKeqing"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"CaptainKeqing"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"CaptainKeqing"},"content":" * Displays a greeting message.","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"CaptainKeqing"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"CaptainKeqing"},"content":" public void greeting() {","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"CaptainKeqing"},"content":" this.print(String.format(\"Hello I\u0027m %s\\nWhat can I do for you?\", this.name));","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"CaptainKeqing"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"CaptainKeqing"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"CaptainKeqing":60}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"CaptainKeqing"},"content":"hello","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"CaptainKeqing"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"CaptainKeqing"},"content":"todo practice piano","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"CaptainKeqing"},"content":"deadline finish iP /by Sat 26 2359","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"CaptainKeqing"},"content":"event volunteering /from Sat 930am /to 1130am","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"CaptainKeqing"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"CaptainKeqing"},"content":"mark 2","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"CaptainKeqing"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"CaptainKeqing"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"CaptainKeqing"},"content":"event cca practice /to 10pm","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"CaptainKeqing"},"content":"event cca practice /to 10pm /from 8pm","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"CaptainKeqing"},"content":"deadline cca leader selection","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"CaptainKeqing"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"CaptainKeqing":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":"CaptainKeqing"},"content":"java -classpath ../bin Lindi \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-26"},{"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":"CaptainKeqing"},"content":"#dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-26"},{"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,"CaptainKeqing":2}}] diff --git a/CaptainKeqing_ip_master/commits.json b/CaptainKeqing_ip_master/commits.json index 73717f66..56903f35 100644 --- a/CaptainKeqing_ip_master/commits.json +++ b/CaptainKeqing_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"CaptainKeqing":[{"date":"2024-01-24","commitResults":[{"hash":"d53f6771c41b57d5668d18a9e797f1dbfa4d63f9","isMergeCommit":false,"messageTitle":"Renamed Duke.java to Lindi.java, implemented simple greet and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":10}}},{"hash":"88004561d0c249a7ca098f015958a93fa0be025b","isMergeCommit":false,"messageTitle":"Refactored good bye message to a function call goodByeAndExit(), which also terminates the program. Removed junk comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":9}}},{"hash":"ecb439b0d4407c69887b9bc522e98567d83c1447","isMergeCommit":false,"messageTitle":"Refactored greeting messages into a function call greeting().","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":5}}},{"hash":"2c30711304b61fbd8b729cd3082230bb0bf979c9","isMergeCommit":false,"messageTitle":"Added chatLoop that echoes what the user types, and exists when user types \u0027bye\u0027","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}}]},{"date":"2024-01-25","commitResults":[{"hash":"c7c75a5f7f9cff18fd997325ad7eaa94e2e73d78","isMergeCommit":false,"messageTitle":"Created function parseInputAndExecute and condensed all such parsing userInput functionality into that. Added add, list capabilities for tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":14}}},{"hash":"e27bafe2373bc2211084a60d1332b4aaa691fdff","isMergeCommit":false,"messageTitle":"Improved UI by improving feedback when task added","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"5451a626043902ed8145366e754d394c6bb5ab3b","isMergeCommit":false,"messageTitle":"Created Task.java class and modified Lindi.java to handle the changed representation of tasks as Task not String","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":5}}},{"hash":"c461f9ee24f47a9a5b176c0f70ddf8ab10d0372d","isMergeCommit":false,"messageTitle":"Added function to mark tasks as done and undone","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":2}}},{"hash":"a9d1283cd1374f517967cd75ec7b9b49c8e2c47e","isMergeCommit":false,"messageTitle":"Created classes Deadline, Event and ToDo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":0}}},{"hash":"c2a1521d1d3d16c8398b8176c332a58d7ea23ec2","isMergeCommit":false,"messageTitle":"Removed complicated logic check for mark and unmark. Will handle them in future with error handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":26}}},{"hash":"4738791ff53843dc4c874106e8f34929efe5fdc4","isMergeCommit":false,"messageTitle":"Made Task abstract and factory method for the 3 subclasses","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":8}}},{"hash":"8cfc29ff1e57a0308416aba7721593dd9197c71e","isMergeCommit":false,"messageTitle":"Added supported for tracking ToDos, Deadlines and Events","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":9}}},{"hash":"4b6940cb8cd3abda2a5a465eaff2e786186971a3","isMergeCommit":false,"messageTitle":"Improved text UI response","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"dbf49244a1576212afbaec795096e6026c68a143","isMergeCommit":false,"messageTitle":"Tested using I/O redirection for automated testing. Changed method to receive input to use the Scanner object, as it can take in file input as well","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":4,"deletions":5},"sh":{"insertions":2,"deletions":2}}},{"hash":"452ac3d447bd9d2d89739fd01d9bdf178e2cf207","isMergeCommit":false,"messageTitle":"Create Exception classes related to creation of tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"bf646cc433ea1d9f7db87676b386035ff5f90414","isMergeCommit":false,"messageTitle":"Added error handling related to creation of tasks, as well as parsing user input","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":10}}},{"hash":"d11f9baabdd698008426bd9b10cc4a452dd8325f","isMergeCommit":false,"messageTitle":"added more text feedback (when list on empty taskList), and updated automated text UI texting to reflect more cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":4,"deletions":1}}},{"hash":"1bf6b7a4e5e270546b2fc53747b343307bec1e98","isMergeCommit":false,"messageTitle":"Changed implementation of taskList to ArrayList\u003cTask\u003e instead of static Task[] array","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":14}}},{"hash":"10503e93855e85a4a3f0ae22ba83a31c2f471ad8","isMergeCommit":false,"messageTitle":"Added support for deleting tasks from the list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":6}}},{"hash":"5b823a90f455af3ad6dddd527d0187626952567c","isMergeCommit":false,"messageTitle":"Fixed long standing bug for mark, unmark and delete crashing when not receiving proper arguments. Now handles the error.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":6}}},{"hash":"25a524f47cc19fa8b1b6b553aa81a665ba8a24ca","isMergeCommit":false,"messageTitle":"Compiled functionality of mark, unmark and delete into singular function executeModifyTask. Removed redundant functions","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":42}}}]},{"date":"2024-02-04","commitResults":[{"hash":"4ef7007945e8a4a188ee410e0971f0fb305618a2","isMergeCommit":false,"messageTitle":"Create primitive saveToFile() function","messageBody":"saveToFile() simply saves to a file in ./.data/LindiData.txt, creating\nthe /.data directory and txt file if not exists yet.\nCurrently writes a bogus message.\n","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":2}}},{"hash":"e76ff2c7b6670aa6e55aff46ccfeabd50165ddf0","isMergeCommit":false,"messageTitle":"Add parsedFormatToSave() method to Task and its subclasses","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"ec73851c6bfd3fa0a1597f2d960de01f3c47a2ce","isMergeCommit":false,"messageTitle":"Update saveToFile() to actually save taskList information","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":5}}},{"hash":"4e11a47e51ab50fbe6483a9da0999ee77c8a6e30","isMergeCommit":false,"messageTitle":"Add createFromParsedString() method to Task","messageBody":"This takes in as input the parsedString that we save in the data file\nand calls the Task.create() constructor. Basically we are enabling\nour Task class to be loaded from the save file\n","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":0}}},{"hash":"ff63d22de71be39468e7aa9836ffc05ccdab0881","isMergeCommit":false,"messageTitle":"Add save and load feature to Lindi","messageBody":"Lindi does not permanently store changes to the taskList, as it\nis stored in a temporary array.\n\nA new session would effectively wipe the users taskList. This is\nnot conducive for a user who wants to use the app for real life\ntask tracking.\n\nLet\u0027s\n* implement loading our current taskList when we start the session\n* saving our taskList automatically whenever we make a change\n\nWe save it as a text in a txt file in a hidden folder in our current\ndirectory \u0027/.data/\u0027. We save it as text for now because of ease of\nimplementation as well as it is human readable, which makes it easier\nto debug.\n","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":4}}},{"hash":"20b74d3fb633154aeca43f4fc97953c0dc3d5011","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"This branch adds the save and load feature\n","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"6a103cbab213ae65e906968f5a9df3ce31809534","isMergeCommit":false,"messageTitle":"Change representation of dates and times from String to LocalDateTime","messageBody":"Date and times for Deadline and Event use String, which is a simple\nrepresentation. This makes manipulation of date and times harder.\n\nLet\u0027s use LocalDateTime to represent the by field for Deadlines and\nfrom and to fields for Events. This allows us to use pre-written\nparse and format function.\n","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":12}}},{"hash":"f7ee916db3e6d811fd987f13ddd2adc3160f84e0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"This branch changes representation of date and time in Task subclasses\nto use LocalDateTime\n","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"9803c5048beb6fc5f5c7439f5e825ac6c20c2ef8","isMergeCommit":false,"messageTitle":"Create Parser, Storage, TaskList, Ui classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}}]},{"date":"2024-02-05","commitResults":[{"hash":"a73ae790838d4e60ab73bc92f8cfd04319f76f37","isMergeCommit":false,"messageTitle":"Create Command class to represent executable commands","messageBody":"Adds CreateTodoCommand, CreateDeadlineCommand, CreateEventCommand,\nand DeleteTaskCommand subclasses as well\n","fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":0}}},{"hash":"a6f0188dc68d46c647a88202fde82e780a059f3b","isMergeCommit":false,"messageTitle":"Add functionality to TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"29cd3194b0678c69b12236a7da249f5c6b173fe0","isMergeCommit":false,"messageTitle":"Add functionality to Storage","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":0}}}]},{"date":"2024-02-06","commitResults":[{"hash":"4c44e4c427f40e66051d03b95d325888329bc7b5","isMergeCommit":false,"messageTitle":"Add \u0027getter\u0027 function to TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"17ec99e82e58753a4f5cc0d25d0fbd927f5a221b","isMergeCommit":false,"messageTitle":"Use iterator for TaskList getter, Storage saveToFile","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"bd5c39609a8bf202c7c9ba445dc1145f2a8f1839","isMergeCommit":false,"messageTitle":"Refactor Storage class and create StorageLoadException","messageBody":"* Storage class: now creates the data file only when saving\n(if it does not exist),\n\n* Storage: loadFromFile() throws StorageLoadException\non corrupt file or file not found\n","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":14}}},{"hash":"cd44fc5691c0c6bc07df322c054e1f4515f813fe","isMergeCommit":false,"messageTitle":"Add functionality to Ui.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":0}}},{"hash":"4aef32e8fb64a37607d32a571dd00c437f5fa6c9","isMergeCommit":false,"messageTitle":"Add mark, unmark, delete, size functionality to TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":4}}},{"hash":"87e6f6967bf8c8edd09abc6bd49be45a83ac56ea","isMergeCommit":false,"messageTitle":"Implement some subclasses of Command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":7}}},{"hash":"f3b8807cca36ccad1805c2498296ef44acb616f7","isMergeCommit":false,"messageTitle":"Remove saveToFile() throws IOException","messageBody":"Instead, throws RuntimeException since user is not expected\nto recover from a IOException\n","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":11}}},{"hash":"e3f4630ffcc88163a6f11d8062380e80c3427e8e","isMergeCommit":false,"messageTitle":"TaskList class: Add missing return line to unmark()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"215f6d83c71d7f1db7c1d85f0a409730519b95d1","isMergeCommit":false,"messageTitle":"Add ExitCommand and ListCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":14}}},{"hash":"759a23187b62596adc82296254fcf85f8e4255b1","isMergeCommit":false,"messageTitle":"Implement some functionality in parser","messageBody":"Now supports list, mark, unmark, delete, bye\nFixes some printing in Ui\n","fileTypesAndContributionMap":{"java":{"insertions":153,"deletions":10}}},{"hash":"0da5301b2eb5b2d8ba4fe5d94c07987294016973","isMergeCommit":false,"messageTitle":"Move logic to the respective OOP classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":210}}},{"hash":"de871d20f767853b42cfaf8fdf0f54844e38c25e","isMergeCommit":false,"messageTitle":"Event and Deadline: Fix error msg showing wrong format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}},{"hash":"5364da420f971f7e645be5d92cf42fb1ed18be68","isMergeCommit":false,"messageTitle":"Unite task creation commands under CreateTaskCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":42}}},{"hash":"aef0d707f86c3801a0e2221551f81e063da474d2","isMergeCommit":false,"messageTitle":"Add support for task creation, add null check","messageBody":"Null checks added for prepareMark, prepareUnmark and prepareDelete\n","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":82}}},{"hash":"1a923798410f773645a912f0ba6293e96b1a99ff","isMergeCommit":false,"messageTitle":"Improve javadocs coverage","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":1}}},{"hash":"4310684062010e9a9e30f588242fae47588c76b2","isMergeCommit":false,"messageTitle":"Add javadocs, improve user feedback for load error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":26}}},{"hash":"4b47beba508e1e988082797e6d7606d2cd29667b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"1df50aae4c5ceca5daa1845c22988188f76b2d7b","isMergeCommit":false,"messageTitle":"Organise files into appropriate packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":220,"deletions":128}}},{"hash":"11881eb8d1a05d7c0ce0ef60e9001ec5a77dd7ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"This branch organises the java files into appropriate packages.\n","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"CaptainKeqing":{"java":899,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":0,"txt":13}},"authorContributionVariance":{"CaptainKeqing":95598.445},"authorDisplayNameMap":{"CaptainKeqing":"CS2103T-W11-1 LOH ..OVAN"}} +{"authorDailyContributionsMap":{"CaptainKeqing":[{"date":"2024-01-24","commitResults":[{"hash":"d53f6771c41b57d5668d18a9e797f1dbfa4d63f9","isMergeCommit":false,"messageTitle":"Renamed Duke.java to Lindi.java, implemented simple greet and exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":10}}},{"hash":"88004561d0c249a7ca098f015958a93fa0be025b","isMergeCommit":false,"messageTitle":"Refactored good bye message to a function call goodByeAndExit(), which also terminates the program. Removed junk comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":9}}},{"hash":"ecb439b0d4407c69887b9bc522e98567d83c1447","isMergeCommit":false,"messageTitle":"Refactored greeting messages into a function call greeting().","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":5}}},{"hash":"2c30711304b61fbd8b729cd3082230bb0bf979c9","isMergeCommit":false,"messageTitle":"Added chatLoop that echoes what the user types, and exists when user types \u0027bye\u0027","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}}]},{"date":"2024-01-25","commitResults":[{"hash":"c7c75a5f7f9cff18fd997325ad7eaa94e2e73d78","isMergeCommit":false,"messageTitle":"Created function parseInputAndExecute and condensed all such parsing userInput functionality into that. Added add, list capabilities for tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":14}}},{"hash":"e27bafe2373bc2211084a60d1332b4aaa691fdff","isMergeCommit":false,"messageTitle":"Improved UI by improving feedback when task added","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"5451a626043902ed8145366e754d394c6bb5ab3b","isMergeCommit":false,"messageTitle":"Created Task.java class and modified Lindi.java to handle the changed representation of tasks as Task not String","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":5}}},{"hash":"c461f9ee24f47a9a5b176c0f70ddf8ab10d0372d","isMergeCommit":false,"messageTitle":"Added function to mark tasks as done and undone","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":2}}},{"hash":"a9d1283cd1374f517967cd75ec7b9b49c8e2c47e","isMergeCommit":false,"messageTitle":"Created classes Deadline, Event and ToDo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":0}}},{"hash":"c2a1521d1d3d16c8398b8176c332a58d7ea23ec2","isMergeCommit":false,"messageTitle":"Removed complicated logic check for mark and unmark. Will handle them in future with error handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":26}}},{"hash":"4738791ff53843dc4c874106e8f34929efe5fdc4","isMergeCommit":false,"messageTitle":"Made Task abstract and factory method for the 3 subclasses","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":8}}},{"hash":"8cfc29ff1e57a0308416aba7721593dd9197c71e","isMergeCommit":false,"messageTitle":"Added supported for tracking ToDos, Deadlines and Events","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":9}}},{"hash":"4b6940cb8cd3abda2a5a465eaff2e786186971a3","isMergeCommit":false,"messageTitle":"Improved text UI response","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"dbf49244a1576212afbaec795096e6026c68a143","isMergeCommit":false,"messageTitle":"Tested using I/O redirection for automated testing. Changed method to receive input to use the Scanner object, as it can take in file input as well","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":4,"deletions":5},"sh":{"insertions":2,"deletions":2}}},{"hash":"452ac3d447bd9d2d89739fd01d9bdf178e2cf207","isMergeCommit":false,"messageTitle":"Create Exception classes related to creation of tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"bf646cc433ea1d9f7db87676b386035ff5f90414","isMergeCommit":false,"messageTitle":"Added error handling related to creation of tasks, as well as parsing user input","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":10}}},{"hash":"d11f9baabdd698008426bd9b10cc4a452dd8325f","isMergeCommit":false,"messageTitle":"added more text feedback (when list on empty taskList), and updated automated text UI texting to reflect more cases","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":4,"deletions":1}}},{"hash":"1bf6b7a4e5e270546b2fc53747b343307bec1e98","isMergeCommit":false,"messageTitle":"Changed implementation of taskList to ArrayList\u003cTask\u003e instead of static Task[] array","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":14}}},{"hash":"10503e93855e85a4a3f0ae22ba83a31c2f471ad8","isMergeCommit":false,"messageTitle":"Added support for deleting tasks from the list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":6}}},{"hash":"5b823a90f455af3ad6dddd527d0187626952567c","isMergeCommit":false,"messageTitle":"Fixed long standing bug for mark, unmark and delete crashing when not receiving proper arguments. Now handles the error.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":6}}},{"hash":"25a524f47cc19fa8b1b6b553aa81a665ba8a24ca","isMergeCommit":false,"messageTitle":"Compiled functionality of mark, unmark and delete into singular function executeModifyTask. Removed redundant functions","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":42}}}]},{"date":"2024-02-04","commitResults":[{"hash":"4ef7007945e8a4a188ee410e0971f0fb305618a2","isMergeCommit":false,"messageTitle":"Create primitive saveToFile() function","messageBody":"saveToFile() simply saves to a file in ./.data/LindiData.txt, creating\nthe /.data directory and txt file if not exists yet.\nCurrently writes a bogus message.\n","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":2}}},{"hash":"e76ff2c7b6670aa6e55aff46ccfeabd50165ddf0","isMergeCommit":false,"messageTitle":"Add parsedFormatToSave() method to Task and its subclasses","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"ec73851c6bfd3fa0a1597f2d960de01f3c47a2ce","isMergeCommit":false,"messageTitle":"Update saveToFile() to actually save taskList information","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":5}}},{"hash":"4e11a47e51ab50fbe6483a9da0999ee77c8a6e30","isMergeCommit":false,"messageTitle":"Add createFromParsedString() method to Task","messageBody":"This takes in as input the parsedString that we save in the data file\nand calls the Task.create() constructor. Basically we are enabling\nour Task class to be loaded from the save file\n","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":0}}},{"hash":"ff63d22de71be39468e7aa9836ffc05ccdab0881","isMergeCommit":false,"messageTitle":"Add save and load feature to Lindi","messageBody":"Lindi does not permanently store changes to the taskList, as it\nis stored in a temporary array.\n\nA new session would effectively wipe the users taskList. This is\nnot conducive for a user who wants to use the app for real life\ntask tracking.\n\nLet\u0027s\n* implement loading our current taskList when we start the session\n* saving our taskList automatically whenever we make a change\n\nWe save it as a text in a txt file in a hidden folder in our current\ndirectory \u0027/.data/\u0027. We save it as text for now because of ease of\nimplementation as well as it is human readable, which makes it easier\nto debug.\n","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":4}}},{"hash":"20b74d3fb633154aeca43f4fc97953c0dc3d5011","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"This branch adds the save and load feature\n","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"6a103cbab213ae65e906968f5a9df3ce31809534","isMergeCommit":false,"messageTitle":"Change representation of dates and times from String to LocalDateTime","messageBody":"Date and times for Deadline and Event use String, which is a simple\nrepresentation. This makes manipulation of date and times harder.\n\nLet\u0027s use LocalDateTime to represent the by field for Deadlines and\nfrom and to fields for Events. This allows us to use pre-written\nparse and format function.\n","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":12}}},{"hash":"f7ee916db3e6d811fd987f13ddd2adc3160f84e0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"This branch changes representation of date and time in Task subclasses\nto use LocalDateTime\n","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"9803c5048beb6fc5f5c7439f5e825ac6c20c2ef8","isMergeCommit":false,"messageTitle":"Create Parser, Storage, TaskList, Ui classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}}]},{"date":"2024-02-05","commitResults":[{"hash":"a73ae790838d4e60ab73bc92f8cfd04319f76f37","isMergeCommit":false,"messageTitle":"Create Command class to represent executable commands","messageBody":"Adds CreateTodoCommand, CreateDeadlineCommand, CreateEventCommand,\nand DeleteTaskCommand subclasses as well\n","fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":0}}},{"hash":"a6f0188dc68d46c647a88202fde82e780a059f3b","isMergeCommit":false,"messageTitle":"Add functionality to TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}},{"hash":"29cd3194b0678c69b12236a7da249f5c6b173fe0","isMergeCommit":false,"messageTitle":"Add functionality to Storage","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":0}}}]},{"date":"2024-02-06","commitResults":[{"hash":"4c44e4c427f40e66051d03b95d325888329bc7b5","isMergeCommit":false,"messageTitle":"Add \u0027getter\u0027 function to TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"17ec99e82e58753a4f5cc0d25d0fbd927f5a221b","isMergeCommit":false,"messageTitle":"Use iterator for TaskList getter, Storage saveToFile","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"bd5c39609a8bf202c7c9ba445dc1145f2a8f1839","isMergeCommit":false,"messageTitle":"Refactor Storage class and create StorageLoadException","messageBody":"* Storage class: now creates the data file only when saving\n(if it does not exist),\n\n* Storage: loadFromFile() throws StorageLoadException\non corrupt file or file not found\n","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":14}}},{"hash":"cd44fc5691c0c6bc07df322c054e1f4515f813fe","isMergeCommit":false,"messageTitle":"Add functionality to Ui.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":0}}},{"hash":"4aef32e8fb64a37607d32a571dd00c437f5fa6c9","isMergeCommit":false,"messageTitle":"Add mark, unmark, delete, size functionality to TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":4}}},{"hash":"87e6f6967bf8c8edd09abc6bd49be45a83ac56ea","isMergeCommit":false,"messageTitle":"Implement some subclasses of Command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":7}}},{"hash":"f3b8807cca36ccad1805c2498296ef44acb616f7","isMergeCommit":false,"messageTitle":"Remove saveToFile() throws IOException","messageBody":"Instead, throws RuntimeException since user is not expected\nto recover from a IOException\n","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":11}}},{"hash":"e3f4630ffcc88163a6f11d8062380e80c3427e8e","isMergeCommit":false,"messageTitle":"TaskList class: Add missing return line to unmark()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"215f6d83c71d7f1db7c1d85f0a409730519b95d1","isMergeCommit":false,"messageTitle":"Add ExitCommand and ListCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":14}}},{"hash":"759a23187b62596adc82296254fcf85f8e4255b1","isMergeCommit":false,"messageTitle":"Implement some functionality in parser","messageBody":"Now supports list, mark, unmark, delete, bye\nFixes some printing in Ui\n","fileTypesAndContributionMap":{"java":{"insertions":153,"deletions":10}}},{"hash":"0da5301b2eb5b2d8ba4fe5d94c07987294016973","isMergeCommit":false,"messageTitle":"Move logic to the respective OOP classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":210}}},{"hash":"de871d20f767853b42cfaf8fdf0f54844e38c25e","isMergeCommit":false,"messageTitle":"Event and Deadline: Fix error msg showing wrong format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}},{"hash":"5364da420f971f7e645be5d92cf42fb1ed18be68","isMergeCommit":false,"messageTitle":"Unite task creation commands under CreateTaskCommand","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":42}}},{"hash":"aef0d707f86c3801a0e2221551f81e063da474d2","isMergeCommit":false,"messageTitle":"Add support for task creation, add null check","messageBody":"Null checks added for prepareMark, prepareUnmark and prepareDelete\n","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":82}}},{"hash":"1a923798410f773645a912f0ba6293e96b1a99ff","isMergeCommit":false,"messageTitle":"Improve javadocs coverage","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":1}}},{"hash":"4310684062010e9a9e30f588242fae47588c76b2","isMergeCommit":false,"messageTitle":"Add javadocs, improve user feedback for load error","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":26}}},{"hash":"4b47beba508e1e988082797e6d7606d2cd29667b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"1df50aae4c5ceca5daa1845c22988188f76b2d7b","isMergeCommit":false,"messageTitle":"Organise files into appropriate packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":220,"deletions":128}}},{"hash":"11881eb8d1a05d7c0ce0ef60e9001ec5a77dd7ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"This branch organises the java files into appropriate packages.\n","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"d7a6d3cfff7175e2164691ef563a211a83700bee","isMergeCommit":false,"messageTitle":"Improve javadocs for commands package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":30}}},{"hash":"48214aca5771a3a593ba1ba43d9813cf44d0cbac","isMergeCommit":false,"messageTitle":"Follow coding standard for parser, storage and task packages","messageBody":"","tags":["A-CodingStanding"],"fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":73}}}]},{"date":"2024-02-07","commitResults":[{"hash":"b1976fefc3ac4065d9517aa0f7bb811fedf79cec","isMergeCommit":false,"messageTitle":"Create FindCommand, add description in Task to support keyword search","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":0}}},{"hash":"5e8ae0fafbb58c7fcf51006513ddff2fc96c6845","isMergeCommit":false,"messageTitle":"Implement find command functionality","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":9}}},{"hash":"f4d6f222191958c71d7a746594041826855138b9","isMergeCommit":false,"messageTitle":"Improve Javadocs for parser and storage packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":9}}},{"hash":"5910e46edd1517eb17be2963771e66414ac02ae5","isMergeCommit":false,"messageTitle":"Make datetime related format variables in Task static","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":16}}},{"hash":"ad369cf32c94c9a914c9597b60bc594be91697a3","isMergeCommit":false,"messageTitle":"Improve Javadocs for task package","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"264cd278ef5ea6c677159357ca5316d8643af74e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"This branch improves the existing javadoc coverage in the spirit\nor better documentation\n","fileTypesAndContributionMap":{}},{"hash":"419cd32c37e3a5e5eead273e4bb5b584ce0553e2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"This branch modifies the code to better follow the\ncoding standard given to us.\n","fileTypesAndContributionMap":{}},{"hash":"906c0effa02b9f5a902e7bb74e6f41ecf73a0190","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"This branch implements find feature.\n","fileTypesAndContributionMap":{}},{"hash":"0df2777c8f0acf0f6871149de6b182e449d4d47b","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"08338f45d0ba34594e7531630ec925c74d925059","isMergeCommit":false,"messageTitle":"Add gradle support and linked to application","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":7,"deletions":2},"java":{"insertions":2,"deletions":0}}},{"hash":"74eec13263582f79bc646f5c5a915a121abbd95a","isMergeCommit":false,"messageTitle":"Follow more coding standard conventions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":35}}}]}]},"authorFileTypeContributionMap":{"CaptainKeqing":{"java":1034,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":7,"txt":13}},"authorContributionVariance":{"CaptainKeqing":119086.04},"authorDisplayNameMap":{"CaptainKeqing":"CS2103T-W11-1 LOH ..OVAN"}} diff --git a/ChocoRagdoll_ip_master/authorship.json b/ChocoRagdoll_ip_master/authorship.json index c5fe25fc..4ce317ad 100644 --- a/ChocoRagdoll_ip_master/authorship.json +++ b/ChocoRagdoll_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":"ChocoRagdoll"},"content":" testImplementation \u0027org.mockito:mockito-core:3.11.2\u0027","lastModifiedDate":"2024-02-04"},{"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":"ChocoRagdoll"},"content":" mainClass.set(\"core.Ragdoll\")","lastModifiedDate":"2024-02-04"},{"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":"ChocoRagdoll"},"content":" archiveBaseName \u003d \"Ragdoll\"","lastModifiedDate":"2024-02-04"},{"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":{"ChocoRagdoll":3,"-":40}},{"path":"src/main/java/commands/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":" private String input;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" public AddCommand(String input) {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" this.input \u003d input;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" tasks.addTask(input, ui, storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":18}},{"path":"src/main/java/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":" * The Command class represents an abstract command that can be executed within the application.","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" * Subclasses of this class define specific commands with their own implementations.","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"public abstract class Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" * Executes the command with the given task list, user interface, and storage.","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" * @param tasks The task list on which the command operates.","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The user interface to display messages and interact with the user.","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" * @param storage The storage to save or load data.","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" * @return true if the command is an ExitCommand, false otherwise.","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" return false;","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":29}},{"path":"src/main/java/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":" private String input;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" public DeleteCommand(String input) {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" this.input \u003d input;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" tasks.deleteTask(input, ui, storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":18}},{"path":"src/main/java/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"public class ExitCommand extends Command{","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" ui.closeScanner();","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showGoodbyeMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" return true;","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":18}},{"path":"src/main/java/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":" private String input;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" public FindCommand(String input) {","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" this.input \u003d input;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" tasks.find(input, ui);","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":17}},{"path":"src/main/java/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" tasks.listTasks(ui);","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":12}},{"path":"src/main/java/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":" private String input;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" public MarkCommand(String input) {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" this.input \u003d input;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" tasks.markTask(input, ui, storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":18}},{"path":"src/main/java/commands/ShowTimeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"public class ShowTimeCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showCurrentDateTime();","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":12}},{"path":"src/main/java/commands/UnknownCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"public class UnknownCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showCommandFormats();","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":12}},{"path":"src/main/java/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":" private String input;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" public UnmarkCommand(String input) {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" this.input \u003d input;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" tasks.unmarkTask(input, ui, storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":18}},{"path":"src/main/java/core/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package core;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.AddCommand;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.Command;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.DeleteCommand;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.ExitCommand;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.ListCommand;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.FindCommand;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.MarkCommand;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.ShowTimeCommand;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.UnknownCommand;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.UnmarkCommand;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"import enums.Commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" * The Parser class is responsible for parsing user input and returning the corresponding command.","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"public class Parser {","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" * Parses the user input and returns the appropriate command object.","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" * @param input The user input to be parsed.","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" * @return A command object based on the parsed input.","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" public static Command parse(String input) {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" Commands commandEnum \u003d Commands.valueOf(parts[0].toUpperCase());","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" switch(commandEnum) {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" case BYE:","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" return new ExitCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" case LIST:","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" case FIND:","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" return new FindCommand(input);","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" case MARK:","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" return new MarkCommand(input);","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" case UNMARK:","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" return new UnmarkCommand(input);","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" case DELETE:","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" return new DeleteCommand(input);","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" case TODO:","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" // Fallthrough","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" case DEADLINE:","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" // Fallthrough","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" case EVENT:","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" return new AddCommand(input);","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":" case DATE:","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":" // Fallthrough","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":" case TIME:","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" return new ShowTimeCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":" default:","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":" return new UnknownCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"ChocoRagdoll"},"content":" return new UnknownCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":62}},{"path":"src/main/java/core/Ragdoll.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package core;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.Command;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" * The Ragdoll class is the main class that manages the execution of a command-line application.","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"public class Ragdoll{","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" private Storage storage;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" private Ui ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" * Constructs a Ragdoll instance with the given file path for data storage.","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" * @param filePath The file path where data is stored.","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" public Ragdoll(String filePath) {","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" storage \u003d new Storage(filePath, ui);","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" * The main entry point of the Ragdoll application.","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" * @param args Command-line arguments (not used in this application).","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" new Ragdoll(Paths.get(\"data\", \"tasks.txt\").toString()).run();","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" * Runs the Ragdoll application by displaying a welcome message, processing user commands,","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" * and executing corresponding actions.","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" public void run() {","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showWelcomeMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" while(!isExit) {","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" String input \u003d ui.readCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" Command c \u003d Parser.parse(input);","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"ChocoRagdoll":55}},{"path":"src/main/java/core/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package core;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.Locale;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" * The Ui class handles user interaction and provides methods for displaying messages and reading input.","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"public class Ui {","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" private Scanner scanner;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" private String user \u003d \"Master\";","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" private String logo \u003d \" /$$$$$$$ /$$ /$$ /$$\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" + \"| $$__ $$ | $$ | $$| $$\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" + \"| $$ \\\\ $$ /$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$ | $$| $$\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" + \"| $$$$$$$/ |____ $$ /$$__ $$ /$$__ $$ /$$__ $$| $$| $$\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" + \"| $$__ $$ /$$$$$$$| $$ \\\\ $$| $$ | $$| $$ \\\\ $$| $$| $$\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" + \"| $$ \\\\ $$ /$$__ $$| $$ | $$| $$ | $$| $$ | $$| $$| $$\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" + \"| $$ | $$| $$$$$$$| $$$$$$$| $$$$$$$| $$$$$$/| $$| $$\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" + \"|__/ |__/ \\\\_______/ \\\\____ $$ \\\\_______/ \\\\______/ |__/|__/\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" + \" /$$ \\\\ $$\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" + \" | $$$$$$/\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" + \" \\\\______/\\n\";","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" * Constructs a Ui instance and initializes the scanner for user input.","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" public Ui() {","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" * Sets the username for the Ui instance.","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" * @param username The username to set.","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" public void setUser(String username) {","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" user \u003d username;","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" * Gets the current username.","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The current username.","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" public String getUser() {","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" return user;","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":" * Reads a user command from the console input.","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The user-entered command as a String.","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":" public String readCommand() {","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":" return scanner.nextLine().trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays a welcome message and the application logo.","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"ChocoRagdoll"},"content":" public void showWelcomeMessage() {","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"Hello! I am your virtual assistant\\n\" + \"\\n\" + logo);","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"How can I assist you today, \" + user + \"?\");","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"ChocoRagdoll"},"content":" showLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays a goodbye message.","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"ChocoRagdoll"},"content":" public void showGoodbyeMessage() {","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"See ya, \" + user + \"!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":77,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays a horizontal line as a separator.","lastModifiedDate":"2024-02-04"},{"lineNumber":78,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":79,"author":{"gitId":"ChocoRagdoll"},"content":" public void showLine() {","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":84,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays a warning message.","lastModifiedDate":"2024-02-04"},{"lineNumber":85,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":86,"author":{"gitId":"ChocoRagdoll"},"content":" public void showWarning() {","lastModifiedDate":"2024-02-04"},{"lineNumber":87,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"\\n\");","lastModifiedDate":"2024-02-04"},{"lineNumber":88,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"!!! ATTENTION !!!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":89,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":90,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":91,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":92,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays a generic message.","lastModifiedDate":"2024-02-04"},{"lineNumber":93,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":94,"author":{"gitId":"ChocoRagdoll"},"content":" * @param message The message to display.","lastModifiedDate":"2024-02-04"},{"lineNumber":95,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":96,"author":{"gitId":"ChocoRagdoll"},"content":" public void showMessage(String message) {","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(message);","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":101,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays the number of tasks in the list.","lastModifiedDate":"2024-02-04"},{"lineNumber":102,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":103,"author":{"gitId":"ChocoRagdoll"},"content":" * @param taskCount The number of tasks in the list.","lastModifiedDate":"2024-02-04"},{"lineNumber":104,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":105,"author":{"gitId":"ChocoRagdoll"},"content":" public void showTaskCount(int taskCount) {","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"ChocoRagdoll"},"content":" if (taskCount \u003c\u003d 1) {","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"Now you have \" + taskCount + \" task in the list, \" + user + \"!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"ChocoRagdoll"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list, \" + user + \"!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":114,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays a format error message.","lastModifiedDate":"2024-02-04"},{"lineNumber":115,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":116,"author":{"gitId":"ChocoRagdoll"},"content":" * @param format The expected format.","lastModifiedDate":"2024-02-04"},{"lineNumber":117,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":118,"author":{"gitId":"ChocoRagdoll"},"content":" public void showFormatError(String format) {","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"Sorry, \" + user + \", please format it as \u0027\" + format + \"\u0027.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":121,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":122,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":123,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays a list of available command formats.","lastModifiedDate":"2024-02-04"},{"lineNumber":124,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":125,"author":{"gitId":"ChocoRagdoll"},"content":" public void showCommandFormats() {","lastModifiedDate":"2024-02-03"},{"lineNumber":126,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"Sorry, \" + user + \", I didn\u0027t understand the command...\\n\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":127,"author":{"gitId":"ChocoRagdoll"},"content":" + \"My commands include:\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":128,"author":{"gitId":"ChocoRagdoll"},"content":" + \"LIST: Display all tasks in your list.\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":129,"author":{"gitId":"ChocoRagdoll"},"content":" + \"MARK [task number]: Mark a task as completed.\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":130,"author":{"gitId":"ChocoRagdoll"},"content":" + \"UNMARK [task number]: Mark a task as not completed.\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":131,"author":{"gitId":"ChocoRagdoll"},"content":" + \"DELETE [task number]: Remove a task from your list.\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":132,"author":{"gitId":"ChocoRagdoll"},"content":" + \"[task type] [task description]: Add a new task. Task types include TODO, DEADLINE, EVENT.\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":133,"author":{"gitId":"ChocoRagdoll"},"content":" + \"FIND [yyyy-mm-dd] / FIND [key word]: Search for all relevant tasks.\\n\"","lastModifiedDate":"2024-02-04"},{"lineNumber":134,"author":{"gitId":"ChocoRagdoll"},"content":" + \"DATE / TIME: Show the current date and time.\\n\"","lastModifiedDate":"2024-02-04"},{"lineNumber":135,"author":{"gitId":"ChocoRagdoll"},"content":" + \"BYE: Exit the chatbot.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":136,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":137,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":138,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":139,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays the current date and time.","lastModifiedDate":"2024-02-04"},{"lineNumber":140,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":141,"author":{"gitId":"ChocoRagdoll"},"content":" public void showCurrentDateTime() {","lastModifiedDate":"2024-02-03"},{"lineNumber":142,"author":{"gitId":"ChocoRagdoll"},"content":" LocalDateTime now \u003d LocalDateTime.now();","lastModifiedDate":"2024-02-03"},{"lineNumber":143,"author":{"gitId":"ChocoRagdoll"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm:ss\").withLocale(Locale.US);","lastModifiedDate":"2024-02-03"},{"lineNumber":144,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(user + \", the current date and time is: \" + now.format(formatter) + \"!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":145,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":146,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":147,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":148,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays a message about supported task types.","lastModifiedDate":"2024-02-04"},{"lineNumber":149,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":150,"author":{"gitId":"ChocoRagdoll"},"content":" public void showTaskTypes() {","lastModifiedDate":"2024-02-03"},{"lineNumber":151,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"Sorry, \" + user + \", please format your tasks as [task type] [task description]!\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":152,"author":{"gitId":"ChocoRagdoll"},"content":" + \"I am only able to handle 3 task types: todo, deadline, and event.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":153,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":154,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":155,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":156,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays a message for when a task index is not found.","lastModifiedDate":"2024-02-04"},{"lineNumber":157,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":158,"author":{"gitId":"ChocoRagdoll"},"content":" * @param idx The task index.","lastModifiedDate":"2024-02-04"},{"lineNumber":159,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":160,"author":{"gitId":"ChocoRagdoll"},"content":" public void showNoTaskIndex(int idx) {","lastModifiedDate":"2024-02-03"},{"lineNumber":161,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"No task numbered \" + (idx + 1) + \", \" + user + \"!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":162,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":163,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":164,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":165,"author":{"gitId":"ChocoRagdoll"},"content":" public void showFindFormatError() {","lastModifiedDate":"2024-02-04"},{"lineNumber":166,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"Sorry, \" + user + \", please use \u0027find [yyyy-mm-dd]\u0027 / \u0027find [key word]\u0027 \"","lastModifiedDate":"2024-02-04"},{"lineNumber":167,"author":{"gitId":"ChocoRagdoll"},"content":" + \"to search for relevant tasks\");","lastModifiedDate":"2024-02-04"},{"lineNumber":168,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":169,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":170,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":171,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays an error message for saving tasks.","lastModifiedDate":"2024-02-04"},{"lineNumber":172,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":173,"author":{"gitId":"ChocoRagdoll"},"content":" public void showSavingError() {","lastModifiedDate":"2024-02-03"},{"lineNumber":174,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(user + \", an error occurred while saving tasks!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":175,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":176,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":177,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":178,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays an error message for loading tasks.","lastModifiedDate":"2024-02-04"},{"lineNumber":179,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":180,"author":{"gitId":"ChocoRagdoll"},"content":" * @param reason The reason for loading error.","lastModifiedDate":"2024-02-04"},{"lineNumber":181,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":182,"author":{"gitId":"ChocoRagdoll"},"content":" public void showLoadingError(String reason) {","lastModifiedDate":"2024-02-03"},{"lineNumber":183,"author":{"gitId":"ChocoRagdoll"},"content":" showWarning();","lastModifiedDate":"2024-02-04"},{"lineNumber":184,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":185,"author":{"gitId":"ChocoRagdoll"},"content":" if (reason \u003d\u003d \"corrupted\") {","lastModifiedDate":"2024-02-03"},{"lineNumber":186,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(user + \", I found a corrupted line in tasklist file! I\u0027ll skip it..!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":187,"author":{"gitId":"ChocoRagdoll"},"content":" } else if (reason \u003d\u003d \"file not found\") {","lastModifiedDate":"2024-02-03"},{"lineNumber":188,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(user + \", I could not find the task file... We have an empty task list!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":189,"author":{"gitId":"ChocoRagdoll"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":190,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(user + \", I could not read the tasklist file..!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":191,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":192,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":193,"author":{"gitId":"ChocoRagdoll"},"content":" showLine();","lastModifiedDate":"2024-02-04"},{"lineNumber":194,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":195,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":196,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":197,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays an error message for creating a file.","lastModifiedDate":"2024-02-04"},{"lineNumber":198,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":199,"author":{"gitId":"ChocoRagdoll"},"content":" public void showErrorCreatingFile() {","lastModifiedDate":"2024-02-03"},{"lineNumber":200,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"An error occurred while creating the data folder or tasks.txt file!\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":201,"author":{"gitId":"ChocoRagdoll"},"content":" + \" Killing Ragdoll...\");","lastModifiedDate":"2024-02-03"},{"lineNumber":202,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":203,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":204,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":205,"author":{"gitId":"ChocoRagdoll"},"content":" * Closes the scanner used for input.","lastModifiedDate":"2024-02-04"},{"lineNumber":206,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":207,"author":{"gitId":"ChocoRagdoll"},"content":" public void closeScanner() {","lastModifiedDate":"2024-02-03"},{"lineNumber":208,"author":{"gitId":"ChocoRagdoll"},"content":" scanner.close();","lastModifiedDate":"2024-02-03"},{"lineNumber":209,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":210,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":210}},{"path":"src/main/java/data/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package data;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.List;","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.Event;","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" * The Storage class handles the loading and saving of tasks to a file.","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":"public class Storage {","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" private String filePath;","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" private Ui ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" * Constructs a Storage instance with the specified file path and user interface.","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" * @param filePath The path to the data file where tasks are stored.","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The user interface to display error messages.","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" public Storage(String filePath, Ui ui) {","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" this.ui \u003d ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" ensureFileExists();","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" * Ensures that the data file exists; if not, it creates the file.","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" private void ensureFileExists() {","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" Path parentDir \u003d path.getParent();","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":" if (parentDir !\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":" Files.createDirectories(parentDir);","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":" if (Files.notExists(path)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":" Files.createFile(path);","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showErrorCreatingFile();","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":" System.exit(1);","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"ChocoRagdoll"},"content":" * Saves a list of tasks to the data file.","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"ChocoRagdoll"},"content":" * @param tasks The list of tasks to be saved.","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"ChocoRagdoll"},"content":" public void save(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"ChocoRagdoll"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"ChocoRagdoll"},"content":" try (BufferedWriter writer \u003d Files.newBufferedWriter(path)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"ChocoRagdoll"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"ChocoRagdoll"},"content":" writer.write(task.toFileFormat());","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"ChocoRagdoll"},"content":" writer.newLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showSavingError();","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"ChocoRagdoll"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":85,"author":{"gitId":"ChocoRagdoll"},"content":" * Loads tasks from the data file and returns them as a list.","lastModifiedDate":"2024-02-04"},{"lineNumber":86,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":87,"author":{"gitId":"ChocoRagdoll"},"content":" * @return A list of tasks loaded from the data file.","lastModifiedDate":"2024-02-04"},{"lineNumber":88,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":89,"author":{"gitId":"ChocoRagdoll"},"content":" public List\u003cTask\u003e load() {","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cTask\u003e loadedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"ChocoRagdoll"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"ChocoRagdoll"},"content":" try (BufferedReader reader \u003d Files.newBufferedReader(path)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"ChocoRagdoll"},"content":" String line;","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":96,"author":{"gitId":"ChocoRagdoll"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"ChocoRagdoll"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"ChocoRagdoll"},"content":" Task task \u003d null;","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":101,"author":{"gitId":"ChocoRagdoll"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"ChocoRagdoll"},"content":" case \"T\":","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"ChocoRagdoll"},"content":" task \u003d new ToDo(parts[2]);","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"ChocoRagdoll"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"ChocoRagdoll"},"content":" case \"D\":","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"ChocoRagdoll"},"content":" task \u003d new Deadline(parts[2], LocalDate.parse(parts[3]));","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"ChocoRagdoll"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"ChocoRagdoll"},"content":" case \"E\":","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"ChocoRagdoll"},"content":" task \u003d new Event(parts[2], LocalDate.parse(parts[3]), LocalDate.parse(parts[4]));","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"ChocoRagdoll"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"ChocoRagdoll"},"content":" default:","lastModifiedDate":"2024-02-04"},{"lineNumber":112,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showLoadingError(\"corrupted\");","lastModifiedDate":"2024-02-04"},{"lineNumber":113,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":114,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":115,"author":{"gitId":"ChocoRagdoll"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":116,"author":{"gitId":"ChocoRagdoll"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":117,"author":{"gitId":"ChocoRagdoll"},"content":" task.mark();","lastModifiedDate":"2024-02-03"},{"lineNumber":118,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"ChocoRagdoll"},"content":" loadedTasks.add(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":121,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (ArrayIndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":122,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showLoadingError(\"corrupted\");","lastModifiedDate":"2024-02-03"},{"lineNumber":123,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":124,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":125,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":126,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showLoadingError(\"file not found\");","lastModifiedDate":"2024-02-03"},{"lineNumber":127,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":128,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showLoadingError(\"cannot read the task file\");","lastModifiedDate":"2024-02-03"},{"lineNumber":129,"author":{"gitId":"ChocoRagdoll"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-03"},{"lineNumber":130,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":131,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":132,"author":{"gitId":"ChocoRagdoll"},"content":" return loadedTasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":133,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":134,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":134}},{"path":"src/main/java/enums/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package enums;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"public enum Commands {","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":" BYE, LIST, MARK, UNMARK, DELETE, TODO, DEADLINE, EVENT, FIND, DATE, TIME;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"ChocoRagdoll":5}},{"path":"src/main/java/enums/TaskType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package enums;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":" * Enum representing different types of tasks in the application.","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"public enum TaskType {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":" TODO(\"[T]\"),","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":" DEADLINE(\"[D]\"),","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" EVENT(\"[E]\");","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" private final String symbol;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" TaskType(String symbol) {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" this.symbol \u003d symbol;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" * Gets the symbol associated with the task type.","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The symbol representing the task type.","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" public String getSymbol() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" return symbol;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"ChocoRagdoll":25}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package tasks;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import enums.TaskType;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":" * The Deadline class represents a task of type \"Deadline\" with a description and a due date.","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" private LocalDate by;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" * Constructs a Deadline instance with the specified description and due date.","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" * @param by The due date of the deadline task.","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" super(description);","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" this.type \u003d TaskType.DEADLINE;","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" * Gets the due date of the deadline task.","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The due date of the deadline task.","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" public LocalDate getBy() {","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" return by;","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" * Converts the deadline task to a formatted string for saving to a file.","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The deadline task in a format suitable for saving to a file.","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" return super.toFileFormat() + \" | \" + by;","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" * Converts the deadline task to a string representation with task type, completion status, and due date.","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The string representation of the deadline task with task type, completion status, and due date.","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" return type.getSymbol() + super.toString() + \" (by: \" + by.format(formatter) + \")\";","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"ChocoRagdoll":52}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package tasks;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import enums.TaskType;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":" * The Event class represents a task of type \"Event\" with a description, start date, and end date.","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" private LocalDate from;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" private LocalDate to;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" * Constructs an Event instance with the specified description, start date, and end date.","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" * @param description The description of the event.","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" * @param from The start date of the event.","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" * @param to The end date of the event.","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" public Event(String description, LocalDate from, LocalDate to) {","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" super(description);","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" this.type \u003d TaskType.EVENT;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" * Gets the start date of the event.","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The start date of the event.","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" public LocalDate getFrom() {","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" return from;","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" * Converts the event to a formatted string for saving to a file.","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The event in a format suitable for saving to a file.","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" return super.toFileFormat() + \" | \" + from + \" | \" + to;","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" * Converts the event to a string representation with task type, completion status, and date range.","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The string representation of the event with task type, completion status, and date range.","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":" return type.getSymbol() + super.toString() + \" (from: \" + from.format(formatter)","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" + \" to: \" + to.format(formatter) + \")\";","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"ChocoRagdoll":56}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package tasks;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import enums.TaskType;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.Locale;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":" * The Task class represents a generic task with a description and completion status.","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"public class Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" protected String description;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" protected TaskType type;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" protected DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\").withLocale(Locale.US);","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" * Constructs a Task instance with the specified description and initializes it as not done.","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" * Marks the task as completed.","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" public void mark() {","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" * Marks the task as not completed.","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" public void unmark() {","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" * Checks if the task is marked as completed.","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" * @return true if the task is completed, false otherwise.","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" public boolean isDone() {","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" return isDone;","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" * Gets the description of the task.","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The description of the task.","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" public String getDescription() {","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":" return description;","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"ChocoRagdoll"},"content":" * Converts the task to a formatted string for saving to a file.","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The task in a format suitable for saving to a file.","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"ChocoRagdoll"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ChocoRagdoll"},"content":" return (this.type \u003d\u003d TaskType.TODO ? \"T\" : this.type \u003d\u003d TaskType.DEADLINE ? \"D\" : \"E\")","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ChocoRagdoll"},"content":" + \" | \" + (isDone ? \"1\" : \"0\")","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ChocoRagdoll"},"content":" + \" | \" + description;","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"ChocoRagdoll"},"content":" * Converts the task to a string representation with completion status for displaying to the user.","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The string representation of the task with completion status.","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":74,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"ChocoRagdoll"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"ChocoRagdoll"},"content":" String status \u003d isDone ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"ChocoRagdoll"},"content":" return status + \" \" + description;","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"ChocoRagdoll":79}},{"path":"src/main/java/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package tasks;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import enums.TaskType;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.List;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.Locale;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" * The TaskList class manages a list of tasks and provides methods to manipulate them.","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"public class TaskList {","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" * Constructs a TaskList instance with the specified list of tasks.","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" * @param loadedTasks The list of tasks loaded from storage.","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" public TaskList(List\u003cTask\u003e loadedTasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" tasks \u003d loadedTasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" * Gets the list of tasks.","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The list of tasks.","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" return tasks;","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" * Adds a task based on user input to the task list.","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" * @param input The user input specifying the task to be added.","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" * @param storage The storage to save the updated task list.","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" public void addTask(String input, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" if (parts.length \u003c 2 || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showTaskTypes();","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" return;","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":" TaskType taskType;","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" Task task \u003d null;","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":" taskType \u003d TaskType.valueOf(parts[0].toUpperCase());","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showTaskTypes();","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"ChocoRagdoll"},"content":" return;","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"ChocoRagdoll"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"ChocoRagdoll"},"content":" case TODO:","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"ChocoRagdoll"},"content":" task \u003d new ToDo(parts[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"ChocoRagdoll"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"ChocoRagdoll"},"content":" case DEADLINE:","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"ChocoRagdoll"},"content":" String[] info \u003d parts[1].split(\" /by \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"ChocoRagdoll"},"content":" if (info.length \u003c 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showFormatError(\"deadline [task] /by [yyyy-mm-dd]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"ChocoRagdoll"},"content":" return;","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"ChocoRagdoll"},"content":" LocalDate byDate \u003d LocalDate.parse(info[1], DateTimeFormatter.ISO_LOCAL_DATE);","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"ChocoRagdoll"},"content":" task \u003d new Deadline(info[0], byDate);","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showFormatError(\"deadline [task] /by [yyyy-mm-dd]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"ChocoRagdoll"},"content":" return;","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"ChocoRagdoll"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"ChocoRagdoll"},"content":" case EVENT:","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"ChocoRagdoll"},"content":" String[] eventParts \u003d parts[1].split(\" /from \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"ChocoRagdoll"},"content":" if (eventParts.length \u003c 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showFormatError(\"event [task] /from [yyyy-mm-dd] /to [yyyy-mm-dd]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"ChocoRagdoll"},"content":" return;","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"ChocoRagdoll"},"content":" String[] timeParts \u003d eventParts[1].split(\" /to \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"ChocoRagdoll"},"content":" if (timeParts.length \u003c 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showFormatError(\"event [task] /from [yyyy-mm-dd] /to [yyyy-mm-dd]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"ChocoRagdoll"},"content":" return;","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"ChocoRagdoll"},"content":" LocalDate from \u003d LocalDate.parse(timeParts[0], DateTimeFormatter.ISO_LOCAL_DATE);","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"ChocoRagdoll"},"content":" LocalDate to \u003d LocalDate.parse(timeParts[1], DateTimeFormatter.ISO_LOCAL_DATE);","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"ChocoRagdoll"},"content":" task \u003d new Event(eventParts[0], from, to);","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showFormatError(\"event [task] /from [yyyy-mm-dd] /to [yyyy-mm-dd]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"ChocoRagdoll"},"content":" return;","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"ChocoRagdoll"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"ChocoRagdoll"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"ChocoRagdoll"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"ChocoRagdoll"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(ui.getUser() + \", I\u0027ve added this task:\\n \" + task);","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"ChocoRagdoll"},"content":" int taskCount \u003d tasks.size();","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showTaskCount(taskCount);","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":114,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":115,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":116,"author":{"gitId":"ChocoRagdoll"},"content":" * Deletes a task from the task list based on user input .","lastModifiedDate":"2024-02-04"},{"lineNumber":117,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":118,"author":{"gitId":"ChocoRagdoll"},"content":" * @param input The user input specifying the task to be deleted.","lastModifiedDate":"2024-02-04"},{"lineNumber":119,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2024-02-04"},{"lineNumber":120,"author":{"gitId":"ChocoRagdoll"},"content":" * @param storage The storage to save the updated task list.","lastModifiedDate":"2024-02-04"},{"lineNumber":121,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":122,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteTask(String input, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":123,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":124,"author":{"gitId":"ChocoRagdoll"},"content":" int idx \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2024-02-03"},{"lineNumber":125,"author":{"gitId":"ChocoRagdoll"},"content":" int taskCount \u003d tasks.size();","lastModifiedDate":"2024-02-03"},{"lineNumber":126,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":127,"author":{"gitId":"ChocoRagdoll"},"content":" if (idx \u003c 0 || idx \u003e\u003d taskCount) {","lastModifiedDate":"2024-02-03"},{"lineNumber":128,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(\"No task numbered \" + (idx + 1) + \", \" + ui.getUser() + \"!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":129,"author":{"gitId":"ChocoRagdoll"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":130,"author":{"gitId":"ChocoRagdoll"},"content":" Task removed \u003d tasks.remove(idx);","lastModifiedDate":"2024-02-03"},{"lineNumber":131,"author":{"gitId":"ChocoRagdoll"},"content":" taskCount--;","lastModifiedDate":"2024-02-03"},{"lineNumber":132,"author":{"gitId":"ChocoRagdoll"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-03"},{"lineNumber":133,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":134,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(ui.getUser() + \", I\u0027ve removed this task:\\n \" + removed);","lastModifiedDate":"2024-02-03"},{"lineNumber":135,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showTaskCount(taskCount);","lastModifiedDate":"2024-02-03"},{"lineNumber":136,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":137,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":138,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showFormatError(\"delete [task index]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":139,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":140,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":141,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":142,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":143,"author":{"gitId":"ChocoRagdoll"},"content":" * Lists all tasks in the task list.","lastModifiedDate":"2024-02-04"},{"lineNumber":144,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":145,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2024-02-04"},{"lineNumber":146,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":147,"author":{"gitId":"ChocoRagdoll"},"content":" public void listTasks(Ui ui) {","lastModifiedDate":"2024-02-03"},{"lineNumber":148,"author":{"gitId":"ChocoRagdoll"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-02-03"},{"lineNumber":149,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(\"There is no task yet, \" + ui.getUser() + \"!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":150,"author":{"gitId":"ChocoRagdoll"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":151,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(ui.getUser() + \", your task list has the following tasks:\");","lastModifiedDate":"2024-02-03"},{"lineNumber":152,"author":{"gitId":"ChocoRagdoll"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":153,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage((i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2024-02-04"},{"lineNumber":154,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":155,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":156,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":157,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":158,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":159,"author":{"gitId":"ChocoRagdoll"},"content":" * Processes the input to find tasks by date or keyword.","lastModifiedDate":"2024-02-04"},{"lineNumber":160,"author":{"gitId":"ChocoRagdoll"},"content":" * If the input is a date in ISO_LOCAL_DATE format (yyyy-MM-dd), it will search for tasks on that date.","lastModifiedDate":"2024-02-04"},{"lineNumber":161,"author":{"gitId":"ChocoRagdoll"},"content":" * If the input is not a date, it will treat it as a keyword and search task descriptions.","lastModifiedDate":"2024-02-04"},{"lineNumber":162,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":163,"author":{"gitId":"ChocoRagdoll"},"content":" * @param input The search parameter provided by the user, either a date or a keyword.","lastModifiedDate":"2024-02-04"},{"lineNumber":164,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The Ui instance for user interaction.","lastModifiedDate":"2024-02-04"},{"lineNumber":165,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":166,"author":{"gitId":"ChocoRagdoll"},"content":" public void find(String input, Ui ui) {","lastModifiedDate":"2024-02-04"},{"lineNumber":167,"author":{"gitId":"ChocoRagdoll"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":168,"author":{"gitId":"ChocoRagdoll"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":169,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showFindFormatError();","lastModifiedDate":"2024-02-04"},{"lineNumber":170,"author":{"gitId":"ChocoRagdoll"},"content":" return;","lastModifiedDate":"2024-02-03"},{"lineNumber":171,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":172,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":173,"author":{"gitId":"ChocoRagdoll"},"content":" String searchInput \u003d parts[1].trim();","lastModifiedDate":"2024-02-04"},{"lineNumber":174,"author":{"gitId":"ChocoRagdoll"},"content":" LocalDate date;","lastModifiedDate":"2024-02-03"},{"lineNumber":175,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":176,"author":{"gitId":"ChocoRagdoll"},"content":" date \u003d LocalDate.parse(searchInput);","lastModifiedDate":"2024-02-04"},{"lineNumber":177,"author":{"gitId":"ChocoRagdoll"},"content":" findTasksByDate(date, ui);","lastModifiedDate":"2024-02-04"},{"lineNumber":178,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":179,"author":{"gitId":"ChocoRagdoll"},"content":" findTasksByKeyword(searchInput, ui);","lastModifiedDate":"2024-02-04"},{"lineNumber":180,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":181,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":182,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":183,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":184,"author":{"gitId":"ChocoRagdoll"},"content":" * Finds and displays tasks that are due on the specified date.","lastModifiedDate":"2024-02-04"},{"lineNumber":185,"author":{"gitId":"ChocoRagdoll"},"content":" * It will show deadlines and events that occur on the given date.","lastModifiedDate":"2024-02-04"},{"lineNumber":186,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":187,"author":{"gitId":"ChocoRagdoll"},"content":" * @param date The LocalDate object representing the date to search for.","lastModifiedDate":"2024-02-04"},{"lineNumber":188,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The Ui instance for user interaction.","lastModifiedDate":"2024-02-04"},{"lineNumber":189,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":190,"author":{"gitId":"ChocoRagdoll"},"content":" private void findTasksByDate(LocalDate date, Ui ui) {","lastModifiedDate":"2024-02-04"},{"lineNumber":191,"author":{"gitId":"ChocoRagdoll"},"content":" int count \u003d 0;","lastModifiedDate":"2024-02-03"},{"lineNumber":192,"author":{"gitId":"ChocoRagdoll"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":193,"author":{"gitId":"ChocoRagdoll"},"content":" if ((task instanceof Deadline \u0026\u0026 ((Deadline) task).getBy().isEqual(date))","lastModifiedDate":"2024-02-03"},{"lineNumber":194,"author":{"gitId":"ChocoRagdoll"},"content":" || (task instanceof Event \u0026\u0026 ((Event) task).getFrom().isEqual(date))) {","lastModifiedDate":"2024-02-03"},{"lineNumber":195,"author":{"gitId":"ChocoRagdoll"},"content":" if (count \u003d\u003d 0) {","lastModifiedDate":"2024-02-03"},{"lineNumber":196,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(ui.getUser() + \", on \"","lastModifiedDate":"2024-02-03"},{"lineNumber":197,"author":{"gitId":"ChocoRagdoll"},"content":" + date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\").withLocale(Locale.US))","lastModifiedDate":"2024-02-03"},{"lineNumber":198,"author":{"gitId":"ChocoRagdoll"},"content":" + \", you have the following tasks:\");","lastModifiedDate":"2024-02-03"},{"lineNumber":199,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":200,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage((count + 1) + \".\" + task);","lastModifiedDate":"2024-02-04"},{"lineNumber":201,"author":{"gitId":"ChocoRagdoll"},"content":" count++;","lastModifiedDate":"2024-02-03"},{"lineNumber":202,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":203,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":204,"author":{"gitId":"ChocoRagdoll"},"content":" if (count \u003d\u003d 0) {","lastModifiedDate":"2024-02-03"},{"lineNumber":205,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(ui.getUser() + \", you have no task on \"","lastModifiedDate":"2024-02-03"},{"lineNumber":206,"author":{"gitId":"ChocoRagdoll"},"content":" + date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\").withLocale(Locale.US)) + \"!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":207,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":208,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":209,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":210,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":211,"author":{"gitId":"ChocoRagdoll"},"content":" * Finds and displays tasks that contain the given keyword in their description.","lastModifiedDate":"2024-02-04"},{"lineNumber":212,"author":{"gitId":"ChocoRagdoll"},"content":" * The search is case-insensitive.","lastModifiedDate":"2024-02-04"},{"lineNumber":213,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":214,"author":{"gitId":"ChocoRagdoll"},"content":" * @param keyword The keyword to search for in task descriptions.","lastModifiedDate":"2024-02-04"},{"lineNumber":215,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The Ui instance for user interaction.","lastModifiedDate":"2024-02-04"},{"lineNumber":216,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":217,"author":{"gitId":"ChocoRagdoll"},"content":" private void findTasksByKeyword(String keyword, Ui ui) {","lastModifiedDate":"2024-02-04"},{"lineNumber":218,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cTask\u003e foundTasks \u003d tasks.stream()","lastModifiedDate":"2024-02-04"},{"lineNumber":219,"author":{"gitId":"ChocoRagdoll"},"content":" .filter(task -\u003e task.getDescription().toLowerCase().contains(keyword.toLowerCase()))","lastModifiedDate":"2024-02-04"},{"lineNumber":220,"author":{"gitId":"ChocoRagdoll"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-02-04"},{"lineNumber":221,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":222,"author":{"gitId":"ChocoRagdoll"},"content":" if (foundTasks.isEmpty()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":223,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(ui.getUser() + \", I couldn\u0027t find any task with the keyword: \u0027\" + keyword + \"\u0027.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":224,"author":{"gitId":"ChocoRagdoll"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":225,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(ui.getUser() + \", here are the tasks containing the keyword \u0027\" + keyword + \"\u0027:\");","lastModifiedDate":"2024-02-04"},{"lineNumber":226,"author":{"gitId":"ChocoRagdoll"},"content":" for (int i \u003d 0; i \u003c foundTasks.size(); i++) {","lastModifiedDate":"2024-02-04"},{"lineNumber":227,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage((i + 1) + \".\" + foundTasks.get(i).toString());","lastModifiedDate":"2024-02-04"},{"lineNumber":228,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":229,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":230,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":231,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":232,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":233,"author":{"gitId":"ChocoRagdoll"},"content":" * Marks a task as completed based on user input.","lastModifiedDate":"2024-02-04"},{"lineNumber":234,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":235,"author":{"gitId":"ChocoRagdoll"},"content":" * @param input The user input specifying the task to be marked as completed.","lastModifiedDate":"2024-02-04"},{"lineNumber":236,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2024-02-04"},{"lineNumber":237,"author":{"gitId":"ChocoRagdoll"},"content":" * @param storage The storage to save the updated task list.","lastModifiedDate":"2024-02-04"},{"lineNumber":238,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":239,"author":{"gitId":"ChocoRagdoll"},"content":" public void markTask(String input, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":240,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":241,"author":{"gitId":"ChocoRagdoll"},"content":" int idx \u003d Integer.parseInt(input.substring(5)) - 1;","lastModifiedDate":"2024-02-03"},{"lineNumber":242,"author":{"gitId":"ChocoRagdoll"},"content":" if (idx \u003c 0 || idx \u003e\u003d tasks.size() || tasks.get(idx) \u003d\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":243,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showNoTaskIndex(idx);","lastModifiedDate":"2024-02-03"},{"lineNumber":244,"author":{"gitId":"ChocoRagdoll"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":245,"author":{"gitId":"ChocoRagdoll"},"content":" tasks.get(idx).mark();","lastModifiedDate":"2024-02-03"},{"lineNumber":246,"author":{"gitId":"ChocoRagdoll"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-03"},{"lineNumber":247,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(ui.getUser() + \"! I\u0027ve marked this task as done:\\n\" + tasks.get(idx));","lastModifiedDate":"2024-02-03"},{"lineNumber":248,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":249,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":250,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showFormatError(\"mark [task index]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":251,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":252,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":253,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":254,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":255,"author":{"gitId":"ChocoRagdoll"},"content":" * Unmarks a completed task based on user input.","lastModifiedDate":"2024-02-04"},{"lineNumber":256,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":257,"author":{"gitId":"ChocoRagdoll"},"content":" * @param input The user input specifying the task to be unmarked.","lastModifiedDate":"2024-02-04"},{"lineNumber":258,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2024-02-04"},{"lineNumber":259,"author":{"gitId":"ChocoRagdoll"},"content":" * @param storage The storage to save the updated task list.","lastModifiedDate":"2024-02-04"},{"lineNumber":260,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":261,"author":{"gitId":"ChocoRagdoll"},"content":" public void unmarkTask(String input, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":262,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":263,"author":{"gitId":"ChocoRagdoll"},"content":" int idx \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2024-02-03"},{"lineNumber":264,"author":{"gitId":"ChocoRagdoll"},"content":" if (idx \u003c 0 || idx \u003e\u003d tasks.size() || tasks.get(idx) \u003d\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":265,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showNoTaskIndex(idx);","lastModifiedDate":"2024-02-03"},{"lineNumber":266,"author":{"gitId":"ChocoRagdoll"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":267,"author":{"gitId":"ChocoRagdoll"},"content":" tasks.get(idx).unmark();","lastModifiedDate":"2024-02-03"},{"lineNumber":268,"author":{"gitId":"ChocoRagdoll"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-03"},{"lineNumber":269,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(\"Ok, \" + ui.getUser() + \"! I\u0027ve undone this task:\\n\" + tasks.get(idx));","lastModifiedDate":"2024-02-03"},{"lineNumber":270,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":271,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":272,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showFormatError(\"unmark [task index]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":273,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":274,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":275,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":275}},{"path":"src/main/java/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package tasks;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import enums.TaskType;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":" * The ToDo class represents a task of type \"ToDo\" with a description.","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" * Constructs a ToDo instance with the specified description.","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" * @param description The description of the ToDo task.","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" super(description);","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" this.type \u003d TaskType.TODO;","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" * Converts the ToDo task to a string representation with task type and completion status.","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The string representation of the ToDo task with task type and completion status.","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" return type.getSymbol() + super.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"ChocoRagdoll":28}},{"path":"src/test/java/data/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package data;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.Event;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.List;","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":"public class StorageTest {","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" private Path tempFile;","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" private Storage storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" private Ui mockUi;","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" @BeforeEach","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" public void setUp(@TempDir Path tempDir) {","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" tempFile \u003d tempDir.resolve(\"testTasks.txt\");","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" mockUi \u003d mock(Ui.class);","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" storage \u003d new Storage(tempFile.toString(), mockUi);","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" @AfterEach","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" public void tearDown() throws IOException {","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" if (Files.exists(tempFile)) {","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" Files.delete(tempFile);","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" public void saveTasks_LoadTasks_tasksSavedAndLoaded() {","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" ToDo todo \u003d new ToDo(\"Read book\");","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" Deadline deadline \u003d new Deadline(\"Submit assignment\", java.time.LocalDate.now());","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" Event event \u003d new Event(\"Team meeting\", java.time.LocalDate.now(),","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" java.time.LocalDate.now().plusDays(1));","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cTask\u003e tasksToSave \u003d List.of(todo, deadline, event);","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" storage.save(tasksToSave);","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cTask\u003e loadedTasks \u003d storage.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" assertEquals(tasksToSave.size(), loadedTasks.size(), \"Loaded tasks should match saved tasks in number.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(loadedTasks.get(0) instanceof ToDo","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":" \u0026\u0026 loadedTasks.get(0).getDescription().equals(todo.getDescription()),","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" \"First task should be a ToDo with the correct description.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(loadedTasks.get(1) instanceof Deadline","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":" \u0026\u0026 loadedTasks.get(1).getDescription().equals(deadline.getDescription()),","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":" \"Second task should be a Deadline with the correct description.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(loadedTasks.get(2) instanceof Event","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"ChocoRagdoll"},"content":" \u0026\u0026 loadedTasks.get(2).getDescription().equals(event.getDescription()),","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"ChocoRagdoll"},"content":" \"Third task should be an Event with the correct description.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"ChocoRagdoll"},"content":" public void loadTasks_NoFile_emptyTaskList() {","lastModifiedDate":"2024-02-04"},{"lineNumber":65,"author":{"gitId":"ChocoRagdoll"},"content":" // Attempt to load tasks where no file exists","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cTask\u003e loadedTasks \u003d storage.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(loadedTasks.isEmpty(), \"Should load an empty list if the file does not exist.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"ChocoRagdoll"},"content":" public void loadTasks_markedTask_loadedTaskCorrectlyMarked() {","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"ChocoRagdoll"},"content":" Deadline deadline \u003d new Deadline(\"Submit assignment\", java.time.LocalDate.now());","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"ChocoRagdoll"},"content":" deadline.mark();","lastModifiedDate":"2024-02-04"},{"lineNumber":74,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cTask\u003e tasksToSave \u003d List.of(deadline);","lastModifiedDate":"2024-02-04"},{"lineNumber":75,"author":{"gitId":"ChocoRagdoll"},"content":" storage.save(tasksToSave);","lastModifiedDate":"2024-02-04"},{"lineNumber":76,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":77,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cTask\u003e loadedTasks \u003d storage.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":78,"author":{"gitId":"ChocoRagdoll"},"content":" assertEquals(tasksToSave.size(), loadedTasks.size(), \"Loaded tasks should match saved tasks in number.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":79,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":80,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(loadedTasks.get(0).isDone(), \"The loaded task should be marked as done.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":81,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":82,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"ChocoRagdoll":82}},{"path":"src/test/java/data/StorageTestCorruptedLine.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package data;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.List;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.mockito.Mockito.times;","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"public class StorageTestCorruptedLine {","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" private Path tempFile;","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" private Storage storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" private Ui mockUi;","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" @BeforeEach","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" public void setUp(@TempDir Path tempDir) throws Exception {","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" tempFile \u003d tempDir.resolve(\"testTasksCorrupted.txt\");","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" mockUi \u003d mock(Ui.class);","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" storage \u003d new Storage(tempFile.toString(), mockUi);","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cString\u003e lines \u003d Arrays.asList(\"T | 1 | Read book\", \"X | 2 | Invalid task\");","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" Files.write(tempFile, lines);","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" public void load_withCorruptedLine_outputsCorruptedMessage() {","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" storage.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" verify(mockUi, times(1)).showLoadingError(\"corrupted\");","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" @AfterEach","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" public void tearDown() throws Exception {","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" Files.deleteIfExists(tempFile);","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"ChocoRagdoll":44}},{"path":"src/test/java/tasks/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package tasks;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"import org.mockito.ArgumentCaptor;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.List;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.mockito.Mockito.atLeastOnce;","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.mockito.Mockito.reset;","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":"public class TaskListTest {","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" private TaskList taskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" private Ui mockUi;","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" private Storage mockStorage;","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" private final String LINE_SEPARATOR \u003d System.lineSeparator();","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" @BeforeEach","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" public void setUp() {","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cTask\u003e loadedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" mockUi \u003d mock(Ui.class);","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" mockStorage \u003d mock(Storage.class);","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" taskList \u003d new TaskList(loadedTasks);","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" public void addTask_addToDo_toDoAdded() {","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" TaskList taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" String input \u003d \"TOdo sample task\";","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(input, mock(Ui.class), mock(Storage.class));","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" Task addedTask \u003d taskList.getTasks().get(0);","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(addedTask instanceof ToDo, \"The added task should be an instance of ToDo\");","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" public void addTask_addDeadline_deadlineAdded() {","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" TaskList taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" String input \u003d \"deadline return book /by 2022-12-30\";","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(input, mock(Ui.class), mock(Storage.class));","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" Task addedTask \u003d taskList.getTasks().get(0);","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(addedTask instanceof Deadline, \"The added task should be an instance of Deadline\");","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":" public void addTask_addEvent_eventAdded() {","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":" TaskList taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":" String input \u003d \"event project meeting /from 2022-12-15 /to 2022-12-16\";","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(input, mock(Ui.class), mock(Storage.class));","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"ChocoRagdoll"},"content":" Task addedTask \u003d taskList.getTasks().get(0);","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(addedTask instanceof Event, \"The added task should be an instance of Event\");","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteTask_deleteTask_taskDeleted() {","lastModifiedDate":"2024-02-04"},{"lineNumber":65,"author":{"gitId":"ChocoRagdoll"},"content":" String inputAddFirst \u003d \"todo sample task\";","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"ChocoRagdoll"},"content":" String inputAddSecond \u003d \"Deadline return book /by 2022-12-30\";","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(inputAddFirst, mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(inputAddSecond, mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"ChocoRagdoll"},"content":" assertEquals(2, taskList.getTasks().size(), \"Setup failed to add task.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.deleteTask(\"delete 2\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"ChocoRagdoll"},"content":" Task remainedTask \u003d taskList.getTasks().get(0);","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(remainedTask instanceof ToDo, \"The remained task should be an instance of Deadline\");","lastModifiedDate":"2024-02-04"},{"lineNumber":74,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":75,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":76,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":77,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteTask_wrongFormat_messagePrinted() {","lastModifiedDate":"2024-02-04"},{"lineNumber":78,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(\"deadline return book /by 2022-12-30\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":79,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(\"event project meeting /from 2022-12-30 /to 2022-12-31\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":80,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":81,"author":{"gitId":"ChocoRagdoll"},"content":" String inputWrongFormat \u003d \"delete deadline\";","lastModifiedDate":"2024-02-04"},{"lineNumber":82,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":83,"author":{"gitId":"ChocoRagdoll"},"content":" ArgumentCaptor\u003cString\u003e messageCaptor \u003d ArgumentCaptor.forClass(String.class);","lastModifiedDate":"2024-02-04"},{"lineNumber":84,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.deleteTask(inputWrongFormat, mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":85,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":86,"author":{"gitId":"ChocoRagdoll"},"content":" verify(mockUi, atLeastOnce()).showFormatError(messageCaptor.capture());","lastModifiedDate":"2024-02-04"},{"lineNumber":87,"author":{"gitId":"ChocoRagdoll"},"content":" String capturedMessages \u003d String.join(LINE_SEPARATOR, messageCaptor.getAllValues());","lastModifiedDate":"2024-02-04"},{"lineNumber":88,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":89,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(capturedMessages.contains(\"delete [task index]\"), \"Should show error message.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":90,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":91,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":92,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":93,"author":{"gitId":"ChocoRagdoll"},"content":" public void listTasksOnDate_twoTasks_tasksPrinted() {","lastModifiedDate":"2024-02-04"},{"lineNumber":94,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(\"deadline return book /by 2022-12-30\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":95,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(\"event project meeting /from 2022-12-30 /to 2022-12-31\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":96,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":97,"author":{"gitId":"ChocoRagdoll"},"content":" reset(mockUi);","lastModifiedDate":"2024-02-04"},{"lineNumber":98,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":99,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.listTasksOnDate(\"list_on 2022-12-30\", mockUi);","lastModifiedDate":"2024-02-04"},{"lineNumber":100,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":101,"author":{"gitId":"ChocoRagdoll"},"content":" ArgumentCaptor\u003cString\u003e messageCaptor \u003d ArgumentCaptor.forClass(String.class);","lastModifiedDate":"2024-02-04"},{"lineNumber":102,"author":{"gitId":"ChocoRagdoll"},"content":" verify(mockUi, atLeastOnce()).showMessage(messageCaptor.capture());","lastModifiedDate":"2024-02-04"},{"lineNumber":103,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":104,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cString\u003e capturedMessages \u003d messageCaptor.getAllValues();","lastModifiedDate":"2024-02-04"},{"lineNumber":105,"author":{"gitId":"ChocoRagdoll"},"content":" String combinedMessages \u003d String.join(System.lineSeparator(), capturedMessages);","lastModifiedDate":"2024-02-04"},{"lineNumber":106,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":107,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(combinedMessages.contains(\"return book\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":108,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(combinedMessages.contains(\"project meeting\"), \"Should list tasks on the specified date.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":109,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":110,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":111,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":112,"author":{"gitId":"ChocoRagdoll"},"content":" public void ListTasksOnDate_noTask_messagePrinted() {","lastModifiedDate":"2024-02-04"},{"lineNumber":113,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(\"deadline return book /by 2022-12-30\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":114,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(\"event project meeting /from 2022-12-30 /to 2022-12-31\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":115,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":116,"author":{"gitId":"ChocoRagdoll"},"content":" ArgumentCaptor\u003cString\u003e messageCaptor \u003d ArgumentCaptor.forClass(String.class);","lastModifiedDate":"2024-02-04"},{"lineNumber":117,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.listTasksOnDate(\"list_on 2022-12-29\", mockUi);","lastModifiedDate":"2024-02-04"},{"lineNumber":118,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":119,"author":{"gitId":"ChocoRagdoll"},"content":" verify(mockUi, atLeastOnce()).showMessage(messageCaptor.capture());","lastModifiedDate":"2024-02-04"},{"lineNumber":120,"author":{"gitId":"ChocoRagdoll"},"content":" String capturedMessages \u003d String.join(LINE_SEPARATOR, messageCaptor.getAllValues());","lastModifiedDate":"2024-02-04"},{"lineNumber":121,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":122,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(capturedMessages.contains(\"no task\"), \"Should have no task to list on the specified date.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":123,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":124,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":125,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":126,"author":{"gitId":"ChocoRagdoll"},"content":" public void testMarkTask() {","lastModifiedDate":"2024-02-04"},{"lineNumber":127,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(\"todo sample task\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":128,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.markTask(\"mark 1\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":129,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(taskList.getTasks().get(0).isDone(), \"Should mark the specified task as done.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":130,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":131,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":132,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":133,"author":{"gitId":"ChocoRagdoll"},"content":" public void testUnmarkTask() {","lastModifiedDate":"2024-02-04"},{"lineNumber":134,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(\"todo sample task\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":135,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.markTask(\"mark 1\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":136,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.unmarkTask(\"unmark 1\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":137,"author":{"gitId":"ChocoRagdoll"},"content":" assertFalse(taskList.getTasks().get(0).isDone(), \"Should unmark the specified task as not done.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":138,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":139,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"ChocoRagdoll":139}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"list","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"todo read book","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"lISt","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"deadLIne return book /by June 6th","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"tOdo join sports club","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"toDO borrow book","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"list","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"mARk 1","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"unmark 2","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"list","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"deLEte 3","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"list","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"deleTE 7","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"invalid task","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"deadline incomplete task","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":"event /from 2pm /to 4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"bye","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"ChocoRagdoll":18}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"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":"ChocoRagdoll"},"content":"java -classpath ..\\bin Ragdoll \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":{"ChocoRagdoll":1,"-":20}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-07"},{"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":"ChocoRagdoll"},"content":" testImplementation \u0027org.mockito:mockito-core:3.11.2\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" mainClass.set(\"core.Ragdoll\")","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" archiveBaseName \u003d \"Ragdoll\"","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":"checkstyle {","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"ChocoRagdoll":8,"-":40}},{"path":"src/main/java/commands/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"//CHECKSTYLE.OFF: MissingJavadocType","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" private String input;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" public AddCommand(String input) {","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" this.input \u003d input;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" tasks.addTask(input, ui, storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":19}},{"path":"src/main/java/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":" * The Command class represents an abstract command that can be executed within the application.","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" * Subclasses of this class define specific commands with their own implementations.","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"public abstract class Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" * Executes the command with the given task list, user interface, and storage.","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" * @param tasks The task list on which the command operates.","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The user interface to display messages and interact with the user.","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" * @param storage The storage to save or load data.","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" * @return true if the command is an ExitCommand, false otherwise.","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" return false;","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":29}},{"path":"src/main/java/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"//CHECKSTYLE.OFF: MissingJavadocType","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" private String input;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" public DeleteCommand(String input) {","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" this.input \u003d input;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" tasks.deleteTask(input, ui, storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":19}},{"path":"src/main/java/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"//CHECKSTYLE.OFF: MissingJavadocType","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" ui.closeScanner();","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showGoodbyeMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" return true;","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":19}},{"path":"src/main/java/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"//CHECKSTYLE.OFF: MissingJavadocType","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" private String input;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" public FindCommand(String input) {","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" this.input \u003d input;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" tasks.find(input, ui);","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":18}},{"path":"src/main/java/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"//CHECKSTYLE.OFF: MissingJavadocType","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" tasks.listTasks(ui);","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":13}},{"path":"src/main/java/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"//CHECKSTYLE.OFF: MissingJavadocType","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" private String input;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" public MarkCommand(String input) {","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" this.input \u003d input;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" tasks.markTask(input, ui, storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":19}},{"path":"src/main/java/commands/ShowTimeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"//CHECKSTYLE.OFF: MissingJavadocType","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"public class ShowTimeCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showCurrentDateTime();","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":13}},{"path":"src/main/java/commands/UnknownCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"//CHECKSTYLE.OFF: MissingJavadocType","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"public class UnknownCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showCommandFormats();","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":13}},{"path":"src/main/java/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"//CHECKSTYLE.OFF: MissingJavadocType","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" private String input;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" public UnmarkCommand(String input) {","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" this.input \u003d input;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" tasks.unmarkTask(input, ui, storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":19}},{"path":"src/main/java/core/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package core;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.AddCommand;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.Command;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.DeleteCommand;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.ExitCommand;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.FindCommand;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.ListCommand;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.MarkCommand;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.ShowTimeCommand;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.UnknownCommand;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.UnmarkCommand;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"import enums.Commands;","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" * The Parser class is responsible for parsing user input and returning the corresponding command.","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"public class Parser {","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" * Parses the user input and returns the appropriate command object.","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" * @param input The user input to be parsed.","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" * @return A command object based on the parsed input.","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" public static Command parse(String input) {","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" Commands commandEnum \u003d Commands.valueOf(parts[0].toUpperCase());","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" switch(commandEnum) {","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" case BYE:","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" return new ExitCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" case LIST:","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" case FIND:","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" return new FindCommand(input);","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" case MARK:","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" return new MarkCommand(input);","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" case UNMARK:","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" return new UnmarkCommand(input);","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" case DELETE:","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" return new DeleteCommand(input);","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" case TODO:","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" // Fallthrough","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" case DEADLINE:","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" // Fallthrough","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" case EVENT:","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" return new AddCommand(input);","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" case DATE:","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":" // Fallthrough","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":" case TIME:","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":" return new ShowTimeCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" default:","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":" return new UnknownCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":" return new UnknownCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":61}},{"path":"src/main/java/core/Ragdoll.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package core;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import commands.Command;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" * The Ragdoll class is the main class that manages the execution of a command-line application.","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"public class Ragdoll {","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" private Storage storage;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" private Ui ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" * Constructs a Ragdoll instance with the given file path for data storage.","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" * @param filePath The file path where data is stored.","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" public Ragdoll(String filePath) {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" storage \u003d new Storage(filePath, ui);","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" * The main entry point of the Ragdoll application.","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" * @param args Command-line arguments (not used in this application).","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" new Ragdoll(Paths.get(\"data\", \"tasks.txt\").toString()).run();","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" * Runs the Ragdoll application by displaying a welcome message, processing user commands,","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" * and executing corresponding actions.","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" public void run() {","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showWelcomeMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" while (!isExit) {","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" String input \u003d ui.readCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" Command c \u003d Parser.parse(input);","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"ChocoRagdoll":56}},{"path":"src/main/java/core/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package core;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.Locale;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" * The Ui class handles user interaction and provides methods for displaying messages and reading input.","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"public class Ui {","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" private Scanner scanner;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" private String user \u003d \"Master\";","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" private String logo \u003d \" /$$$$$$$ /$$ /$$ /$$\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" + \"| $$__ $$ | $$ | $$| $$\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" + \"| $$ \\\\ $$ /$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$ | $$| $$\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" + \"| $$$$$$$/ |____ $$ /$$__ $$ /$$__ $$ /$$__ $$| $$| $$\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" + \"| $$__ $$ /$$$$$$$| $$ \\\\ $$| $$ | $$| $$ \\\\ $$| $$| $$\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" + \"| $$ \\\\ $$ /$$__ $$| $$ | $$| $$ | $$| $$ | $$| $$| $$\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" + \"| $$ | $$| $$$$$$$| $$$$$$$| $$$$$$$| $$$$$$/| $$| $$\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" + \"|__/ |__/ \\\\_______/ \\\\____ $$ \\\\_______/ \\\\______/ |__/|__/\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" + \" /$$ \\\\ $$\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" + \" | $$$$$$/\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" + \" \\\\______/\\n\";","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" * Constructs an Ui instance and initializes the scanner for user input.","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" public Ui() {","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" * Sets the username for the Ui instance.","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" * @param username The username to set.","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" public void setUser(String username) {","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" user \u003d username;","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" * Gets the current username.","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The current username.","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" public String getUser() {","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" return user;","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":" * Reads a user command from the console input.","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The user-entered command as a String.","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":" public String readCommand() {","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":" return scanner.nextLine().trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays a welcome message and the application logo.","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"ChocoRagdoll"},"content":" public void showWelcomeMessage() {","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"Hello! I am your virtual assistant\\n\" + \"\\n\" + logo);","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"How can I assist you today, \" + user + \"?\");","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"ChocoRagdoll"},"content":" showLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays a goodbye message.","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"ChocoRagdoll"},"content":" public void showGoodbyeMessage() {","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"See ya, \" + user + \"!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":77,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays a horizontal line as a separator.","lastModifiedDate":"2024-02-04"},{"lineNumber":78,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":79,"author":{"gitId":"ChocoRagdoll"},"content":" public void showLine() {","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":84,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays a warning message.","lastModifiedDate":"2024-02-04"},{"lineNumber":85,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":86,"author":{"gitId":"ChocoRagdoll"},"content":" public void showWarning() {","lastModifiedDate":"2024-02-04"},{"lineNumber":87,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"\\n\");","lastModifiedDate":"2024-02-04"},{"lineNumber":88,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"!!! ATTENTION !!!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":89,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":90,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":91,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":92,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays a generic message.","lastModifiedDate":"2024-02-04"},{"lineNumber":93,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":94,"author":{"gitId":"ChocoRagdoll"},"content":" * @param message The message to display.","lastModifiedDate":"2024-02-04"},{"lineNumber":95,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":96,"author":{"gitId":"ChocoRagdoll"},"content":" public void showMessage(String message) {","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(message);","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":101,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays the number of tasks in the list.","lastModifiedDate":"2024-02-04"},{"lineNumber":102,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":103,"author":{"gitId":"ChocoRagdoll"},"content":" * @param taskCount The number of tasks in the list.","lastModifiedDate":"2024-02-04"},{"lineNumber":104,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":105,"author":{"gitId":"ChocoRagdoll"},"content":" public void showTaskCount(int taskCount) {","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"ChocoRagdoll"},"content":" if (taskCount \u003c\u003d 1) {","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"Now you have \" + taskCount + \" task in the list, \" + user + \"!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"ChocoRagdoll"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list, \" + user + \"!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":114,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays a format error message.","lastModifiedDate":"2024-02-04"},{"lineNumber":115,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":116,"author":{"gitId":"ChocoRagdoll"},"content":" * @param format The expected format.","lastModifiedDate":"2024-02-04"},{"lineNumber":117,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":118,"author":{"gitId":"ChocoRagdoll"},"content":" public void showFormatError(String format) {","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"Sorry, \" + user + \", please format it as \u0027\" + format + \"\u0027.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":121,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":122,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":123,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays a list of available command formats.","lastModifiedDate":"2024-02-04"},{"lineNumber":124,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":125,"author":{"gitId":"ChocoRagdoll"},"content":" public void showCommandFormats() {","lastModifiedDate":"2024-02-03"},{"lineNumber":126,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"Sorry, \" + user + \", I didn\u0027t understand the command...\\n\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":127,"author":{"gitId":"ChocoRagdoll"},"content":" + \"My commands include:\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":128,"author":{"gitId":"ChocoRagdoll"},"content":" + \"LIST: Display all tasks in your list.\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":129,"author":{"gitId":"ChocoRagdoll"},"content":" + \"MARK [task number]: Mark a task as completed.\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":130,"author":{"gitId":"ChocoRagdoll"},"content":" + \"UNMARK [task number]: Mark a task as not completed.\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":131,"author":{"gitId":"ChocoRagdoll"},"content":" + \"DELETE [task number]: Remove a task from your list.\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":132,"author":{"gitId":"ChocoRagdoll"},"content":" + \"[task type] [task description]: Add a new task. Task types include TODO, DEADLINE, EVENT.\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":133,"author":{"gitId":"ChocoRagdoll"},"content":" + \"FIND [yyyy-mm-dd] / FIND [key word]: Search for all relevant tasks.\\n\"","lastModifiedDate":"2024-02-04"},{"lineNumber":134,"author":{"gitId":"ChocoRagdoll"},"content":" + \"DATE / TIME: Show the current date and time.\\n\"","lastModifiedDate":"2024-02-04"},{"lineNumber":135,"author":{"gitId":"ChocoRagdoll"},"content":" + \"BYE: Exit the chatbot.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":136,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":137,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":138,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":139,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays the current date and time.","lastModifiedDate":"2024-02-04"},{"lineNumber":140,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":141,"author":{"gitId":"ChocoRagdoll"},"content":" public void showCurrentDateTime() {","lastModifiedDate":"2024-02-03"},{"lineNumber":142,"author":{"gitId":"ChocoRagdoll"},"content":" LocalDateTime now \u003d LocalDateTime.now();","lastModifiedDate":"2024-02-03"},{"lineNumber":143,"author":{"gitId":"ChocoRagdoll"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy HH:mm:ss\").withLocale(Locale.US);","lastModifiedDate":"2024-02-03"},{"lineNumber":144,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(user + \", the current date and time is: \" + now.format(formatter) + \"!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":145,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":146,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":147,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":148,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays a message about supported task types.","lastModifiedDate":"2024-02-04"},{"lineNumber":149,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":150,"author":{"gitId":"ChocoRagdoll"},"content":" public void showTaskTypes() {","lastModifiedDate":"2024-02-03"},{"lineNumber":151,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"Sorry, \" + user + \", please format your tasks as [task type] [task description]!\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":152,"author":{"gitId":"ChocoRagdoll"},"content":" + \"I am only able to handle 3 task types: todo, deadline, and event.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":153,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":154,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":155,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":156,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays a message for when a task index is not found.","lastModifiedDate":"2024-02-04"},{"lineNumber":157,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":158,"author":{"gitId":"ChocoRagdoll"},"content":" * @param idx The task index.","lastModifiedDate":"2024-02-04"},{"lineNumber":159,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":160,"author":{"gitId":"ChocoRagdoll"},"content":" public void showNoTaskIndex(int idx) {","lastModifiedDate":"2024-02-03"},{"lineNumber":161,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"No task numbered \" + (idx + 1) + \", \" + user + \"!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":162,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":163,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":164,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":165,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":166,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":167,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays an error message to the user when they input an invalid format for the \u0027find\u0027 command.","lastModifiedDate":"2024-02-07"},{"lineNumber":168,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":169,"author":{"gitId":"ChocoRagdoll"},"content":" public void showFindFormatError() {","lastModifiedDate":"2024-02-04"},{"lineNumber":170,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"Sorry, \" + user + \", please use \u0027find [yyyy-mm-dd]\u0027 / \u0027find [key word]\u0027 \"","lastModifiedDate":"2024-02-04"},{"lineNumber":171,"author":{"gitId":"ChocoRagdoll"},"content":" + \"to search for relevant tasks\");","lastModifiedDate":"2024-02-04"},{"lineNumber":172,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":173,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":174,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":175,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays an error message for saving tasks.","lastModifiedDate":"2024-02-04"},{"lineNumber":176,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":177,"author":{"gitId":"ChocoRagdoll"},"content":" public void showSavingError() {","lastModifiedDate":"2024-02-03"},{"lineNumber":178,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(user + \", an error occurred while saving tasks!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":179,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":180,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":181,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":182,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays an error message for loading tasks.","lastModifiedDate":"2024-02-04"},{"lineNumber":183,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":184,"author":{"gitId":"ChocoRagdoll"},"content":" * @param reason The reason for loading error.","lastModifiedDate":"2024-02-04"},{"lineNumber":185,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":186,"author":{"gitId":"ChocoRagdoll"},"content":" public void showLoadingError(String reason) {","lastModifiedDate":"2024-02-03"},{"lineNumber":187,"author":{"gitId":"ChocoRagdoll"},"content":" showWarning();","lastModifiedDate":"2024-02-04"},{"lineNumber":188,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":189,"author":{"gitId":"ChocoRagdoll"},"content":" if (reason \u003d\u003d \"corrupted\") {","lastModifiedDate":"2024-02-03"},{"lineNumber":190,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(user + \", I found a corrupted line in tasklist file! I\u0027ll skip it..!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":191,"author":{"gitId":"ChocoRagdoll"},"content":" } else if (reason \u003d\u003d \"file not found\") {","lastModifiedDate":"2024-02-03"},{"lineNumber":192,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(user + \", I could not find the task file... We have an empty task list!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":193,"author":{"gitId":"ChocoRagdoll"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":194,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(user + \", I could not read the tasklist file..!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":195,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":196,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":197,"author":{"gitId":"ChocoRagdoll"},"content":" showLine();","lastModifiedDate":"2024-02-04"},{"lineNumber":198,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":199,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":200,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":201,"author":{"gitId":"ChocoRagdoll"},"content":" * Displays an error message for creating a file.","lastModifiedDate":"2024-02-04"},{"lineNumber":202,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":203,"author":{"gitId":"ChocoRagdoll"},"content":" public void showErrorCreatingFile() {","lastModifiedDate":"2024-02-03"},{"lineNumber":204,"author":{"gitId":"ChocoRagdoll"},"content":" System.out.println(\"An error occurred while creating the data folder or tasks.txt file!\\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":205,"author":{"gitId":"ChocoRagdoll"},"content":" + \" Killing Ragdoll...\");","lastModifiedDate":"2024-02-03"},{"lineNumber":206,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":207,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":208,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":209,"author":{"gitId":"ChocoRagdoll"},"content":" * Closes the scanner used for input.","lastModifiedDate":"2024-02-04"},{"lineNumber":210,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":211,"author":{"gitId":"ChocoRagdoll"},"content":" public void closeScanner() {","lastModifiedDate":"2024-02-03"},{"lineNumber":212,"author":{"gitId":"ChocoRagdoll"},"content":" scanner.close();","lastModifiedDate":"2024-02-03"},{"lineNumber":213,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":214,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":214}},{"path":"src/main/java/data/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package data;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.List;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.Event;","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" * The Storage class handles the loading and saving of tasks to a file.","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":"public class Storage {","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" private String filePath;","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" private Ui ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" * Constructs a Storage instance with the specified file path and user interface.","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" * @param filePath The path to the data file where tasks are stored.","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The user interface to display error messages.","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" public Storage(String filePath, Ui ui) {","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" this.ui \u003d ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" ensureFileExists();","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" * Ensures that the data file exists; if not, it creates the file.","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" private void ensureFileExists() {","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" Path parentDir \u003d path.getParent();","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" if (parentDir !\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" Files.createDirectories(parentDir);","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":" if (Files.notExists(path)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":" Files.createFile(path);","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showErrorCreatingFile();","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":" System.exit(1);","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"ChocoRagdoll"},"content":" * Saves a list of tasks to the data file.","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":65,"author":{"gitId":"ChocoRagdoll"},"content":" * @param tasks The list of tasks to be saved.","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"ChocoRagdoll"},"content":" public void save(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"ChocoRagdoll"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"ChocoRagdoll"},"content":" try (BufferedWriter writer \u003d Files.newBufferedWriter(path)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"ChocoRagdoll"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"ChocoRagdoll"},"content":" writer.write(task.toFileFormat());","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"ChocoRagdoll"},"content":" writer.newLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showSavingError();","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"ChocoRagdoll"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":81,"author":{"gitId":"ChocoRagdoll"},"content":" * Loads tasks from the data file and returns them as a list.","lastModifiedDate":"2024-02-04"},{"lineNumber":82,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":83,"author":{"gitId":"ChocoRagdoll"},"content":" * @return A list of tasks loaded from the data file.","lastModifiedDate":"2024-02-04"},{"lineNumber":84,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":85,"author":{"gitId":"ChocoRagdoll"},"content":" public List\u003cTask\u003e load() {","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cTask\u003e loadedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"ChocoRagdoll"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"ChocoRagdoll"},"content":" try (BufferedReader reader \u003d Files.newBufferedReader(path)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"ChocoRagdoll"},"content":" String line;","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":92,"author":{"gitId":"ChocoRagdoll"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"ChocoRagdoll"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"ChocoRagdoll"},"content":" Task task \u003d null;","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":97,"author":{"gitId":"ChocoRagdoll"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"ChocoRagdoll"},"content":" case \"T\":","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"ChocoRagdoll"},"content":" task \u003d new ToDo(parts[2]);","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"ChocoRagdoll"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"ChocoRagdoll"},"content":" case \"D\":","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"ChocoRagdoll"},"content":" task \u003d new Deadline(parts[2], LocalDate.parse(parts[3]));","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"ChocoRagdoll"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"ChocoRagdoll"},"content":" case \"E\":","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"ChocoRagdoll"},"content":" task \u003d new Event(parts[2], LocalDate.parse(parts[3]), LocalDate.parse(parts[4]));","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"ChocoRagdoll"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"ChocoRagdoll"},"content":" default:","lastModifiedDate":"2024-02-04"},{"lineNumber":108,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showLoadingError(\"corrupted\");","lastModifiedDate":"2024-02-04"},{"lineNumber":109,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":111,"author":{"gitId":"ChocoRagdoll"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"ChocoRagdoll"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"ChocoRagdoll"},"content":" task.mark();","lastModifiedDate":"2024-02-03"},{"lineNumber":114,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":115,"author":{"gitId":"ChocoRagdoll"},"content":" loadedTasks.add(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":116,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":117,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (ArrayIndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":118,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showLoadingError(\"corrupted\");","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":121,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":122,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showLoadingError(\"file not found\");","lastModifiedDate":"2024-02-03"},{"lineNumber":123,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":124,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showLoadingError(\"cannot read the task file\");","lastModifiedDate":"2024-02-03"},{"lineNumber":125,"author":{"gitId":"ChocoRagdoll"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-03"},{"lineNumber":126,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":127,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":128,"author":{"gitId":"ChocoRagdoll"},"content":" return loadedTasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":129,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":130,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":130}},{"path":"src/main/java/enums/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package enums;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"//CHECKSTYLE.OFF: MissingJavadocType","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"public enum Commands {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":" BYE, LIST, MARK, UNMARK, DELETE, TODO, DEADLINE, EVENT, FIND, DATE, TIME;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"ChocoRagdoll":6}},{"path":"src/main/java/enums/TaskType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package enums;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":" * Enum representing different types of tasks in the application.","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"public enum TaskType {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":" TODO(\"[T]\"),","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":" DEADLINE(\"[D]\"),","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" EVENT(\"[E]\");","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" private final String symbol;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" TaskType(String symbol) {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" this.symbol \u003d symbol;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" * Gets the symbol associated with the task type.","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The symbol representing the task type.","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" public String getSymbol() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" return symbol;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"ChocoRagdoll":25}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package tasks;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import enums.TaskType;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":" * The Deadline class represents a task of type \"Deadline\" with a description and a due date.","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" private LocalDate by;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" * Constructs a Deadline instance with the specified description and due date.","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" * @param by The due date of the deadline task.","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" super(description);","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" this.type \u003d TaskType.DEADLINE;","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" * Gets the due date of the deadline task.","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The due date of the deadline task.","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" public LocalDate getBy() {","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" return by;","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" * Converts the deadline task to a formatted string for saving to a file.","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The deadline task in a format suitable for saving to a file.","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" return super.toFileFormat() + \" | \" + by;","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" * Converts the deadline task to a string representation with task type, completion status, and due date.","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The string representation of the deadline task with task type, completion status, and due date.","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":" return type.getSymbol() + super.toString() + \" (by: \" + by.format(formatter) + \")\";","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"ChocoRagdoll":53}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package tasks;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import enums.TaskType;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" * The Event class represents a task of type \"Event\" with a description, start date, and end date.","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" private LocalDate from;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" private LocalDate to;","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" * Constructs an Event instance with the specified description, start date, and end date.","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" * @param description The description of the event.","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" * @param from The start date of the event.","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" * @param to The end date of the event.","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" public Event(String description, LocalDate from, LocalDate to) {","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" super(description);","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" this.type \u003d TaskType.EVENT;","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" * Gets the start date of the event.","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The start date of the event.","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" public LocalDate getFrom() {","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" return from;","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" * Converts the event to a formatted string for saving to a file.","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The event in a format suitable for saving to a file.","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" return super.toFileFormat() + \" | \" + from + \" | \" + to;","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" * Converts the event to a string representation with task type, completion status, and date range.","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The string representation of the event with task type, completion status, and date range.","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":" return type.getSymbol() + super.toString() + \" (from: \" + from.format(formatter)","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":" + \" to: \" + to.format(formatter) + \")\";","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"ChocoRagdoll":58}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package tasks;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.Locale;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import enums.TaskType;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" * The Task class represents a generic task with a description and completion status.","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"public class Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" protected String description;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" protected TaskType type;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" protected DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\").withLocale(Locale.US);","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" * Constructs a Task instance with the specified description and initializes it as not done.","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" * Marks the task as completed.","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" public void mark() {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" * Marks the task as not completed.","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" public void unmark() {","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" * Checks if the task is marked as completed.","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" * @return true if the task is completed, false otherwise.","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" public boolean isDone() {","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" return isDone;","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":" * Gets the description of the task.","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The description of the task.","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":" public String getDescription() {","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":" return description;","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"ChocoRagdoll"},"content":" * Converts the task to a formatted string for saving to a file.","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The task in a format suitable for saving to a file.","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"ChocoRagdoll"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ChocoRagdoll"},"content":" return (this.type \u003d\u003d TaskType.TODO ? \"T\" : this.type \u003d\u003d TaskType.DEADLINE ? \"D\" : \"E\")","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ChocoRagdoll"},"content":" + \" | \" + (isDone ? \"1\" : \"0\")","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ChocoRagdoll"},"content":" + \" | \" + description;","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"ChocoRagdoll"},"content":" * Converts the task to a string representation with completion status for displaying to the user.","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The string representation of the task with completion status.","lastModifiedDate":"2024-02-04"},{"lineNumber":74,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":75,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"ChocoRagdoll"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"ChocoRagdoll"},"content":" String status \u003d isDone ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"ChocoRagdoll"},"content":" return status + \" \" + description;","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"ChocoRagdoll":80}},{"path":"src/main/java/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package tasks;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.List;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.Locale;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"import enums.TaskType;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" * The TaskList class manages a list of tasks and provides methods to manipulate them.","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"public class TaskList {","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" * Constructs a TaskList instance with the specified list of tasks.","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" * @param loadedTasks The list of tasks loaded from storage.","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" public TaskList(List\u003cTask\u003e loadedTasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" tasks \u003d loadedTasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" * Gets the list of tasks.","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The list of tasks.","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" return tasks;","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" * Adds a task based on user input to the task list.","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" * @param input The user input specifying the task to be added.","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" * @param storage The storage to save the updated task list.","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" public void addTask(String input, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" if (parts.length \u003c 2 || parts[1].trim().isEmpty()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showTaskTypes();","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":" return;","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" TaskType taskType;","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":" Task task \u003d null;","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":" taskType \u003d TaskType.valueOf(parts[0].toUpperCase());","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showTaskTypes();","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":" return;","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"ChocoRagdoll"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"ChocoRagdoll"},"content":" case TODO:","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"ChocoRagdoll"},"content":" task \u003d new ToDo(parts[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"ChocoRagdoll"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"ChocoRagdoll"},"content":" case DEADLINE:","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"ChocoRagdoll"},"content":" String[] info \u003d parts[1].split(\" /by \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"ChocoRagdoll"},"content":" if (info.length \u003c 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showFormatError(\"deadline [task] /by [yyyy-mm-dd]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"ChocoRagdoll"},"content":" return;","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"ChocoRagdoll"},"content":" LocalDate byDate \u003d LocalDate.parse(info[1], DateTimeFormatter.ISO_LOCAL_DATE);","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"ChocoRagdoll"},"content":" task \u003d new Deadline(info[0], byDate);","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showFormatError(\"deadline [task] /by [yyyy-mm-dd]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"ChocoRagdoll"},"content":" return;","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"ChocoRagdoll"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"ChocoRagdoll"},"content":" case EVENT:","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"ChocoRagdoll"},"content":" String[] eventParts \u003d parts[1].split(\" /from \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"ChocoRagdoll"},"content":" if (eventParts.length \u003c 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showFormatError(\"event [task] /from [yyyy-mm-dd] /to [yyyy-mm-dd]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"ChocoRagdoll"},"content":" return;","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"ChocoRagdoll"},"content":" String[] timeParts \u003d eventParts[1].split(\" /to \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"ChocoRagdoll"},"content":" if (timeParts.length \u003c 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showFormatError(\"event [task] /from [yyyy-mm-dd] /to [yyyy-mm-dd]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"ChocoRagdoll"},"content":" return;","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"ChocoRagdoll"},"content":" LocalDate from \u003d LocalDate.parse(timeParts[0], DateTimeFormatter.ISO_LOCAL_DATE);","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"ChocoRagdoll"},"content":" LocalDate to \u003d LocalDate.parse(timeParts[1], DateTimeFormatter.ISO_LOCAL_DATE);","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"ChocoRagdoll"},"content":" task \u003d new Event(eventParts[0], from, to);","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showFormatError(\"event [task] /from [yyyy-mm-dd] /to [yyyy-mm-dd]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"ChocoRagdoll"},"content":" return;","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"ChocoRagdoll"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"ChocoRagdoll"},"content":" default:","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showTaskTypes();","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"ChocoRagdoll"},"content":" return;","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"ChocoRagdoll"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"ChocoRagdoll"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"ChocoRagdoll"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(ui.getUser() + \", I\u0027ve added this task:\\n \" + task);","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"ChocoRagdoll"},"content":" int taskCount \u003d tasks.size();","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showTaskCount(taskCount);","lastModifiedDate":"2024-02-03"},{"lineNumber":114,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":115,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":116,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":117,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":118,"author":{"gitId":"ChocoRagdoll"},"content":" * Deletes a task from the task list based on user input .","lastModifiedDate":"2024-02-04"},{"lineNumber":119,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":120,"author":{"gitId":"ChocoRagdoll"},"content":" * @param input The user input specifying the task to be deleted.","lastModifiedDate":"2024-02-04"},{"lineNumber":121,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2024-02-04"},{"lineNumber":122,"author":{"gitId":"ChocoRagdoll"},"content":" * @param storage The storage to save the updated task list.","lastModifiedDate":"2024-02-04"},{"lineNumber":123,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":124,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteTask(String input, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":125,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":126,"author":{"gitId":"ChocoRagdoll"},"content":" int idx \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2024-02-03"},{"lineNumber":127,"author":{"gitId":"ChocoRagdoll"},"content":" int taskCount \u003d tasks.size();","lastModifiedDate":"2024-02-03"},{"lineNumber":128,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":129,"author":{"gitId":"ChocoRagdoll"},"content":" if (idx \u003c 0 || idx \u003e\u003d taskCount) {","lastModifiedDate":"2024-02-03"},{"lineNumber":130,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(\"No task numbered \" + (idx + 1) + \", \" + ui.getUser() + \"!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":131,"author":{"gitId":"ChocoRagdoll"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":132,"author":{"gitId":"ChocoRagdoll"},"content":" Task removed \u003d tasks.remove(idx);","lastModifiedDate":"2024-02-03"},{"lineNumber":133,"author":{"gitId":"ChocoRagdoll"},"content":" taskCount--;","lastModifiedDate":"2024-02-03"},{"lineNumber":134,"author":{"gitId":"ChocoRagdoll"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-03"},{"lineNumber":135,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":136,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(ui.getUser() + \", I\u0027ve removed this task:\\n \" + removed);","lastModifiedDate":"2024-02-03"},{"lineNumber":137,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showTaskCount(taskCount);","lastModifiedDate":"2024-02-03"},{"lineNumber":138,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":139,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":140,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showFormatError(\"delete [task index]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":141,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":142,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":143,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":144,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":145,"author":{"gitId":"ChocoRagdoll"},"content":" * Lists all tasks in the task list.","lastModifiedDate":"2024-02-04"},{"lineNumber":146,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":147,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2024-02-04"},{"lineNumber":148,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":149,"author":{"gitId":"ChocoRagdoll"},"content":" public void listTasks(Ui ui) {","lastModifiedDate":"2024-02-03"},{"lineNumber":150,"author":{"gitId":"ChocoRagdoll"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-02-03"},{"lineNumber":151,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(\"There is no task yet, \" + ui.getUser() + \"!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":152,"author":{"gitId":"ChocoRagdoll"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":153,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(ui.getUser() + \", your task list has the following tasks:\");","lastModifiedDate":"2024-02-03"},{"lineNumber":154,"author":{"gitId":"ChocoRagdoll"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":155,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage((i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2024-02-04"},{"lineNumber":156,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":157,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":158,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":159,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":160,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":161,"author":{"gitId":"ChocoRagdoll"},"content":" * Processes the input to find tasks by date or keyword.","lastModifiedDate":"2024-02-04"},{"lineNumber":162,"author":{"gitId":"ChocoRagdoll"},"content":" * If the input is a date in ISO_LOCAL_DATE format (yyyy-MM-dd), it will search for tasks on that date.","lastModifiedDate":"2024-02-04"},{"lineNumber":163,"author":{"gitId":"ChocoRagdoll"},"content":" * If the input is not a date, it will treat it as a keyword and search task descriptions.","lastModifiedDate":"2024-02-04"},{"lineNumber":164,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":165,"author":{"gitId":"ChocoRagdoll"},"content":" * @param input The search parameter provided by the user, either a date or a keyword.","lastModifiedDate":"2024-02-04"},{"lineNumber":166,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The Ui instance for user interaction.","lastModifiedDate":"2024-02-04"},{"lineNumber":167,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":168,"author":{"gitId":"ChocoRagdoll"},"content":" public void find(String input, Ui ui) {","lastModifiedDate":"2024-02-04"},{"lineNumber":169,"author":{"gitId":"ChocoRagdoll"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":170,"author":{"gitId":"ChocoRagdoll"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":171,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showFindFormatError();","lastModifiedDate":"2024-02-04"},{"lineNumber":172,"author":{"gitId":"ChocoRagdoll"},"content":" return;","lastModifiedDate":"2024-02-03"},{"lineNumber":173,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":174,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":175,"author":{"gitId":"ChocoRagdoll"},"content":" String searchInput \u003d parts[1].trim();","lastModifiedDate":"2024-02-04"},{"lineNumber":176,"author":{"gitId":"ChocoRagdoll"},"content":" LocalDate date;","lastModifiedDate":"2024-02-03"},{"lineNumber":177,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":178,"author":{"gitId":"ChocoRagdoll"},"content":" date \u003d LocalDate.parse(searchInput);","lastModifiedDate":"2024-02-04"},{"lineNumber":179,"author":{"gitId":"ChocoRagdoll"},"content":" findTasksByDate(date, ui);","lastModifiedDate":"2024-02-04"},{"lineNumber":180,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":181,"author":{"gitId":"ChocoRagdoll"},"content":" findTasksByKeyword(searchInput, ui);","lastModifiedDate":"2024-02-04"},{"lineNumber":182,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":183,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":184,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":185,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":186,"author":{"gitId":"ChocoRagdoll"},"content":" * Finds and displays tasks that are due on the specified date.","lastModifiedDate":"2024-02-04"},{"lineNumber":187,"author":{"gitId":"ChocoRagdoll"},"content":" * It will show deadlines and events that occur on the given date.","lastModifiedDate":"2024-02-04"},{"lineNumber":188,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":189,"author":{"gitId":"ChocoRagdoll"},"content":" * @param date The LocalDate object representing the date to search for.","lastModifiedDate":"2024-02-04"},{"lineNumber":190,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The Ui instance for user interaction.","lastModifiedDate":"2024-02-04"},{"lineNumber":191,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":192,"author":{"gitId":"ChocoRagdoll"},"content":" private void findTasksByDate(LocalDate date, Ui ui) {","lastModifiedDate":"2024-02-04"},{"lineNumber":193,"author":{"gitId":"ChocoRagdoll"},"content":" int count \u003d 0;","lastModifiedDate":"2024-02-03"},{"lineNumber":194,"author":{"gitId":"ChocoRagdoll"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":195,"author":{"gitId":"ChocoRagdoll"},"content":" if ((task instanceof Deadline \u0026\u0026 ((Deadline) task).getBy().isEqual(date))","lastModifiedDate":"2024-02-03"},{"lineNumber":196,"author":{"gitId":"ChocoRagdoll"},"content":" || (task instanceof Event \u0026\u0026 ((Event) task).getFrom().isEqual(date))) {","lastModifiedDate":"2024-02-03"},{"lineNumber":197,"author":{"gitId":"ChocoRagdoll"},"content":" if (count \u003d\u003d 0) {","lastModifiedDate":"2024-02-03"},{"lineNumber":198,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(ui.getUser() + \", on \"","lastModifiedDate":"2024-02-03"},{"lineNumber":199,"author":{"gitId":"ChocoRagdoll"},"content":" + date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\").withLocale(Locale.US))","lastModifiedDate":"2024-02-03"},{"lineNumber":200,"author":{"gitId":"ChocoRagdoll"},"content":" + \", you have the following tasks:\");","lastModifiedDate":"2024-02-03"},{"lineNumber":201,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":202,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage((count + 1) + \".\" + task);","lastModifiedDate":"2024-02-04"},{"lineNumber":203,"author":{"gitId":"ChocoRagdoll"},"content":" count++;","lastModifiedDate":"2024-02-03"},{"lineNumber":204,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":205,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":206,"author":{"gitId":"ChocoRagdoll"},"content":" if (count \u003d\u003d 0) {","lastModifiedDate":"2024-02-03"},{"lineNumber":207,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(ui.getUser() + \", you have no task on \"","lastModifiedDate":"2024-02-03"},{"lineNumber":208,"author":{"gitId":"ChocoRagdoll"},"content":" + date.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\").withLocale(Locale.US)) + \"!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":209,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":210,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":211,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":212,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":213,"author":{"gitId":"ChocoRagdoll"},"content":" * Finds and displays tasks that contain the given keyword in their description.","lastModifiedDate":"2024-02-04"},{"lineNumber":214,"author":{"gitId":"ChocoRagdoll"},"content":" * The search is case-insensitive.","lastModifiedDate":"2024-02-04"},{"lineNumber":215,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":216,"author":{"gitId":"ChocoRagdoll"},"content":" * @param keyword The keyword to search for in task descriptions.","lastModifiedDate":"2024-02-04"},{"lineNumber":217,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The Ui instance for user interaction.","lastModifiedDate":"2024-02-04"},{"lineNumber":218,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":219,"author":{"gitId":"ChocoRagdoll"},"content":" private void findTasksByKeyword(String keyword, Ui ui) {","lastModifiedDate":"2024-02-04"},{"lineNumber":220,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cTask\u003e foundTasks \u003d tasks.stream()","lastModifiedDate":"2024-02-04"},{"lineNumber":221,"author":{"gitId":"ChocoRagdoll"},"content":" .filter(task -\u003e task.getDescription().toLowerCase().contains(keyword.toLowerCase()))","lastModifiedDate":"2024-02-04"},{"lineNumber":222,"author":{"gitId":"ChocoRagdoll"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-02-04"},{"lineNumber":223,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":224,"author":{"gitId":"ChocoRagdoll"},"content":" if (foundTasks.isEmpty()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":225,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(ui.getUser() + \", I couldn\u0027t find any task with the keyword: \u0027\" + keyword + \"\u0027.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":226,"author":{"gitId":"ChocoRagdoll"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":227,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(ui.getUser() + \", here are the tasks containing the keyword \u0027\" + keyword + \"\u0027:\");","lastModifiedDate":"2024-02-04"},{"lineNumber":228,"author":{"gitId":"ChocoRagdoll"},"content":" for (int i \u003d 0; i \u003c foundTasks.size(); i++) {","lastModifiedDate":"2024-02-04"},{"lineNumber":229,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage((i + 1) + \".\" + foundTasks.get(i).toString());","lastModifiedDate":"2024-02-04"},{"lineNumber":230,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":231,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":232,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":233,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":234,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":235,"author":{"gitId":"ChocoRagdoll"},"content":" * Marks a task as completed based on user input.","lastModifiedDate":"2024-02-04"},{"lineNumber":236,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":237,"author":{"gitId":"ChocoRagdoll"},"content":" * @param input The user input specifying the task to be marked as completed.","lastModifiedDate":"2024-02-04"},{"lineNumber":238,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2024-02-04"},{"lineNumber":239,"author":{"gitId":"ChocoRagdoll"},"content":" * @param storage The storage to save the updated task list.","lastModifiedDate":"2024-02-04"},{"lineNumber":240,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":241,"author":{"gitId":"ChocoRagdoll"},"content":" public void markTask(String input, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":242,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":243,"author":{"gitId":"ChocoRagdoll"},"content":" int idx \u003d Integer.parseInt(input.substring(5)) - 1;","lastModifiedDate":"2024-02-03"},{"lineNumber":244,"author":{"gitId":"ChocoRagdoll"},"content":" if (idx \u003c 0 || idx \u003e\u003d tasks.size() || tasks.get(idx) \u003d\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":245,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showNoTaskIndex(idx);","lastModifiedDate":"2024-02-03"},{"lineNumber":246,"author":{"gitId":"ChocoRagdoll"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":247,"author":{"gitId":"ChocoRagdoll"},"content":" tasks.get(idx).mark();","lastModifiedDate":"2024-02-03"},{"lineNumber":248,"author":{"gitId":"ChocoRagdoll"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-03"},{"lineNumber":249,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(ui.getUser() + \"! I\u0027ve marked this task as done:\\n\" + tasks.get(idx));","lastModifiedDate":"2024-02-03"},{"lineNumber":250,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":251,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":252,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showFormatError(\"mark [task index]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":253,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":254,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":255,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":256,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":257,"author":{"gitId":"ChocoRagdoll"},"content":" * Unmarks a completed task based on user input.","lastModifiedDate":"2024-02-04"},{"lineNumber":258,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":259,"author":{"gitId":"ChocoRagdoll"},"content":" * @param input The user input specifying the task to be unmarked.","lastModifiedDate":"2024-02-04"},{"lineNumber":260,"author":{"gitId":"ChocoRagdoll"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2024-02-04"},{"lineNumber":261,"author":{"gitId":"ChocoRagdoll"},"content":" * @param storage The storage to save the updated task list.","lastModifiedDate":"2024-02-04"},{"lineNumber":262,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":263,"author":{"gitId":"ChocoRagdoll"},"content":" public void unmarkTask(String input, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":264,"author":{"gitId":"ChocoRagdoll"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":265,"author":{"gitId":"ChocoRagdoll"},"content":" int idx \u003d Integer.parseInt(input.substring(7)) - 1;","lastModifiedDate":"2024-02-03"},{"lineNumber":266,"author":{"gitId":"ChocoRagdoll"},"content":" if (idx \u003c 0 || idx \u003e\u003d tasks.size() || tasks.get(idx) \u003d\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":267,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showNoTaskIndex(idx);","lastModifiedDate":"2024-02-03"},{"lineNumber":268,"author":{"gitId":"ChocoRagdoll"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":269,"author":{"gitId":"ChocoRagdoll"},"content":" tasks.get(idx).unmark();","lastModifiedDate":"2024-02-03"},{"lineNumber":270,"author":{"gitId":"ChocoRagdoll"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-03"},{"lineNumber":271,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showMessage(\"Ok, \" + ui.getUser() + \"! I\u0027ve undone this task:\\n\" + tasks.get(idx));","lastModifiedDate":"2024-02-03"},{"lineNumber":272,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":273,"author":{"gitId":"ChocoRagdoll"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":274,"author":{"gitId":"ChocoRagdoll"},"content":" ui.showFormatError(\"unmark [task index]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":275,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":276,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":277,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ChocoRagdoll":277}},{"path":"src/main/java/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package tasks;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import enums.TaskType;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":" * The ToDo class represents a task of type \"ToDo\" with a description.","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":" * Constructs a ToDo instance with the specified description.","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":" * @param description The description of the ToDo task.","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":" super(description);","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":" this.type \u003d TaskType.TODO;","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":" * Converts the ToDo task to a string representation with task type and completion status.","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" * @return The string representation of the ToDo task with task type and completion status.","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" return type.getSymbol() + super.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"ChocoRagdoll":28}},{"path":"src/test/java/data/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package data;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.List;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.Event;","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":"public class StorageTest {","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" private Path tempFile;","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" private Storage storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" private Ui mockUi;","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" @BeforeEach","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" public void setUp(@TempDir Path tempDir) {","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" tempFile \u003d tempDir.resolve(\"testTasks.txt\");","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" mockUi \u003d mock(Ui.class);","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" storage \u003d new Storage(tempFile.toString(), mockUi);","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" @AfterEach","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" public void tearDown() throws IOException {","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" if (Files.exists(tempFile)) {","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" Files.delete(tempFile);","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" public void saveTasks_loadTasks_tasksSavedAndLoaded() {","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" ToDo todo \u003d new ToDo(\"Read book\");","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" Deadline deadline \u003d new Deadline(\"Submit assignment\", java.time.LocalDate.now());","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" Event event \u003d new Event(\"Team meeting\", java.time.LocalDate.now(),","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" java.time.LocalDate.now().plusDays(1));","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cTask\u003e tasksToSave \u003d List.of(todo, deadline, event);","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" storage.save(tasksToSave);","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cTask\u003e loadedTasks \u003d storage.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":" assertEquals(tasksToSave.size(), loadedTasks.size(), \"Loaded tasks should match saved tasks in number.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(loadedTasks.get(0) instanceof ToDo","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":" \u0026\u0026 loadedTasks.get(0).getDescription().equals(todo.getDescription()),","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":" \"First task should be a ToDo with the correct description.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(loadedTasks.get(1) instanceof Deadline","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":" \u0026\u0026 loadedTasks.get(1).getDescription().equals(deadline.getDescription()),","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"ChocoRagdoll"},"content":" \"Second task should be a Deadline with the correct description.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(loadedTasks.get(2) instanceof Event","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":" \u0026\u0026 loadedTasks.get(2).getDescription().equals(event.getDescription()),","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":" \"Third task should be an Event with the correct description.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":65,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"ChocoRagdoll"},"content":" public void loadTasks_noFile_emptyTaskList() {","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"ChocoRagdoll"},"content":" // Attempt to load tasks where no file exists","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cTask\u003e loadedTasks \u003d storage.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(loadedTasks.isEmpty(), \"Should load an empty list if the file does not exist.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"ChocoRagdoll"},"content":" public void loadTasks_markedTask_loadedTaskCorrectlyMarked() {","lastModifiedDate":"2024-02-04"},{"lineNumber":74,"author":{"gitId":"ChocoRagdoll"},"content":" Deadline deadline \u003d new Deadline(\"Submit assignment\", java.time.LocalDate.now());","lastModifiedDate":"2024-02-04"},{"lineNumber":75,"author":{"gitId":"ChocoRagdoll"},"content":" deadline.mark();","lastModifiedDate":"2024-02-04"},{"lineNumber":76,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cTask\u003e tasksToSave \u003d List.of(deadline);","lastModifiedDate":"2024-02-04"},{"lineNumber":77,"author":{"gitId":"ChocoRagdoll"},"content":" storage.save(tasksToSave);","lastModifiedDate":"2024-02-04"},{"lineNumber":78,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":79,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cTask\u003e loadedTasks \u003d storage.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":80,"author":{"gitId":"ChocoRagdoll"},"content":" assertEquals(tasksToSave.size(), loadedTasks.size(), \"Loaded tasks should match saved tasks in number.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":81,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":82,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(loadedTasks.get(0).isDone(), \"The loaded task should be marked as done.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":83,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":84,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"ChocoRagdoll":84}},{"path":"src/test/java/data/StorageTestCorruptedLine.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package data;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.mockito.Mockito.times;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.List;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"//CHECKSTYLE.OFF: MissingJavadocType","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":"public class StorageTestCorruptedLine {","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" private Path tempFile;","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" private Storage storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" private Ui mockUi;","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":" @BeforeEach","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" public void setUp(@TempDir Path tempDir) throws Exception {","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" tempFile \u003d tempDir.resolve(\"testTasksCorrupted.txt\");","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" mockUi \u003d mock(Ui.class);","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" storage \u003d new Storage(tempFile.toString(), mockUi);","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cString\u003e lines \u003d Arrays.asList(\"T | 1 | Read book\", \"X | 2 | Invalid task\");","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" Files.write(tempFile, lines);","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" //CHECKSTYLE.OFF: MissingJavadocMethod","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" public void load_withCorruptedLine_outputsCorruptedMessage() {","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" storage.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" verify(mockUi, times(1)).showLoadingError(\"corrupted\");","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" @AfterEach","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" public void tearDown() throws Exception {","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" Files.deleteIfExists(tempFile);","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"ChocoRagdoll":47}},{"path":"src/test/java/tasks/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"package tasks;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.mockito.Mockito.atLeastOnce;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"import java.util.List;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"import org.mockito.ArgumentCaptor;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":"import core.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"import data.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"ChocoRagdoll"},"content":"public class TaskListTest {","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"ChocoRagdoll"},"content":" private TaskList taskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ChocoRagdoll"},"content":" private Ui mockUi;","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"ChocoRagdoll"},"content":" private Storage mockStorage;","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"ChocoRagdoll"},"content":" private final String lineSeparator \u003d System.lineSeparator();","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"ChocoRagdoll"},"content":" @BeforeEach","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"ChocoRagdoll"},"content":" public void setUp() {","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cTask\u003e loadedTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"ChocoRagdoll"},"content":" mockUi \u003d mock(Ui.class);","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"ChocoRagdoll"},"content":" mockStorage \u003d mock(Storage.class);","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"ChocoRagdoll"},"content":" taskList \u003d new TaskList(loadedTasks);","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"ChocoRagdoll"},"content":" public void addTask_addToDo_toDoAdded() {","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"ChocoRagdoll"},"content":" TaskList taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"ChocoRagdoll"},"content":" String input \u003d \"TOdo sample task\";","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(input, mock(Ui.class), mock(Storage.class));","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"ChocoRagdoll"},"content":" Task addedTask \u003d taskList.getTasks().get(0);","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(addedTask instanceof ToDo, \"The added task should be an instance of ToDo\");","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"ChocoRagdoll"},"content":" public void addTask_addDeadline_deadlineAdded() {","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"ChocoRagdoll"},"content":" TaskList taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"ChocoRagdoll"},"content":" String input \u003d \"deadline return book /by 2022-12-30\";","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(input, mock(Ui.class), mock(Storage.class));","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"ChocoRagdoll"},"content":" Task addedTask \u003d taskList.getTasks().get(0);","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(addedTask instanceof Deadline, \"The added task should be an instance of Deadline\");","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"ChocoRagdoll"},"content":" public void addTask_addEvent_eventAdded() {","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"ChocoRagdoll"},"content":" TaskList taskList \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"ChocoRagdoll"},"content":" String input \u003d \"event project meeting /from 2022-12-15 /to 2022-12-16\";","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(input, mock(Ui.class), mock(Storage.class));","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"ChocoRagdoll"},"content":" Task addedTask \u003d taskList.getTasks().get(0);","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(addedTask instanceof Event, \"The added task should be an instance of Event\");","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteTask_deleteTask_taskDeleted() {","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"ChocoRagdoll"},"content":" String inputAddFirst \u003d \"todo sample task\";","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"ChocoRagdoll"},"content":" String inputAddSecond \u003d \"Deadline return book /by 2022-12-30\";","lastModifiedDate":"2024-02-04"},{"lineNumber":65,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(inputAddFirst, mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(inputAddSecond, mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"ChocoRagdoll"},"content":" assertEquals(2, taskList.getTasks().size(), \"Setup failed to add task.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.deleteTask(\"delete 2\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"ChocoRagdoll"},"content":" Task remainedTask \u003d taskList.getTasks().get(0);","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(remainedTask instanceof ToDo, \"The remained task should be an instance of Deadline\");","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":74,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":75,"author":{"gitId":"ChocoRagdoll"},"content":" public void deleteTask_wrongFormat_messagePrinted() {","lastModifiedDate":"2024-02-04"},{"lineNumber":76,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(\"deadline return book /by 2022-12-30\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":77,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(\"event project meeting /from 2022-12-30 /to 2022-12-31\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":78,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":79,"author":{"gitId":"ChocoRagdoll"},"content":" String inputWrongFormat \u003d \"delete deadline\";","lastModifiedDate":"2024-02-04"},{"lineNumber":80,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":81,"author":{"gitId":"ChocoRagdoll"},"content":" ArgumentCaptor\u003cString\u003e messageCaptor \u003d ArgumentCaptor.forClass(String.class);","lastModifiedDate":"2024-02-04"},{"lineNumber":82,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.deleteTask(inputWrongFormat, mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":83,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":84,"author":{"gitId":"ChocoRagdoll"},"content":" verify(mockUi, atLeastOnce()).showFormatError(messageCaptor.capture());","lastModifiedDate":"2024-02-04"},{"lineNumber":85,"author":{"gitId":"ChocoRagdoll"},"content":" String capturedMessages \u003d String.join(lineSeparator, messageCaptor.getAllValues());","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":87,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(capturedMessages.contains(\"delete [task index]\"), \"Should show error message.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":88,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":89,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":90,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"ChocoRagdoll"},"content":" /*","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":93,"author":{"gitId":"ChocoRagdoll"},"content":" public void listTasksOnDate_twoTasks_tasksPrinted() {","lastModifiedDate":"2024-02-04"},{"lineNumber":94,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(\"deadline return book /by 2022-12-30\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":95,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(\"event project meeting /from 2022-12-30 /to 2022-12-31\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":96,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":97,"author":{"gitId":"ChocoRagdoll"},"content":" reset(mockUi);","lastModifiedDate":"2024-02-04"},{"lineNumber":98,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":99,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.listTasksOnDate(\"list_on 2022-12-30\", mockUi);","lastModifiedDate":"2024-02-04"},{"lineNumber":100,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":101,"author":{"gitId":"ChocoRagdoll"},"content":" ArgumentCaptor\u003cString\u003e messageCaptor \u003d ArgumentCaptor.forClass(String.class);","lastModifiedDate":"2024-02-04"},{"lineNumber":102,"author":{"gitId":"ChocoRagdoll"},"content":" verify(mockUi, atLeastOnce()).showMessage(messageCaptor.capture());","lastModifiedDate":"2024-02-04"},{"lineNumber":103,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":104,"author":{"gitId":"ChocoRagdoll"},"content":" List\u003cString\u003e capturedMessages \u003d messageCaptor.getAllValues();","lastModifiedDate":"2024-02-04"},{"lineNumber":105,"author":{"gitId":"ChocoRagdoll"},"content":" String combinedMessages \u003d String.join(System.lineSeparator(), capturedMessages);","lastModifiedDate":"2024-02-04"},{"lineNumber":106,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":107,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(combinedMessages.contains(\"return book\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":108,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(combinedMessages.contains(\"project meeting\"), \"Should list tasks on the specified date.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":109,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":110,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":111,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":112,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":113,"author":{"gitId":"ChocoRagdoll"},"content":" public void ListTasksOnDate_noTask_messagePrinted() {","lastModifiedDate":"2024-02-04"},{"lineNumber":114,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(\"deadline return book /by 2022-12-30\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":115,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(\"event project meeting /from 2022-12-30 /to 2022-12-31\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":116,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":117,"author":{"gitId":"ChocoRagdoll"},"content":" ArgumentCaptor\u003cString\u003e messageCaptor \u003d ArgumentCaptor.forClass(String.class);","lastModifiedDate":"2024-02-04"},{"lineNumber":118,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.listTasksOnDate(\"list_on 2022-12-29\", mockUi);","lastModifiedDate":"2024-02-04"},{"lineNumber":119,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":120,"author":{"gitId":"ChocoRagdoll"},"content":" verify(mockUi, atLeastOnce()).showMessage(messageCaptor.capture());","lastModifiedDate":"2024-02-04"},{"lineNumber":121,"author":{"gitId":"ChocoRagdoll"},"content":" String capturedMessages \u003d String.join(LINE_SEPARATOR, messageCaptor.getAllValues());","lastModifiedDate":"2024-02-04"},{"lineNumber":122,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":123,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(capturedMessages.contains(\"no task\"), \"Should have no task to list on the specified date.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":124,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":125,"author":{"gitId":"ChocoRagdoll"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":126,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":127,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":128,"author":{"gitId":"ChocoRagdoll"},"content":" public void testMarkTask() {","lastModifiedDate":"2024-02-04"},{"lineNumber":129,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(\"todo sample task\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":130,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.markTask(\"mark 1\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":131,"author":{"gitId":"ChocoRagdoll"},"content":" assertTrue(taskList.getTasks().get(0).isDone(), \"Should mark the specified task as done.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":132,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":133,"author":{"gitId":"ChocoRagdoll"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":134,"author":{"gitId":"ChocoRagdoll"},"content":" @Test","lastModifiedDate":"2024-02-04"},{"lineNumber":135,"author":{"gitId":"ChocoRagdoll"},"content":" public void testUnmarkTask() {","lastModifiedDate":"2024-02-04"},{"lineNumber":136,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.addTask(\"todo sample task\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":137,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.markTask(\"mark 1\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":138,"author":{"gitId":"ChocoRagdoll"},"content":" taskList.unmarkTask(\"unmark 1\", mockUi, mockStorage);","lastModifiedDate":"2024-02-04"},{"lineNumber":139,"author":{"gitId":"ChocoRagdoll"},"content":" assertFalse(taskList.getTasks().get(0).isDone(), \"Should unmark the specified task as not done.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":140,"author":{"gitId":"ChocoRagdoll"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":141,"author":{"gitId":"ChocoRagdoll"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"ChocoRagdoll":141}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ChocoRagdoll"},"content":"list","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"ChocoRagdoll"},"content":"todo read book","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"ChocoRagdoll"},"content":"lISt","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"ChocoRagdoll"},"content":"deadLIne return book /by June 6th","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"ChocoRagdoll"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"ChocoRagdoll"},"content":"tOdo join sports club","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"ChocoRagdoll"},"content":"toDO borrow book","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"ChocoRagdoll"},"content":"list","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"ChocoRagdoll"},"content":"mARk 1","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"ChocoRagdoll"},"content":"unmark 2","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"ChocoRagdoll"},"content":"list","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"ChocoRagdoll"},"content":"deLEte 3","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"ChocoRagdoll"},"content":"list","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"ChocoRagdoll"},"content":"deleTE 7","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"ChocoRagdoll"},"content":"invalid task","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"ChocoRagdoll"},"content":"deadline incomplete task","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"ChocoRagdoll"},"content":"event /from 2pm /to 4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"ChocoRagdoll"},"content":"bye","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"ChocoRagdoll":18}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"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":"ChocoRagdoll"},"content":"java -classpath ..\\bin Ragdoll \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":{"ChocoRagdoll":1,"-":20}}] diff --git a/ChocoRagdoll_ip_master/commits.json b/ChocoRagdoll_ip_master/commits.json index 7311ad8a..d6c96439 100644 --- a/ChocoRagdoll_ip_master/commits.json +++ b/ChocoRagdoll_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ChocoRagdoll":[{"date":"2024-01-27","commitResults":[{"hash":"19079de35980587d259aa9c7f9a7afd1fc482fd0","isMergeCommit":false,"messageTitle":"Changed the name to Ragdoll and Implemented an initial skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":10}}},{"hash":"25048cfc50082ef0f880e0ab0eacc398173a3786","isMergeCommit":false,"messageTitle":"Echo commands and exit with \u0027bye\u0027","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":4}}},{"hash":"5421fddf19cc19d8dba23046905df6177a379c1a","isMergeCommit":false,"messageTitle":"add task and list all function","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":5}}},{"hash":"38d6566d1e79960079bd16028b8b723b6d7850db","isMergeCommit":false,"messageTitle":"mark tasks as done / undone and customized personality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":12}}},{"hash":"c853492efd85a9c44e278532e23bdab6e59c5ff5","isMergeCommit":false,"messageTitle":"added 3 task types and some implementation changes","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":123,"deletions":47}}},{"hash":"20a660fe2ccd2be3e3ece666a9edd6a12a935e5c","isMergeCommit":false,"messageTitle":"automated testing using i/o until 3 task types","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":7,"deletions":7},"bat":{"insertions":1,"deletions":1}}},{"hash":"eb19131205d19f17fe4d6972d339896faef64427","isMergeCommit":false,"messageTitle":"complementary error handling and customized msgs for exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":36}}},{"hash":"3146b9e80c8bda1d394247c15dbe14fb04647bbc","isMergeCommit":false,"messageTitle":"added support for deleting and testing, fixed lowercase issue","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":3},"java":{"insertions":42,"deletions":18}}},{"hash":"ced16978c36a4ac9c9de58858ee338a4b3d12578","isMergeCommit":false,"messageTitle":"added application of enums and fixed some exception handling","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":154,"deletions":126}}}]},{"date":"2024-01-31","commitResults":[{"hash":"7cdd47e5522c5fadcd39866e5f98df498d84f2c8","isMergeCommit":false,"messageTitle":"Match the current java coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":49}}}]},{"date":"2024-02-01","commitResults":[{"hash":"08a3f4885bd64047c6aff6228d30f520405dce34","isMergeCommit":false,"messageTitle":"Save the tasks on the hard disk for certain operations","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":2}}},{"hash":"ab6b6ee0bb70731c2b0ae431afd1866d54139102","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"914c63ad09e7d663ff54930b1d920ff4234897bb","isMergeCommit":false,"messageTitle":"Parse dates and add relevant functions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":121,"deletions":19}}},{"hash":"f095cb7398ef35e0ab924d9694ec4df518de3e4b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-03","commitResults":[{"hash":"afe935d76d5dc41ff94f4b6fdab6c55eb4ecb43f","isMergeCommit":false,"messageTitle":"Make the code more OOP","messageBody":"Let\u0027s include separate classes Ui, TaskList, Storage, Parser, and all\ncommands that are currently in use.\n\nThis design aims to separate concerns, improve code readability, and\nmake the application more extensible.\n","fileTypesAndContributionMap":{"java":{"insertions":549,"deletions":325}}},{"hash":"b2f25962a6adf1ffc4952ff51c723d787b65da3b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-04","commitResults":[{"hash":"3baf450fc3319d964157f5f47e8a2a2d6a2cb7f1","isMergeCommit":false,"messageTitle":"Create packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":116,"deletions":0}}},{"hash":"9af2b3013683f9df77b2b557c81951421808d8b4","isMergeCommit":false,"messageTitle":"Reformat the imports in TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"101fe691222d81c1a2ae7c6d861a8861ebd6c8ee","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"6eaea1a1bcf219b3a9915b5361d7ca9391ec2705","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"53d83068fc6349194dae8745ec74eb9dd9b8c2fc","isMergeCommit":false,"messageTitle":"Add Gradle support","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"31eaeb00dabddeb0aeec2b68be199eec06b131a4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"56790cedfd0ffe4d8b2c9500227d8f3c4bbd6939","isMergeCommit":false,"messageTitle":"Add JUnit test","messageBody":"Let\u0027s include various tests for the Storage class and the TaskList\nclass so that the testing can be automated to ensure validity.\n\nLet\u0027s test the addTask, deleteTask, listTaskOnDate in the TaskList\nclass, save and load in the Storage class thoroughly.\n","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":281,"deletions":2}}},{"hash":"182c7492ce5caa771b6e66944cbf5dc42a802920","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"8657314c9545932deadf8839fbf2e26bcb0d78c1","isMergeCommit":false,"messageTitle":"Create a .jar file","messageBody":"","tags":["v0.1","A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"198c2841762b309f6f26da2993acf0adc4a21533","isMergeCommit":false,"messageTitle":"Minor Ui fix","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"ce9c4b98ea27359416c18f7e9d0c72e6680ff3f5","isMergeCommit":false,"messageTitle":"Add JavaDoc comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":301,"deletions":1}}},{"hash":"3e5657eb851b1018d2ccef7960f563d09b287e19","isMergeCommit":false,"messageTitle":"Comply with the CS2103T coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":2}}},{"hash":"01e0f28a4b7292f972b94bbc3120e8be93807d77","isMergeCommit":false,"messageTitle":"Add a find command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":16}}},{"hash":"571feae2f26e3c1650d488496b5603da04e7c72b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"b5d46cc2c842293f105d791a6fa73b01cbe5cdc4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"62fb3b8a2eb8ae6d5d08c2fc7f16c076bfa617df","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/core/Ui.java\n#\tsrc/main/java/tasks/TaskList.java\n","tags":["Level-9"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ChocoRagdoll":{"java":1418,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":3,"txt":18}},"authorContributionVariance":{"ChocoRagdoll":96628.0},"authorDisplayNameMap":{"ChocoRagdoll":"CS2103T-T10-3 SONG..CHAO"}} +{"authorDailyContributionsMap":{"ChocoRagdoll":[{"date":"2024-01-27","commitResults":[{"hash":"19079de35980587d259aa9c7f9a7afd1fc482fd0","isMergeCommit":false,"messageTitle":"Changed the name to Ragdoll and Implemented an initial skeletal version","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":10}}},{"hash":"25048cfc50082ef0f880e0ab0eacc398173a3786","isMergeCommit":false,"messageTitle":"Echo commands and exit with \u0027bye\u0027","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":4}}},{"hash":"5421fddf19cc19d8dba23046905df6177a379c1a","isMergeCommit":false,"messageTitle":"add task and list all function","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":5}}},{"hash":"38d6566d1e79960079bd16028b8b723b6d7850db","isMergeCommit":false,"messageTitle":"mark tasks as done / undone and customized personality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":12}}},{"hash":"c853492efd85a9c44e278532e23bdab6e59c5ff5","isMergeCommit":false,"messageTitle":"added 3 task types and some implementation changes","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":123,"deletions":47}}},{"hash":"20a660fe2ccd2be3e3ece666a9edd6a12a935e5c","isMergeCommit":false,"messageTitle":"automated testing using i/o until 3 task types","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":7,"deletions":7},"bat":{"insertions":1,"deletions":1}}},{"hash":"eb19131205d19f17fe4d6972d339896faef64427","isMergeCommit":false,"messageTitle":"complementary error handling and customized msgs for exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":36}}},{"hash":"3146b9e80c8bda1d394247c15dbe14fb04647bbc","isMergeCommit":false,"messageTitle":"added support for deleting and testing, fixed lowercase issue","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":3},"java":{"insertions":42,"deletions":18}}},{"hash":"ced16978c36a4ac9c9de58858ee338a4b3d12578","isMergeCommit":false,"messageTitle":"added application of enums and fixed some exception handling","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":154,"deletions":126}}}]},{"date":"2024-01-31","commitResults":[{"hash":"7cdd47e5522c5fadcd39866e5f98df498d84f2c8","isMergeCommit":false,"messageTitle":"Match the current java coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":49}}}]},{"date":"2024-02-01","commitResults":[{"hash":"08a3f4885bd64047c6aff6228d30f520405dce34","isMergeCommit":false,"messageTitle":"Save the tasks on the hard disk for certain operations","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":2}}},{"hash":"ab6b6ee0bb70731c2b0ae431afd1866d54139102","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"914c63ad09e7d663ff54930b1d920ff4234897bb","isMergeCommit":false,"messageTitle":"Parse dates and add relevant functions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":121,"deletions":19}}},{"hash":"f095cb7398ef35e0ab924d9694ec4df518de3e4b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-03","commitResults":[{"hash":"afe935d76d5dc41ff94f4b6fdab6c55eb4ecb43f","isMergeCommit":false,"messageTitle":"Make the code more OOP","messageBody":"Let\u0027s include separate classes Ui, TaskList, Storage, Parser, and all\ncommands that are currently in use.\n\nThis design aims to separate concerns, improve code readability, and\nmake the application more extensible.\n","fileTypesAndContributionMap":{"java":{"insertions":549,"deletions":325}}},{"hash":"b2f25962a6adf1ffc4952ff51c723d787b65da3b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-04","commitResults":[{"hash":"3baf450fc3319d964157f5f47e8a2a2d6a2cb7f1","isMergeCommit":false,"messageTitle":"Create packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":116,"deletions":0}}},{"hash":"9af2b3013683f9df77b2b557c81951421808d8b4","isMergeCommit":false,"messageTitle":"Reformat the imports in TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"101fe691222d81c1a2ae7c6d861a8861ebd6c8ee","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"6eaea1a1bcf219b3a9915b5361d7ca9391ec2705","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"53d83068fc6349194dae8745ec74eb9dd9b8c2fc","isMergeCommit":false,"messageTitle":"Add Gradle support","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"31eaeb00dabddeb0aeec2b68be199eec06b131a4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"56790cedfd0ffe4d8b2c9500227d8f3c4bbd6939","isMergeCommit":false,"messageTitle":"Add JUnit test","messageBody":"Let\u0027s include various tests for the Storage class and the TaskList\nclass so that the testing can be automated to ensure validity.\n\nLet\u0027s test the addTask, deleteTask, listTaskOnDate in the TaskList\nclass, save and load in the Storage class thoroughly.\n","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":281,"deletions":2}}},{"hash":"182c7492ce5caa771b6e66944cbf5dc42a802920","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"8657314c9545932deadf8839fbf2e26bcb0d78c1","isMergeCommit":false,"messageTitle":"Create a .jar file","messageBody":"","tags":["v0.1","A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"198c2841762b309f6f26da2993acf0adc4a21533","isMergeCommit":false,"messageTitle":"Minor Ui fix","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"ce9c4b98ea27359416c18f7e9d0c72e6680ff3f5","isMergeCommit":false,"messageTitle":"Add JavaDoc comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":301,"deletions":1}}},{"hash":"3e5657eb851b1018d2ccef7960f563d09b287e19","isMergeCommit":false,"messageTitle":"Comply with the CS2103T coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":2}}},{"hash":"01e0f28a4b7292f972b94bbc3120e8be93807d77","isMergeCommit":false,"messageTitle":"Add a find command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":16}}},{"hash":"571feae2f26e3c1650d488496b5603da04e7c72b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"b5d46cc2c842293f105d791a6fa73b01cbe5cdc4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"62fb3b8a2eb8ae6d5d08c2fc7f16c076bfa617df","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/core/Ui.java\n#\tsrc/main/java/tasks/TaskList.java\n","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-07","commitResults":[{"hash":"d0bcb3462e259fa78f18caba9096f269bce0dc0f","isMergeCommit":false,"messageTitle":"Check and follow the code style","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":87,"deletions":64}}},{"hash":"a01783737dfa5eabd4bb44a9e9b462347c60b7be","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CheckStyle\u0027","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ChocoRagdoll":{"java":1441,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":8,"txt":18}},"authorContributionVariance":{"ChocoRagdoll":84554.45},"authorDisplayNameMap":{"ChocoRagdoll":"CS2103T-T10-3 SONG..CHAO"}} diff --git a/ChrysanthemumT_ip_master/authorship.json b/ChrysanthemumT_ip_master/authorship.json index ff5633cd..667efac0 100644 --- a/ChrysanthemumT_ip_master/authorship.json +++ b/ChrysanthemumT_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"# duke.Duke project template","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"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-02-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"ChrysanthemumT":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":"-"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" archiveFileName \u003d \"duke.jar\"","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"ChrysanthemumT":1,"-":42}},{"path":"data.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":" ____________________________________________________________","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":" 1.[T][ ] help","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":" ____________________________________________________________","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChrysanthemumT":3}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.dukeException.InvalidCommandException;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.dukeException.ListOutofBoundsException;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.dukeException.MissingArgumentsException;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.dukeException.WrongTimeFormatException;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.ui.UI;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.parser.Token;","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" * The Duke program is a simple task manager that allows users to manage their tasks through a command-line interface.","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" * Runs the Duke program. Allowing users to manage their tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" * @param args The command-line arguments (unused in this program).","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" UI ui \u003d new UI();","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" UI.greeting();","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" boolean isTrue \u003d true;","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" while(isTrue) {","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" String input \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" parser.feed(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" Token output;","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" output \u003d parser.parse();","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" UI.error(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" continue;","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (MissingArgumentsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" UI.error(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" continue;","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (WrongTimeFormatException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" UI.error(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" continue;","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" switch (output.getCmd()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" case BYE:","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" UI.goodbye();","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" isTrue \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" case LIST:","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" ui.listItems();","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" case UNMARK:","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" ui.unMarkTask(output.getSelectedItem() - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (ListOutofBoundsException e){","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" UI.error(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" case MARK:","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" ui.markTaskUI(output.getSelectedItem() - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (ListOutofBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" UI.error(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" case FIND:","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" ui.findTaskUI(output.getSearchKey());","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" case TODO:","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" // Fallthrough","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" // Fallthrough","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":" case EVENT:","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":" ui.addItem(output.getTask());","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" case DELETE:","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":" ui.removeTask(output.getSelectedItem() - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (ListOutofBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"ChrysanthemumT"},"content":" UI.error(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ChrysanthemumT":88,"-":4}},{"path":"src/main/java/duke/dukeException/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.dukeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * Exception class representing an error when an invalid command is entered.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * This exception is thrown when the user inputs a command that is not recognized.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class InvalidCommandException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs an InvalidCommandException with the specified detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" * @param message The detail message indicating that an invalid command was entered.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public InvalidCommandException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" * Overrides the getMessage() method to provide a formatted error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted error message indicating that an invalid command was entered.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" return \" \" + super.getMessage() + \"\\n You have entered an invalid command:\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" \" Try todo, event, deadline, list , delete , mark {index},\\n or unmark {index} instead.\";","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":28}},{"path":"src/main/java/duke/dukeException/ListOutofBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.dukeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * Exception class representing an error when trying to access an element at an invalid index in a list.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * This exception is thrown when attempting to access an element at an index that is out of bounds.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class ListOutofBoundsException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a ListOutofBoundsException with the specified detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" * @param message The detail message indicating the invalid list index.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public ListOutofBoundsException(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" * Overrides the getMessage() method to provide a formatted error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted error message indicating that the list index is out of bounds.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" return \" ListOutofBoundsException\\n You have entered an invalid list index:\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" \" List size:\" + super.getMessage();","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":28}},{"path":"src/main/java/duke/dukeException/MissingArgumentsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.dukeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * Exception class representing a generic error related to missing arguments in a command.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * This exception is thrown when a command is missing the required parameters or arguments.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a MissingArgumentsException with the specified detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" * @param message The detail message indicating the missing arguments.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsException(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" * Overrides the getMessage() method to provide a formatted error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted error message indicating that there are missing arguments in the command.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" return \" MissingArgumentException\\n You have missing arguments:\\n\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" \" Try \" + super.getMessage();","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":28}},{"path":"src/main/java/duke/dukeException/MissingArgumentsExceptionDeadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.dukeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * Exception class representing an error related to missing arguments in a deadlines command.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * This exception is thrown when a deadlines command is missing the required parameter, which is the deadline time.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsExceptionDeadlines extends MissingArgumentsExceptionTodo {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a MissingArgumentsExceptionDeadlines with the specified detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" * @param message The detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsExceptionDeadlines(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" * Overrides the getMessage() method to provide a formatted error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted error message guiding the user to include the deadline time in the deadlines command.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" return super.getMessage() + \" /by {your deadline}\";","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":28}},{"path":"src/main/java/duke/dukeException/MissingArgumentsExceptionEvents.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.dukeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsExceptionEvents extends MissingArgumentsExceptionTodo {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a MissingArgumentsExceptionMarking with the specified detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" * @param message The detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsExceptionEvents(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" * Overrides the getMessage() method to provide a formatted error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted error message guiding the user to include the index of the item in the marking command.","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" return super.getMessage() + \" /from {your starting time} /to {your ending time}\";","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":23}},{"path":"src/main/java/duke/dukeException/MissingArgumentsExceptionFind.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.dukeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * Represents an exception thrown when there are missing arguments in a \"find\" command.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * Extends the MissingArgumentsException class.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsExceptionFind extends MissingArgumentsException {","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a MissingArgumentsExceptionFind with the specified error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" * @param string The error message indicating missing arguments.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsExceptionFind(String string) {","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" * Overrides the getMessage method to provide a more specific error message","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" * for the \"find\" command, suggesting the required format.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The formatted error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" return super.getMessage() + \" {your item}\";","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"ChrysanthemumT":28}},{"path":"src/main/java/duke/dukeException/MissingArgumentsExceptionMarking.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.dukeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * Exception class representing an error related to missing arguments in marking commands (mark, unmark, delete).","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * This exception is thrown when a marking command is missing the required index of the item in the list.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsExceptionMarking extends MissingArgumentsException {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a MissingArgumentsExceptionMarking with the specified detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" * @param message The detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsExceptionMarking(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" * Overrides the getMessage() method to provide a formatted error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted error message guiding the user to include the index of the item in the marking command.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" return super.getMessage() + \" {index of item in list}\";","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":28}},{"path":"src/main/java/duke/dukeException/MissingArgumentsExceptionTodo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.dukeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * Exception class representing an error related to missing arguments in a todo command.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * This exception is thrown when a todo command is missing the required task description.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsExceptionTodo extends MissingArgumentsException {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a MissingArgumentsExceptionTodo with the specified detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" * @param message The detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsExceptionTodo(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" * Overrides the getMessage() method to provide a formatted error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted error message guiding the user to include the task description in the todo command.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" return super.getMessage() + \" {your item}\";","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":28}},{"path":"src/main/java/duke/dukeException/WrongTimeFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.dukeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * Exception class representing an error related to incorrect time format in Duke application.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" * This exception is thrown when there is an issue with the provided date and time format.","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"public class WrongTimeFormatException extends Exception {","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a WrongTimeFormatException with the specified detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" * @param message The detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" public WrongTimeFormatException(String string) {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" * Overrides the getMessage() method to provide a formatted error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted error message guiding the user to use the correct date and time format.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" return \" \" + super.getMessage() + \"\\n Try again using the format {day month year} using \" +","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" \"\\n space, dash or slash as delimiters\";","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ChrysanthemumT":29}},{"path":"src/main/java/duke/parser/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.parser;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * Enumeration representing different commands that can be parsed by the Duke application.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" * Each command corresponds to a specific user action or operation.","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"public enum Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" LIST, BYE, DELETE, UNMARK, MARK, TODO, EVENT, DEADLINE, SAVED, FIND","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ChrysanthemumT":10}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.parser;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.dukeException.InvalidCommandException;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.dukeException.MissingArgumentsException;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.dukeException.WrongTimeFormatException;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.dukeException.MissingArgumentsExceptionMarking;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.dukeException.MissingArgumentsExceptionDeadlines;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.dukeException.MissingArgumentsExceptionTodo;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.dukeException.MissingArgumentsExceptionEvents;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.storage.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.storage.Events;","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.storage.Deadlines;","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.storage.Todos;","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" * The Parser class is responsible for parsing user input and converting it into meaningful commands and tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" * It handles various command types such as listing tasks, adding, deleting, marking, and parsing time information.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" * The class also checks the validity of user input and throws exceptions for invalid or missing information.","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"public class Parser {","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" private String input;","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a Parser object with an empty input.","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" public Parser() {","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" this.input \u003d \"\";","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a Parser object with the specified input.","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" * @param input The input string to be parsed.","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" public Parser(String input) {","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" * Sets the input string for the parser.","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" * @param input The input string to be parsed.","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" public void feed(String input) {","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" * Parses the input string and returns a Token object representing the command and associated data.","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The Token object representing the parsed command and associated data.","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws InvalidCommandException If the command is invalid.","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws MissingArgumentsException If required arguments are missing.","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws WrongTimeFormatException If there is an issue with the time format in the input.","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" public Token parse() throws InvalidCommandException, MissingArgumentsException , WrongTimeFormatException {","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" String[] split \u003d this.input.split(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" Token token;","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" int flag;","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" int flag2;","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" switch(split[0]) {","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" case \"list\":","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length !\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d new Token(Command.LIST);","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":" case \"bye\":","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length !\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d new Token(Command.BYE);","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"ChrysanthemumT"},"content":" case \"delete\":","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length !\u003d 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionMarking(split[0]);","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"ChrysanthemumT"},"content":" Integer.parseInt(split[1]);","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d new Token(Command.DELETE, Integer.parseInt(split[1]));","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"ChrysanthemumT"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length !\u003d 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionMarking(split[0]);","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"ChrysanthemumT"},"content":" Integer.parseInt(split[1]);","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d new Token(Command.UNMARK, Integer.parseInt(split[1]));","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"ChrysanthemumT"},"content":" case \"mark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length !\u003d 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionMarking(split[0]);","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"ChrysanthemumT"},"content":" Integer.parseInt(split[1]);","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":118,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d new Token(Command.MARK, Integer.parseInt(split[1]));","lastModifiedDate":"2024-01-31"},{"lineNumber":119,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":121,"author":{"gitId":"ChrysanthemumT"},"content":" case \"find\":","lastModifiedDate":"2024-02-01"},{"lineNumber":122,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":123,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionTodo(\"find\");","lastModifiedDate":"2024-02-01"},{"lineNumber":124,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":125,"author":{"gitId":"ChrysanthemumT"},"content":" int space \u003d this.input.indexOf(\" \");","lastModifiedDate":"2024-02-01"},{"lineNumber":126,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d new Token(Command.FIND);","lastModifiedDate":"2024-02-01"},{"lineNumber":127,"author":{"gitId":"ChrysanthemumT"},"content":" token.setSearchKey(this.input.substring(space + 1));","lastModifiedDate":"2024-02-01"},{"lineNumber":128,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":129,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":130,"author":{"gitId":"ChrysanthemumT"},"content":" case \"todo\":","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionTodo(\"todo\");","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"ChrysanthemumT"},"content":" int space \u003d this.input.indexOf(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"ChrysanthemumT"},"content":" task \u003d new Todos(this.input, this.input.substring(space + 1));","lastModifiedDate":"2024-02-01"},{"lineNumber":136,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d new Token(Command.TODO, task);","lastModifiedDate":"2024-01-31"},{"lineNumber":137,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":138,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":139,"author":{"gitId":"ChrysanthemumT"},"content":" case \"event\":","lastModifiedDate":"2024-01-31"},{"lineNumber":140,"author":{"gitId":"ChrysanthemumT"},"content":" flag \u003d Arrays.asList(split).indexOf(\"/from\");","lastModifiedDate":"2024-01-31"},{"lineNumber":141,"author":{"gitId":"ChrysanthemumT"},"content":" flag2 \u003d Arrays.asList(split).indexOf(\"/to\");","lastModifiedDate":"2024-01-31"},{"lineNumber":142,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length \u003c 5) {","lastModifiedDate":"2024-01-31"},{"lineNumber":143,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionEvents(\"event\");","lastModifiedDate":"2024-01-31"},{"lineNumber":144,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (flag \u003c 2 || flag2 \u003d\u003d split.length -1 || flag2 - flag \u003c\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":145,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionEvents(\"event\");","lastModifiedDate":"2024-01-31"},{"lineNumber":146,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":147,"author":{"gitId":"ChrysanthemumT"},"content":" int space \u003d this.input.indexOf(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":148,"author":{"gitId":"ChrysanthemumT"},"content":" int from \u003d this.input.indexOf(\"/from\");","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"ChrysanthemumT"},"content":" int to \u003d this.input.indexOf(\"/to\");","lastModifiedDate":"2024-01-31"},{"lineNumber":150,"author":{"gitId":"ChrysanthemumT"},"content":" String fromDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":151,"author":{"gitId":"ChrysanthemumT"},"content":" String toDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":152,"author":{"gitId":"ChrysanthemumT"},"content":" // Processes From DateTime","lastModifiedDate":"2024-01-31"},{"lineNumber":153,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":154,"author":{"gitId":"ChrysanthemumT"},"content":" checkTimeFormat(this.input.substring(from + 5, to).trim());","lastModifiedDate":"2024-01-31"},{"lineNumber":155,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":156,"author":{"gitId":"ChrysanthemumT"},"content":" String[] temporaryArray \u003d this.input.substring(from + 5, to).trim().split(\"[\\\\s/\\\\-]+\");","lastModifiedDate":"2024-01-31"},{"lineNumber":157,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":158,"author":{"gitId":"ChrysanthemumT"},"content":" int lenTemp \u003d temporaryArray.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":159,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":160,"author":{"gitId":"ChrysanthemumT"},"content":" for (int i\u003d0; i\u003ctemporaryArray.length/2; i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":161,"author":{"gitId":"ChrysanthemumT"},"content":" String temp \u003d temporaryArray[i];","lastModifiedDate":"2024-01-31"},{"lineNumber":162,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[i] \u003d temporaryArray[lenTemp - 1 - i];","lastModifiedDate":"2024-01-31"},{"lineNumber":163,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[lenTemp - 1 - i] \u003d temp;","lastModifiedDate":"2024-01-31"},{"lineNumber":164,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":165,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":166,"author":{"gitId":"ChrysanthemumT"},"content":" if (temporaryArray[lenTemp - 2].length() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":167,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[lenTemp - 2] \u003d \"0\" + temporaryArray[lenTemp - 2];","lastModifiedDate":"2024-01-31"},{"lineNumber":168,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":169,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":170,"author":{"gitId":"ChrysanthemumT"},"content":" if (temporaryArray[lenTemp - 1].length() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":171,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[lenTemp - 1] \u003d \"0\" + temporaryArray[lenTemp - 1];","lastModifiedDate":"2024-01-31"},{"lineNumber":172,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":173,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":174,"author":{"gitId":"ChrysanthemumT"},"content":" fromDateTime \u003d String.join(\"-\", temporaryArray);","lastModifiedDate":"2024-01-31"},{"lineNumber":175,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":176,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (WrongTimeFormatException exception) {","lastModifiedDate":"2024-01-31"},{"lineNumber":177,"author":{"gitId":"ChrysanthemumT"},"content":" throw exception;","lastModifiedDate":"2024-01-31"},{"lineNumber":178,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":179,"author":{"gitId":"ChrysanthemumT"},"content":" // Processes To DateTime","lastModifiedDate":"2024-01-31"},{"lineNumber":180,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":181,"author":{"gitId":"ChrysanthemumT"},"content":" checkTimeFormat(this.input.substring(to + 3).trim());","lastModifiedDate":"2024-01-31"},{"lineNumber":182,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":183,"author":{"gitId":"ChrysanthemumT"},"content":" String[] temporaryArray \u003d this.input.substring(to + 3)","lastModifiedDate":"2024-01-31"},{"lineNumber":184,"author":{"gitId":"ChrysanthemumT"},"content":" .trim().split(\"[\\\\s/\\\\-]+\");","lastModifiedDate":"2024-01-31"},{"lineNumber":185,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":186,"author":{"gitId":"ChrysanthemumT"},"content":" int lenTemp \u003d temporaryArray.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":187,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":188,"author":{"gitId":"ChrysanthemumT"},"content":" for (int i\u003d0; i\u003ctemporaryArray.length/2; i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":189,"author":{"gitId":"ChrysanthemumT"},"content":" String temp \u003d temporaryArray[i];","lastModifiedDate":"2024-01-31"},{"lineNumber":190,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[i] \u003d temporaryArray[lenTemp - 1 - i];","lastModifiedDate":"2024-01-31"},{"lineNumber":191,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[lenTemp - 1 - i] \u003d temp;","lastModifiedDate":"2024-01-31"},{"lineNumber":192,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":193,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":194,"author":{"gitId":"ChrysanthemumT"},"content":" if (temporaryArray[lenTemp - 1].length() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":195,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[lenTemp - 1] \u003d \"0\" + temporaryArray[lenTemp - 1];","lastModifiedDate":"2024-01-31"},{"lineNumber":196,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":197,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":198,"author":{"gitId":"ChrysanthemumT"},"content":" if (temporaryArray[lenTemp - 2].length() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":199,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[lenTemp - 2] \u003d \"0\" + temporaryArray[lenTemp - 2];","lastModifiedDate":"2024-01-31"},{"lineNumber":200,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":201,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":202,"author":{"gitId":"ChrysanthemumT"},"content":" toDateTime \u003d String.join(\"-\", temporaryArray);","lastModifiedDate":"2024-01-31"},{"lineNumber":203,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":204,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (WrongTimeFormatException exception) {","lastModifiedDate":"2024-01-31"},{"lineNumber":205,"author":{"gitId":"ChrysanthemumT"},"content":" throw exception;","lastModifiedDate":"2024-01-31"},{"lineNumber":206,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":207,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":208,"author":{"gitId":"ChrysanthemumT"},"content":" task \u003d new Events(this.input, this.input.substring(space + 1, from).trim(), fromDateTime, toDateTime);","lastModifiedDate":"2024-02-01"},{"lineNumber":209,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d new Token(Command.EVENT, task);","lastModifiedDate":"2024-01-31"},{"lineNumber":210,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":211,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":212,"author":{"gitId":"ChrysanthemumT"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-31"},{"lineNumber":213,"author":{"gitId":"ChrysanthemumT"},"content":" flag \u003d Arrays.asList(split).indexOf(\"/by\");","lastModifiedDate":"2024-01-31"},{"lineNumber":214,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":215,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length \u003c 4) {","lastModifiedDate":"2024-01-31"},{"lineNumber":216,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionDeadlines(\"deadline\");","lastModifiedDate":"2024-01-31"},{"lineNumber":217,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (flag \u003c 2 || flag \u003d\u003d split.length -1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":218,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionDeadlines(\"deadline\");","lastModifiedDate":"2024-01-31"},{"lineNumber":219,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":220,"author":{"gitId":"ChrysanthemumT"},"content":" int space \u003d this.input.indexOf(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":221,"author":{"gitId":"ChrysanthemumT"},"content":" int by \u003d this.input.indexOf(\"/by\");","lastModifiedDate":"2024-01-31"},{"lineNumber":222,"author":{"gitId":"ChrysanthemumT"},"content":" String byDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":223,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":224,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":225,"author":{"gitId":"ChrysanthemumT"},"content":" checkTimeFormat(this.input.substring(by + 3).trim());","lastModifiedDate":"2024-01-31"},{"lineNumber":226,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":227,"author":{"gitId":"ChrysanthemumT"},"content":" String[] temporaryArray \u003d this.input.substring(by + 3)","lastModifiedDate":"2024-01-31"},{"lineNumber":228,"author":{"gitId":"ChrysanthemumT"},"content":" .trim().split(\"[\\\\s/\\\\-]+\");","lastModifiedDate":"2024-01-31"},{"lineNumber":229,"author":{"gitId":"ChrysanthemumT"},"content":" int lenTemp \u003d temporaryArray.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":230,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":231,"author":{"gitId":"ChrysanthemumT"},"content":" for (int i \u003d 0; i \u003c temporaryArray.length / 2; i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":232,"author":{"gitId":"ChrysanthemumT"},"content":" String temp \u003d temporaryArray[i];","lastModifiedDate":"2024-01-31"},{"lineNumber":233,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[i] \u003d temporaryArray[lenTemp - 1 - i];","lastModifiedDate":"2024-01-31"},{"lineNumber":234,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[lenTemp - 1 - i] \u003d temp;","lastModifiedDate":"2024-01-31"},{"lineNumber":235,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":236,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":237,"author":{"gitId":"ChrysanthemumT"},"content":" if (temporaryArray[lenTemp - 1].length() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":238,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[lenTemp - 1] \u003d \"0\" + temporaryArray[lenTemp - 1];","lastModifiedDate":"2024-01-31"},{"lineNumber":239,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":240,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":241,"author":{"gitId":"ChrysanthemumT"},"content":" if (temporaryArray[lenTemp - 2].length() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":242,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[lenTemp - 2] \u003d \"0\" + temporaryArray[lenTemp - 2];","lastModifiedDate":"2024-01-31"},{"lineNumber":243,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":244,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":245,"author":{"gitId":"ChrysanthemumT"},"content":" byDateTime \u003d String.join(\"-\", temporaryArray);","lastModifiedDate":"2024-01-31"},{"lineNumber":246,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (WrongTimeFormatException exception) {","lastModifiedDate":"2024-01-31"},{"lineNumber":247,"author":{"gitId":"ChrysanthemumT"},"content":" throw exception;","lastModifiedDate":"2024-01-31"},{"lineNumber":248,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":249,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":250,"author":{"gitId":"ChrysanthemumT"},"content":" task \u003d new Deadlines(this.input, this.input.substring(space + 1, by).trim(), byDateTime);","lastModifiedDate":"2024-02-01"},{"lineNumber":251,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d new Token(Command.DEADLINE, task);","lastModifiedDate":"2024-01-31"},{"lineNumber":252,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":253,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":254,"author":{"gitId":"ChrysanthemumT"},"content":" case \"save\":","lastModifiedDate":"2024-02-01"},{"lineNumber":255,"author":{"gitId":"ChrysanthemumT"},"content":" boolean marked \u003d split[1].equals(\"1\") ? true : false;","lastModifiedDate":"2024-02-01"},{"lineNumber":256,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":257,"author":{"gitId":"ChrysanthemumT"},"content":" this.input \u003d String.join(\" \", Arrays.copyOfRange(split, 2, split.length));","lastModifiedDate":"2024-02-01"},{"lineNumber":258,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":259,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d this.parse();","lastModifiedDate":"2024-02-01"},{"lineNumber":260,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":261,"author":{"gitId":"ChrysanthemumT"},"content":" if (marked) {","lastModifiedDate":"2024-02-01"},{"lineNumber":262,"author":{"gitId":"ChrysanthemumT"},"content":" token.getTask().mark();","lastModifiedDate":"2024-02-01"},{"lineNumber":263,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":264,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":265,"author":{"gitId":"ChrysanthemumT"},"content":" token.setAsSaved();","lastModifiedDate":"2024-02-01"},{"lineNumber":266,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":267,"author":{"gitId":"ChrysanthemumT"},"content":" default:","lastModifiedDate":"2024-01-31"},{"lineNumber":268,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-31"},{"lineNumber":269,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":270,"author":{"gitId":"ChrysanthemumT"},"content":" return token;","lastModifiedDate":"2024-01-31"},{"lineNumber":271,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":272,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":273,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":274,"author":{"gitId":"ChrysanthemumT"},"content":" * Checks the format of the provided time string and throws an exception if the format is incorrect.","lastModifiedDate":"2024-02-01"},{"lineNumber":275,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":276,"author":{"gitId":"ChrysanthemumT"},"content":" * @param string The time string to be checked.","lastModifiedDate":"2024-02-01"},{"lineNumber":277,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws WrongTimeFormatException If the time format is incorrect or missing.","lastModifiedDate":"2024-02-01"},{"lineNumber":278,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":279,"author":{"gitId":"ChrysanthemumT"},"content":" private void checkTimeFormat(String string) throws WrongTimeFormatException {","lastModifiedDate":"2024-01-31"},{"lineNumber":280,"author":{"gitId":"ChrysanthemumT"},"content":" String[] splitString \u003d string.split(\"[\\\\s/\\\\-]+\");","lastModifiedDate":"2024-01-31"},{"lineNumber":281,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":282,"author":{"gitId":"ChrysanthemumT"},"content":" if (splitString.length \u003c 3) {","lastModifiedDate":"2024-01-31"},{"lineNumber":283,"author":{"gitId":"ChrysanthemumT"},"content":" throw new WrongTimeFormatException(\"wrong time buddy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":284,"author":{"gitId":"ChrysanthemumT"},"content":" } if (splitString.length \u003e 5) {","lastModifiedDate":"2024-01-31"},{"lineNumber":285,"author":{"gitId":"ChrysanthemumT"},"content":" throw new WrongTimeFormatException(\"Too many inputs\");","lastModifiedDate":"2024-01-31"},{"lineNumber":286,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":287,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":288,"author":{"gitId":"ChrysanthemumT"},"content":" int year \u003d Integer.parseInt(splitString[2]);","lastModifiedDate":"2024-01-31"},{"lineNumber":289,"author":{"gitId":"ChrysanthemumT"},"content":" int month \u003d Integer.parseInt(splitString[1]);","lastModifiedDate":"2024-01-31"},{"lineNumber":290,"author":{"gitId":"ChrysanthemumT"},"content":" int day \u003d Integer.parseInt(splitString[0]);","lastModifiedDate":"2024-01-31"},{"lineNumber":291,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":292,"author":{"gitId":"ChrysanthemumT"},"content":" checkRealDate(year, month, day);","lastModifiedDate":"2024-01-31"},{"lineNumber":293,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":294,"author":{"gitId":"ChrysanthemumT"},"content":" throw new WrongTimeFormatException(\"Use numerals for date\");","lastModifiedDate":"2024-01-31"},{"lineNumber":295,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (WrongTimeFormatException exception) {","lastModifiedDate":"2024-01-31"},{"lineNumber":296,"author":{"gitId":"ChrysanthemumT"},"content":" throw exception;","lastModifiedDate":"2024-01-31"},{"lineNumber":297,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":298,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":299,"author":{"gitId":"ChrysanthemumT"},"content":" if (splitString.length \u003e 3) {","lastModifiedDate":"2024-01-31"},{"lineNumber":300,"author":{"gitId":"ChrysanthemumT"},"content":" String twelveHourFormat \u003d \"\";","lastModifiedDate":"2024-01-31"},{"lineNumber":301,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":302,"author":{"gitId":"ChrysanthemumT"},"content":" if (splitString.length \u003e 4) {","lastModifiedDate":"2024-01-31"},{"lineNumber":303,"author":{"gitId":"ChrysanthemumT"},"content":" twelveHourFormat \u003d splitString[4];","lastModifiedDate":"2024-01-31"},{"lineNumber":304,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":305,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":306,"author":{"gitId":"ChrysanthemumT"},"content":" checkRealTime(splitString[3], twelveHourFormat);","lastModifiedDate":"2024-01-31"},{"lineNumber":307,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":308,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":309,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":310,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":311,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":312,"author":{"gitId":"ChrysanthemumT"},"content":" * Checks if the provided year, month, and day form a valid date and throws an exception if not.","lastModifiedDate":"2024-02-01"},{"lineNumber":313,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":314,"author":{"gitId":"ChrysanthemumT"},"content":" * @param year The year.","lastModifiedDate":"2024-02-01"},{"lineNumber":315,"author":{"gitId":"ChrysanthemumT"},"content":" * @param month The month.","lastModifiedDate":"2024-02-01"},{"lineNumber":316,"author":{"gitId":"ChrysanthemumT"},"content":" * @param day The day.","lastModifiedDate":"2024-02-01"},{"lineNumber":317,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws WrongTimeFormatException If the date is invalid.","lastModifiedDate":"2024-02-01"},{"lineNumber":318,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":319,"author":{"gitId":"ChrysanthemumT"},"content":" private void checkRealDate(int year , int month, int day) throws WrongTimeFormatException {","lastModifiedDate":"2024-01-31"},{"lineNumber":320,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":321,"author":{"gitId":"ChrysanthemumT"},"content":" LocalDate dateToBeChecked \u003d LocalDate.of(year, month, day);","lastModifiedDate":"2024-01-31"},{"lineNumber":322,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":323,"author":{"gitId":"ChrysanthemumT"},"content":" if (dateToBeChecked.isBefore(LocalDate.now())) {","lastModifiedDate":"2024-01-31"},{"lineNumber":324,"author":{"gitId":"ChrysanthemumT"},"content":" throw new WrongTimeFormatException(\"Can\u0027t go back in time buddy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":325,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":326,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":327,"author":{"gitId":"ChrysanthemumT"},"content":" throw new WrongTimeFormatException(\"Date and time are impossible buddy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":328,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (WrongTimeFormatException exception) {","lastModifiedDate":"2024-01-31"},{"lineNumber":329,"author":{"gitId":"ChrysanthemumT"},"content":" throw exception;","lastModifiedDate":"2024-01-31"},{"lineNumber":330,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":331,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":332,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":333,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":334,"author":{"gitId":"ChrysanthemumT"},"content":" * Checks if the provided time and twelve-hour format (AM/PM) form a valid time and throws an exception if not.","lastModifiedDate":"2024-02-01"},{"lineNumber":335,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":336,"author":{"gitId":"ChrysanthemumT"},"content":" * @param time The time string.","lastModifiedDate":"2024-02-01"},{"lineNumber":337,"author":{"gitId":"ChrysanthemumT"},"content":" * @param twelveHourFormat The twelve-hour format (AM/PM).","lastModifiedDate":"2024-02-01"},{"lineNumber":338,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws WrongTimeFormatException If the time is invalid.","lastModifiedDate":"2024-02-01"},{"lineNumber":339,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":340,"author":{"gitId":"ChrysanthemumT"},"content":" private void checkRealTime(String time, String twelveHourFormat) throws WrongTimeFormatException {","lastModifiedDate":"2024-01-31"},{"lineNumber":341,"author":{"gitId":"ChrysanthemumT"},"content":" if (twelveHourFormat.equals(\"\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":342,"author":{"gitId":"ChrysanthemumT"},"content":" if (time.length() \u003c 5 \u0026\u0026 time.indexOf(\":\") !\u003d -1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":343,"author":{"gitId":"ChrysanthemumT"},"content":" time \u003d \"0\" + time;","lastModifiedDate":"2024-01-31"},{"lineNumber":344,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":345,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":346,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":347,"author":{"gitId":"ChrysanthemumT"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"[HH:mm]\" + \"[HHmm]\" + \"[Hmm]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":348,"author":{"gitId":"ChrysanthemumT"},"content":" LocalTime.parse(time, formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":349,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (DateTimeException exception) {","lastModifiedDate":"2024-01-31"},{"lineNumber":350,"author":{"gitId":"ChrysanthemumT"},"content":" throw new WrongTimeFormatException(\"Date and time are impossible buddy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":351,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":352,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (twelveHourFormat.equals(\"PM\") || twelveHourFormat.equals(\"pm\") || twelveHourFormat.equals(\"Pm\")","lastModifiedDate":"2024-01-31"},{"lineNumber":353,"author":{"gitId":"ChrysanthemumT"},"content":" || twelveHourFormat.equals(\"pM\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":354,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":355,"author":{"gitId":"ChrysanthemumT"},"content":" LocalTime.parse(time + \" pm\", DateTimeFormatter.ofPattern(\"h:mm a\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":356,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (DateTimeException exception) {","lastModifiedDate":"2024-01-31"},{"lineNumber":357,"author":{"gitId":"ChrysanthemumT"},"content":" throw new WrongTimeFormatException(\"Date and time are impossible buddy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":358,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":359,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":360,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":361,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":362,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ChrysanthemumT":362}},{"path":"src/main/java/duke/parser/Token.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.parser;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.storage.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" * The Token class represents a parsed command along with associated data.","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" * It is used to convey information between the Parser and other components of the Duke application.","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"public class Token {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" private Command cmd;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" private Task task;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" private int selectedItem;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" private String searchKey;","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a Token object with the specified command.","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" * @param cmd The command associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" public Token(Command cmd) {","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" this.cmd \u003d cmd;","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a Token object with the specified command and task.","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" * @param cmd The command associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" * @param task The task associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" public Token(Command cmd, Task task) {","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" this.cmd \u003d cmd;","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a Token object with the specified command and selected item index.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" * @param cmd The command associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" * @param selectedItem The index of the selected item.","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" public Token(Command cmd, int selectedItem) {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" this.cmd \u003d cmd;","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" this.selectedItem \u003d selectedItem;","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" * Gets the command associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The command associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" public Command getCmd() {","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" return this.cmd;","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" * Gets the index of the selected item associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The index of the selected item.","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" public int getSelectedItem() {","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" return this.selectedItem;","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" * Gets the task associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The task associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" public Task getTask() {","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" return this.task;","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" * Sets the command of the token as \"SAVED.\"","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" * This is used to indicate that the associated task has been successfully saved.","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":" public void setAsSaved() {","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":" this.cmd \u003d Command.SAVED;","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":" * Sets the search key associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"ChrysanthemumT"},"content":" * @param string The search key to be set.","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":" public void setSearchKey(String string) {","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"ChrysanthemumT"},"content":" this.searchKey \u003d string;","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":" * Gets the search key associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The search key associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"ChrysanthemumT"},"content":" public String getSearchKey() {","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"ChrysanthemumT"},"content":" return this.searchKey;","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":99,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":100,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ChrysanthemumT":100}},{"path":"src/main/java/duke/storage/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Optional;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" * The Deadlines class represents a deadline task in the Duke task manager, which is a subtype of the Task class.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" * It inherits properties and methods from the Task class and provides a specific implementation for deadline tasks with date and time details.","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" protected LocalDate by;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" protected LocalTime byTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a Deadlines object with the specified original command, description, and date-time details.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" * @param originalCommand The original command used to create the deadline task.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" * @param dateTimeBy The deadline date and time in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" public Deadlines(String originalCommand, String description, String dateTimeBy) {","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" super(originalCommand, description);","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" String[] splitBy \u003d dateTimeBy.split(\"-\");","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" int lenBy \u003d splitBy.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" if (lenBy \u003d\u003d 3) {","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" this.by \u003d LocalDate.parse(String.join(\"-\", splitBy));","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (lenBy \u003d\u003d 4) {","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" this.by \u003d LocalDate.parse(String.join(\"-\", Arrays.copyOfRange(splitBy,","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" 1, lenBy)));","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" if (splitBy[0].length() \u003c 5 \u0026\u0026 splitBy[0].indexOf(\":\") !\u003d -1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" splitBy[0] \u003d \"0\" + splitBy[0];","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"[HH:mm]\" + \"[HHmm]\" + \"[Hmm]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" this.byTime \u003d LocalTime.parse(splitBy[0], formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (lenBy \u003d\u003d 5) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" this.by \u003d LocalDate.parse(String.join(\"-\", Arrays.copyOfRange(splitBy,","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" 2, lenBy)));","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" this.byTime \u003d LocalTime.parse(splitBy[1] + \" \" + splitBy[0], DateTimeFormatter.ofPattern(\"h:mm a\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns a string representation of the deadline task, including its specific type identifier, the result of the superclass\u0027s toString method, and date-time details.","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A string representation of the deadline task.","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\" h:mm a\");","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" return \"[D]\" + super.toString() + \" (by: \" + dateFormatter.format(this.by) +","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" Optional.ofNullable(byTime).map(timeFormatter::format).orElse(\"\") + \")\";","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ChrysanthemumT":65}},{"path":"src/main/java/duke/storage/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Optional;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" * The Events class represents an event task in the Duke task manager, which is a subtype of the Task class.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" * It inherits properties and methods from the Task class and provides a specific implementation for event tasks with date and time details.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":"public class Events extends Task{","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" protected LocalDate from;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" protected LocalTime fromTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" protected LocalDate to;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" protected LocalTime toTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs an Events object with the specified original command, description, and date-time details.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" * @param originalCommand The original command used to create the event task.","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" * @param description The description of the event task.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" * @param dateTimeFrom The starting date and time of the event in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" * @param dateTimeTo The ending date and time of the event in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" public Events(String originalCommand, String description, String dateTimeFrom, String dateTimeTo) {","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" super(originalCommand, description);","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" String[] splitFrom \u003d dateTimeFrom.split(\"-\");","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" String[] splitTo \u003d dateTimeTo.split(\"-\");","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" int lenFrom \u003d splitFrom.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" int lenTo \u003d splitTo.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" if (lenFrom \u003d\u003d 3) {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" this.from \u003d LocalDate.parse(String.join(\"-\", splitFrom));","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (lenFrom \u003d\u003d 4) {","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" this.from \u003d LocalDate.parse(String.join(\"-\", Arrays.copyOfRange(splitFrom,","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" 1, lenFrom)));","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" if (splitFrom[0].length() \u003c 5 \u0026\u0026 splitTo[0].indexOf(\":\") !\u003d -1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" splitFrom[0] \u003d \"0\" + splitFrom[0];","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"[HH:mm]\" + \"[HHmm]\" + \"[Hmm]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" this.toTime \u003d LocalTime.parse(splitFrom[0], formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (lenFrom \u003d\u003d 5) {","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" this.from \u003d LocalDate.parse(String.join(\"-\", Arrays.copyOfRange(splitFrom,","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" 2, lenFrom)));","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" this.fromTime \u003d LocalTime.parse(splitFrom[1] + \" \" + splitFrom[0], DateTimeFormatter.ofPattern(\"h:mm a\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" if (lenTo \u003d\u003d 3) {","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" this.to \u003d LocalDate.parse(String.join(\"-\", splitTo));","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (lenTo \u003d\u003d 4) {","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" this.to \u003d LocalDate.parse(String.join(\"-\", Arrays.copyOfRange(splitTo,","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" 1, lenTo)));","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" if (splitTo[0].length() \u003c 5 \u0026\u0026 splitTo[0].indexOf(\":\") !\u003d -1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" splitTo[0] \u003d \"0\" + splitTo[0];","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"[HH:mm]\" + \"[HHmm]\" + \"[Hmm]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" this.toTime \u003d LocalTime.parse(splitTo[0], formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (lenTo \u003d\u003d 5) {","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" this.to \u003d LocalDate.parse(String.join(\"-\", Arrays.copyOfRange(splitTo,","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" 2, lenTo)));","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" this.toTime \u003d LocalTime.parse(splitFrom[1] + \" \" + splitFrom[0],DateTimeFormatter.ofPattern(\"h:mm a\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns a string representation of the event task, including its specific type identifier, the result of the superclass\u0027s toString method, and date-time details.","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A string representation of the event task.","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":" DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\" h:mm a\");","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"ChrysanthemumT"},"content":" DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":" return \"[E]\" + super.toString() + \" (from: \" + dateFormatter.format(this.from) +","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":" Optional.ofNullable(fromTime).map(timeFormatter::format).orElse(\"\") +","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"ChrysanthemumT"},"content":" \" to: \" + dateFormatter.format(this.to) +","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"ChrysanthemumT"},"content":" Optional.ofNullable(toTime).map(timeFormatter::format).orElse(\"\") + \")\";","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ChrysanthemumT":91}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.parser.Token;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.ui.UI;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"import java.io.File;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" * The Storage class is responsible for loading tasks from and saving tasks to a file.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" * It interacts with the TaskList, Parser, and UI classes to manage the data persistence of tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":"public class Storage {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" * Initializes the storage by loading tasks from a save file into the provided TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" * @param taskList The TaskList object to be initialized with tasks from the save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" public static void start(TaskList taskList) {","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" File file \u003d new File(\"./src/main/java/duke/storage/savefile.txt\");","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" parser.feed(scanner.nextLine());","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" Token output \u003d null;","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" output \u003d parser.parse();","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" taskList.loadFromSave(output.getTask());","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" UI.error(e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" UI.error(\"No save file\");","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" * Saves the provided input string to a save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" * @param input The input string representing the tasks to be saved.","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" public static void save(String input) {","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" FileWriter fw \u003d new FileWriter(\"./src/main/java/duke/storage/savefile.txt\");","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" fw.write(input);","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" fw.close();","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" UI.error(\"Missing save file\");","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ChrysanthemumT":63}},{"path":"src/main/java/duke/storage/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * The Task class represents a task in the Duke task manager.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * It stores information such as the task\u0027s description, completion status, and the original command used to create the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" protected String originalCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a Task object with the specified original command and description.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" * @param originalCommand The original command used to create the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" public Task(String originalCommand, String description) {","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" this.originalCommand \u003d originalCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns the status icon of the task (\u0027X\u0027 if done, \u0027 \u0027 if not done).","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The status icon of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" * Marks the task as done.","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" public void mark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" * Marks the task as not done.","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" public void unMark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" * Gets the original command used to create the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The original command.","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" public String getOriginalCommand() {","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" return this.originalCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" * Gets the description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" public String getDescription() {","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" return this.description;","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns a string representation of the task, including its status icon and description.","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A string representation of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" return String.format(\"[%s] \", getStatusIcon()) + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ChrysanthemumT":76}},{"path":"src/main/java/duke/storage/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" * The TaskList class represents a list of tasks in the Duke task manager.","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" * It manages operations such as adding, marking, unmarking, and removing tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" * The class also provides methods for obtaining the length of the task list and generating a formatted string representation of the tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"public class TaskList {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" private static final String lines \u003d \" ____________________________________________________________\";","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" private final ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a TaskList object with an empty list of tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" public TaskList() {","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" * Adds a task to the task list and saves the updated list to a file.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" public void add(Task task) {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" saveToFile();","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" * Loads a task from a save file and adds it to the task list.","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" * @param task The task to be loaded and added.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" public void loadFromSave(Task task) {","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" * Marks a task at the specified index as done and saves the updated list to a file.","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" * @param number The index of the task to be marked.","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" public void markTask(int number) {","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" this.tasks.get(number).mark();","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" \" + this.tasks.get(number).toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" saveToFile();","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" * Marks a task at the specified index as not done and saves the updated list to a file.","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" * @param number The index of the task to be unmarked.","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" public void unMarkTask(int number) {","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" this.tasks.get(number).unMark();","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" \" + this.tasks.get(number).toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" saveToFile();","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" * Removes a task at the specified index and saves the updated list to a file.","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" * @param number The index of the task to be removed.","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" public void remove(int number) {","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" \" + this.tasks.get(number).toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" this.tasks.remove(number);","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" saveToFile();","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" * Searches for tasks containing a specified keyword in their descriptions.","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" * @param key The keyword to search for in task descriptions.","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted string representation of tasks that match the search criteria.","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":" public String find(String key) {","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":" result.append(lines).append(\"\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":" for (int i \u003d 1; i \u003c\u003d tasks.size(); i++) {","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":" if (this.tasks.get(i-1).getDescription().toLowerCase()","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"ChrysanthemumT"},"content":" .contains(key.toLowerCase())) {","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"ChrysanthemumT"},"content":" result.append(String.format(\" %d.\", i)).append(this.tasks.get(i - 1).toString()).append(\"\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"ChrysanthemumT"},"content":" result.append(lines);","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"ChrysanthemumT"},"content":" return result.toString();","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns the number of tasks in the task list.","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The number of tasks in the task list.","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"ChrysanthemumT"},"content":" public int taskLength() {","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"ChrysanthemumT"},"content":" return this.tasks.size();","lastModifiedDate":"2024-02-01"},{"lineNumber":99,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":100,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":101,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":102,"author":{"gitId":"ChrysanthemumT"},"content":" * Generates a formatted string representation of the tasks in the task list.","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted string representation of the tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":107,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":108,"author":{"gitId":"ChrysanthemumT"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2024-02-01"},{"lineNumber":109,"author":{"gitId":"ChrysanthemumT"},"content":" result.append(lines).append(\"\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":110,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":111,"author":{"gitId":"ChrysanthemumT"},"content":" for (int i \u003d 1; i \u003c\u003d tasks.size(); i++) {","lastModifiedDate":"2024-02-01"},{"lineNumber":112,"author":{"gitId":"ChrysanthemumT"},"content":" result.append(String.format(\" %d.\",i)).append(this.tasks.get(i-1).toString()).append(\"\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":113,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":114,"author":{"gitId":"ChrysanthemumT"},"content":" result.append(lines);","lastModifiedDate":"2024-02-01"},{"lineNumber":115,"author":{"gitId":"ChrysanthemumT"},"content":" return result.toString();","lastModifiedDate":"2024-02-01"},{"lineNumber":116,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":117,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":118,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":119,"author":{"gitId":"ChrysanthemumT"},"content":" * Saves the current list of tasks to a file.","lastModifiedDate":"2024-02-01"},{"lineNumber":120,"author":{"gitId":"ChrysanthemumT"},"content":" * The format of the save file is \"save [doneStatus] [originalCommand]\" for each task.","lastModifiedDate":"2024-02-01"},{"lineNumber":121,"author":{"gitId":"ChrysanthemumT"},"content":" * Each task is represented as a line in the file.","lastModifiedDate":"2024-02-01"},{"lineNumber":122,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":123,"author":{"gitId":"ChrysanthemumT"},"content":" private void saveToFile() {","lastModifiedDate":"2024-02-01"},{"lineNumber":124,"author":{"gitId":"ChrysanthemumT"},"content":" StringBuilder temporary \u003d new StringBuilder();","lastModifiedDate":"2024-02-01"},{"lineNumber":125,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":126,"author":{"gitId":"ChrysanthemumT"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-02-01"},{"lineNumber":127,"author":{"gitId":"ChrysanthemumT"},"content":" temporary.append(\"save \").append(task.isDone?\"1 \":\"0 \").append(task.getOriginalCommand() + \"\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":128,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":129,"author":{"gitId":"ChrysanthemumT"},"content":" Storage.save(temporary.toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":130,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":131,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":132,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"ChrysanthemumT":132}},{"path":"src/main/java/duke/storage/Todos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * The Todos class represents a todo task in the Duke task manager, which is a subtype of the Task class.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * It inherits properties and methods from the Task class and provides a specific implementation for todo tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class Todos extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a Todos object with the specified original command and description.","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" * @param originalCommand The original command used to create the todo task.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" * @param description The description of the todo task.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public Todos(String originalCommand, String description) {","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" super(originalCommand, description);","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns a string representation of the todo task, including its specific type identifier and the result of the superclass\u0027s toString method.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A string representation of the todo task.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":27}},{"path":"src/main/java/duke/storage/savefile.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"save 1 todo hw1","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"save 0 todo hw1","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"save 0 todo hw2","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"save 0 todo hw3","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"save 0 deadline hw44 /by 2 2 2044 1800","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"ChrysanthemumT":5}},{"path":"src/main/java/duke/ui/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.ui;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.storage.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.storage.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.dukeException.*;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" * The UI class handles interactions with the user through the command-line interface.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" * It displays greetings, goodbyes, and processes user input to perform various tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"public class UI {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" private static final String lines \u003d \" ____________________________________________________________\";","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" private static final String name \u003d \"Wang\";","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a UI object and initializes the associated TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" public UI() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" Storage.start(taskList);","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" * Displays a greeting message when the Duke program starts.","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" public static void greeting() {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.printf(\" Hello! I\u0027m %s\\n\", name);","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" * Displays a goodbye message when the Duke program ends.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" public static void goodbye() {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" * Adds a task to the TaskList and displays a confirmation message.","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" public void addItem(Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" this.taskList.add(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" \" + \"Got it. I\u0027ve added this task:\\n\" + \" \" + task + \"\\n\" + \"\" +","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" String.format(\" Now you have %d tasks in the list.\", this.taskList.taskLength()));","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" * Marks a task as done and displays a confirmation message.","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" * @param input The index of the task to be marked as done.","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws ListOutofBoundsException If the provided index is out of bounds.","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" public void markTaskUI(int input) throws ListOutofBoundsException{","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" if (input \u003c0 || input \u003e this.taskList.taskLength() - 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" throw new ListOutofBoundsException(String.format(\"%d\", this.taskList.taskLength()));","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" this.taskList.markTask(input);","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" * Marks a task as not done and displays a confirmation message.","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":" * @param input The index of the task to be marked as not done.","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws ListOutofBoundsException If the provided index is out of bounds.","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":" public void unMarkTask(int input) throws ListOutofBoundsException{","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":" if (input \u003c 0 || input \u003e this.taskList.taskLength() - 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":" throw new ListOutofBoundsException(String.format(\"%d\", this.taskList.taskLength()));","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":" this.taskList.unMarkTask(input);","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":" * Removes a task from the TaskList and displays a confirmation message.","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"ChrysanthemumT"},"content":" * @param input The index of the task to be removed.","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws ListOutofBoundsException If the provided index is out of bounds.","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"ChrysanthemumT"},"content":" public void removeTask(int input) throws ListOutofBoundsException {","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"ChrysanthemumT"},"content":" if (input \u003c 0 || input \u003e this.taskList.taskLength() - 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":100,"author":{"gitId":"ChrysanthemumT"},"content":" throw new ListOutofBoundsException(String.format(\"%d\", this.taskList.taskLength()));","lastModifiedDate":"2024-02-01"},{"lineNumber":101,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"ChrysanthemumT"},"content":" this.taskList.remove(input);","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(String.format(\" Now you have %d tasks in the list.\",this.taskList.taskLength()));","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":110,"author":{"gitId":"ChrysanthemumT"},"content":" * Prints the tasks matching the specified key using the taskList\u0027s find method.","lastModifiedDate":"2024-02-01"},{"lineNumber":111,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":112,"author":{"gitId":"ChrysanthemumT"},"content":" * @param key The keyword or item to search for in the tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":113,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":114,"author":{"gitId":"ChrysanthemumT"},"content":" public void findTaskUI(String key) {","lastModifiedDate":"2024-02-01"},{"lineNumber":115,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(this.taskList.find(key));","lastModifiedDate":"2024-02-01"},{"lineNumber":116,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":117,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":118,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":119,"author":{"gitId":"ChrysanthemumT"},"content":" * Displays the list of tasks in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":120,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":121,"author":{"gitId":"ChrysanthemumT"},"content":" public void listItems() {","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(taskList);","lastModifiedDate":"2024-02-01"},{"lineNumber":123,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":126,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":127,"author":{"gitId":"ChrysanthemumT"},"content":" * Displays an error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":128,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":129,"author":{"gitId":"ChrysanthemumT"},"content":" * @param error The error message to be displayed.","lastModifiedDate":"2024-02-01"},{"lineNumber":130,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":131,"author":{"gitId":"ChrysanthemumT"},"content":" public static void error(String error) {","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(error);","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ChrysanthemumT":138}},{"path":"src/test/java/duke/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.parser;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"public class ParserTest {","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" @Test","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" public void parse_success() {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" String sampleInput \u003d \"todo hw\";","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" parser.feed(sampleInput);","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" Token output \u003d parser.parse();","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" assertEquals(output.getCmd(), Command.TODO);","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" assertEquals(output.getSelectedItem(), 0);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" assertEquals(output.getTask().getOriginalCommand(), sampleInput);","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" assertEquals(output.getTask().toString(), \"[T][ ] hw\");","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\"fix your tests!!!!\");","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"ChrysanthemumT":26}},{"path":"src/test/java/duke/storage/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"public class TaskTest {","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" @Test","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" public void getStatusIcon_test() {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" String sampleInput \u003d \"todo gym\";","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" Task sample \u003d new Task(sampleInput, \"gym\");","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" assertEquals(\"todo gym\", sample.getOriginalCommand());","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" assertEquals(\" \", sample.getStatusIcon());","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" sample.mark();","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" assertEquals(\"X\", sample.getStatusIcon());","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"ChrysanthemumT":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"hi","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"deadline cs2101 by/ friday","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"event midterms /from idk /to idk","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"todo cs2103t","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"list","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":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":"ChrysanthemumT"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"ChrysanthemumT":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"# duke.Duke project template","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"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-02-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"ChrysanthemumT":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":"ChrysanthemumT"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-07"},{"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":"ChrysanthemumT"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":"mainClassName \u003d \u0027duke.Main\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" archiveFileName \u003d \"duke.jar\"","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":"checkstyle {","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" toolVersion \u003d \"10.4\"","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"ChrysanthemumT":9,"-":41}},{"path":"data.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":" ____________________________________________________________","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":" 1.[T][ ] help","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":" ____________________________________________________________","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"ChrysanthemumT":3}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.exceptions.ListOutofBoundsException;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.exceptions.MissingArgumentsException;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.exceptions.WrongTimeFormatException;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.parser.Token;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.ui.UI;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" * The Duke program is a simple task manager that allows users to manage their tasks through a command-line interface.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" * Runs the Duke program. Allowing users to manage their tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" * @param args The command-line arguments (unused in this program).","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" UI ui \u003d new UI();","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" UI.greeting();","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" boolean isTrue \u003d true;","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" while (isTrue) {","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" String input \u003d scanner.nextLine().trim();","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" parser.feed(input);","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" Token output;","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" output \u003d parser.parse();","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" UI.error(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" continue;","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (MissingArgumentsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" UI.error(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" continue;","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (WrongTimeFormatException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" UI.error(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" continue;","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" switch (output.getCmd()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" case BYE:","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" UI.goodbye();","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" isTrue \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" case LIST:","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" ui.listItems();","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" case UNMARK:","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" ui.unMarkTask(output.getSelectedItem() - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (ListOutofBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" UI.error(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" case MARK:","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" ui.markTaskUI(output.getSelectedItem() - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (ListOutofBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" UI.error(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" case FIND:","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" ui.findTaskUI(output.getSearchKey());","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" case TODO:","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" // Fallthrough","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" // Fallthrough","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" case EVENT:","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" ui.addItem(output.getTask());","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":" case DELETE:","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":" ui.removeTask(output.getSelectedItem() - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (ListOutofBoundsException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":" UI.error(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"ChrysanthemumT"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ChrysanthemumT":85,"-":4}},{"path":"src/main/java/duke/exceptions/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * Exception class representing an error when an invalid command is entered.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * This exception is thrown when the user inputs a command that is not recognized.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class InvalidCommandException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs an InvalidCommandException with the specified detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" * @param message The detail message indicating that an invalid command was entered.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public InvalidCommandException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" * Overrides the getMessage() method to provide a formatted error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted error message indicating that an invalid command was entered.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" return \" \" + super.getMessage()","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" + \"\\n You have entered an invalid command:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" + \" Try todo, event, deadline, list , delete , mark {index},\\n or unmark {index} instead.\";","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":29}},{"path":"src/main/java/duke/exceptions/ListOutofBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * Exception class representing an error when trying to access an element at an invalid index in a list.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * This exception is thrown when attempting to access an element at an index that is out of bounds.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class ListOutofBoundsException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a ListOutofBoundsException with the specified detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" * @param message The detail message indicating the invalid list index.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public ListOutofBoundsException(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" * Overrides the getMessage() method to provide a formatted error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted error message indicating that the list index is out of bounds.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" return \" ListOutofBoundsException\\n You have entered an invalid list index:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" + \" List size:\" + super.getMessage();","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":28}},{"path":"src/main/java/duke/exceptions/MissingArgumentsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * Exception class representing a generic error related to missing arguments in a command.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * This exception is thrown when a command is missing the required parameters or arguments.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a MissingArgumentsException with the specified detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" * @param message The detail message indicating the missing arguments.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsException(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" * Overrides the getMessage() method to provide a formatted error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted error message indicating that there are missing arguments in the command.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" return \" MissingArgumentException\\n You have missing arguments:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" + \" Try \" + super.getMessage();","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":28}},{"path":"src/main/java/duke/exceptions/MissingArgumentsExceptionDeadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * Exception class representing an error related to missing arguments in a deadlines command.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * This exception is thrown when a deadlines command is missing the required parameter, which is the deadline time.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsExceptionDeadlines extends MissingArgumentsExceptionTodo {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a MissingArgumentsExceptionDeadlines with the specified detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" * @param message The detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsExceptionDeadlines(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" * Overrides the getMessage() method to provide a formatted error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted error message guiding the user to include the deadline time in the deadlines command.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" return super.getMessage() + \" /by {your deadline}\";","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":28}},{"path":"src/main/java/duke/exceptions/MissingArgumentsExceptionEvents.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * Exception class representing an error related to missing arguments in an events command.","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * This exception is thrown when a deadlines command is missing the required parameter, which is the starting and","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" * ending time.","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsExceptionEvents extends MissingArgumentsExceptionTodo {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a MissingArgumentsExceptionMarking with the specified detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" * @param message The detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsExceptionEvents(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" * Overrides the getMessage() method to provide a formatted error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted error message guiding the user to include the index of the item in the marking command.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" return super.getMessage() + \" /from {your starting time} /to {your ending time}\";","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":28}},{"path":"src/main/java/duke/exceptions/MissingArgumentsExceptionFind.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * Represents an exception thrown when there are missing arguments in a \"find\" command.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * Extends the MissingArgumentsException class.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsExceptionFind extends MissingArgumentsException {","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a MissingArgumentsExceptionFind with the specified error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" * @param string The error message indicating missing arguments.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsExceptionFind(String string) {","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" * Overrides the getMessage method to provide a more specific error message","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" * for the \"find\" command, suggesting the required format.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The formatted error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" return super.getMessage() + \" {your item}\";","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"ChrysanthemumT":28}},{"path":"src/main/java/duke/exceptions/MissingArgumentsExceptionMarking.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * Exception class representing an error related to missing arguments in marking commands (mark, unmark, delete).","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * This exception is thrown when a marking command is missing the required index of the item in the list.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsExceptionMarking extends MissingArgumentsException {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a MissingArgumentsExceptionMarking with the specified detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" * @param message The detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsExceptionMarking(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" * Overrides the getMessage() method to provide a formatted error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted error message guiding the user to include the index of the item in the marking command.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" return super.getMessage() + \" {index of item in list}\";","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":28}},{"path":"src/main/java/duke/exceptions/MissingArgumentsExceptionTodo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * Exception class representing an error related to missing arguments in a todo command.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * This exception is thrown when a todo command is missing the required task description.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class MissingArgumentsExceptionTodo extends MissingArgumentsException {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a MissingArgumentsExceptionTodo with the specified detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" * @param message The detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public MissingArgumentsExceptionTodo(String string) {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" * Overrides the getMessage() method to provide a formatted error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted error message guiding the user to include the task description in the todo command.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" return super.getMessage() + \" {your item}\";","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":28}},{"path":"src/main/java/duke/exceptions/WrongTimeFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * Exception class representing an error related to incorrect time format in Duke application.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" * This exception is thrown when there is an issue with the provided date and time format.","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"public class WrongTimeFormatException extends Exception {","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a WrongTimeFormatException with the specified detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" * @param message The detail message.","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" public WrongTimeFormatException(String string) {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" super(string);","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" * Overrides the getMessage() method to provide a formatted error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted error message guiding the user to use the correct date and time format.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" return \" \" + super.getMessage() + \"\\n Try again using the format {day month year} using \"","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" + \"\\n space, dash or slash as delimiters\";","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ChrysanthemumT":29}},{"path":"src/main/java/duke/parser/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.parser;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * Enumeration representing different commands that can be parsed by the Duke application.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" * Each command corresponds to a specific user action or operation.","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"public enum Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" LIST, BYE, DELETE, UNMARK, MARK, TODO, EVENT, DEADLINE, SAVED, FIND","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ChrysanthemumT":10}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.parser;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.exceptions.MissingArgumentsException;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.exceptions.MissingArgumentsExceptionDeadlines;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.exceptions.MissingArgumentsExceptionEvents;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.exceptions.MissingArgumentsExceptionMarking;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.exceptions.MissingArgumentsExceptionTodo;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.exceptions.WrongTimeFormatException;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.storage.Deadlines;","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.storage.Events;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.storage.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.storage.Todos;","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" * The Parser class is responsible for parsing user input and converting it into meaningful commands and tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" * It handles various command types such as listing tasks, adding, deleting, marking, and parsing time information.","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" * The class also checks the validity of user input and throws exceptions for invalid or missing information.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":"public class Parser {","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" private String input;","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a Parser object with an empty input.","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" public Parser() {","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" this.input \u003d \"\";","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a Parser object with the specified input.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" * @param input The input string to be parsed.","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" public Parser(String input) {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" * Sets the input string for the parser.","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" * @param input The input string to be parsed.","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" public void feed(String input) {","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" * Parses the input string and returns a Token object representing the command and associated data.","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The Token object representing the parsed command and associated data.","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws InvalidCommandException If the command is invalid.","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws MissingArgumentsException If required arguments are missing.","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws WrongTimeFormatException If there is an issue with the time format in the input.","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" public Token parse() throws InvalidCommandException, MissingArgumentsException, WrongTimeFormatException {","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" String[] split \u003d this.input.split(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" Token token;","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" Task task \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" int flag;","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" int flag2;","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" switch (split[0]) {","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" case \"list\":","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length !\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d new Token(Command.LIST);","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":" case \"bye\":","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length !\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d new Token(Command.BYE);","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"ChrysanthemumT"},"content":" case \"delete\":","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length !\u003d 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionMarking(split[0]);","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"ChrysanthemumT"},"content":" Integer.parseInt(split[1]);","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d new Token(Command.DELETE, Integer.parseInt(split[1]));","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"ChrysanthemumT"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length !\u003d 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionMarking(split[0]);","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"ChrysanthemumT"},"content":" Integer.parseInt(split[1]);","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d new Token(Command.UNMARK, Integer.parseInt(split[1]));","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"ChrysanthemumT"},"content":" case \"mark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length !\u003d 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionMarking(split[0]);","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"ChrysanthemumT"},"content":" Integer.parseInt(split[1]);","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d new Token(Command.MARK, Integer.parseInt(split[1]));","lastModifiedDate":"2024-01-31"},{"lineNumber":118,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":119,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"ChrysanthemumT"},"content":" case \"find\":","lastModifiedDate":"2024-02-01"},{"lineNumber":121,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":122,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionTodo(\"find\");","lastModifiedDate":"2024-02-01"},{"lineNumber":123,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":124,"author":{"gitId":"ChrysanthemumT"},"content":" int space \u003d this.input.indexOf(\" \");","lastModifiedDate":"2024-02-01"},{"lineNumber":125,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d new Token(Command.FIND);","lastModifiedDate":"2024-02-01"},{"lineNumber":126,"author":{"gitId":"ChrysanthemumT"},"content":" token.setSearchKey(this.input.substring(space + 1));","lastModifiedDate":"2024-02-01"},{"lineNumber":127,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":128,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":129,"author":{"gitId":"ChrysanthemumT"},"content":" case \"todo\":","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionTodo(\"todo\");","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"ChrysanthemumT"},"content":" int space \u003d this.input.indexOf(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"ChrysanthemumT"},"content":" task \u003d new Todos(this.input, this.input.substring(space + 1));","lastModifiedDate":"2024-02-01"},{"lineNumber":135,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d new Token(Command.TODO, task);","lastModifiedDate":"2024-01-31"},{"lineNumber":136,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":137,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":138,"author":{"gitId":"ChrysanthemumT"},"content":" case \"event\":","lastModifiedDate":"2024-01-31"},{"lineNumber":139,"author":{"gitId":"ChrysanthemumT"},"content":" flag \u003d Arrays.asList(split).indexOf(\"/from\");","lastModifiedDate":"2024-01-31"},{"lineNumber":140,"author":{"gitId":"ChrysanthemumT"},"content":" flag2 \u003d Arrays.asList(split).indexOf(\"/to\");","lastModifiedDate":"2024-01-31"},{"lineNumber":141,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length \u003c 5) {","lastModifiedDate":"2024-01-31"},{"lineNumber":142,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionEvents(\"event\");","lastModifiedDate":"2024-01-31"},{"lineNumber":143,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (flag \u003c 2 || flag2 \u003d\u003d split.length - 1 || flag2 - flag \u003c\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":144,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionEvents(\"event\");","lastModifiedDate":"2024-01-31"},{"lineNumber":145,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":146,"author":{"gitId":"ChrysanthemumT"},"content":" int space \u003d this.input.indexOf(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":147,"author":{"gitId":"ChrysanthemumT"},"content":" int from \u003d this.input.indexOf(\"/from\");","lastModifiedDate":"2024-01-31"},{"lineNumber":148,"author":{"gitId":"ChrysanthemumT"},"content":" int to \u003d this.input.indexOf(\"/to\");","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"ChrysanthemumT"},"content":" String fromDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":150,"author":{"gitId":"ChrysanthemumT"},"content":" String toDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":151,"author":{"gitId":"ChrysanthemumT"},"content":" // Processes From DateTime","lastModifiedDate":"2024-01-31"},{"lineNumber":152,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":153,"author":{"gitId":"ChrysanthemumT"},"content":" checkTimeFormat(this.input.substring(from + 5, to).trim());","lastModifiedDate":"2024-01-31"},{"lineNumber":154,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":155,"author":{"gitId":"ChrysanthemumT"},"content":" String[] temporaryArray \u003d this.input.substring(from + 5, to).trim().split(\"[\\\\s/\\\\-]+\");","lastModifiedDate":"2024-01-31"},{"lineNumber":156,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":157,"author":{"gitId":"ChrysanthemumT"},"content":" int lenTemp \u003d temporaryArray.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":158,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":159,"author":{"gitId":"ChrysanthemumT"},"content":" for (int i \u003d 0; i \u003c temporaryArray.length / 2; i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":160,"author":{"gitId":"ChrysanthemumT"},"content":" String temp \u003d temporaryArray[i];","lastModifiedDate":"2024-01-31"},{"lineNumber":161,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[i] \u003d temporaryArray[lenTemp - 1 - i];","lastModifiedDate":"2024-01-31"},{"lineNumber":162,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[lenTemp - 1 - i] \u003d temp;","lastModifiedDate":"2024-01-31"},{"lineNumber":163,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":164,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":165,"author":{"gitId":"ChrysanthemumT"},"content":" if (temporaryArray[lenTemp - 2].length() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":166,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[lenTemp - 2] \u003d \"0\" + temporaryArray[lenTemp - 2];","lastModifiedDate":"2024-01-31"},{"lineNumber":167,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":168,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":169,"author":{"gitId":"ChrysanthemumT"},"content":" if (temporaryArray[lenTemp - 1].length() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":170,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[lenTemp - 1] \u003d \"0\" + temporaryArray[lenTemp - 1];","lastModifiedDate":"2024-01-31"},{"lineNumber":171,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":172,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":173,"author":{"gitId":"ChrysanthemumT"},"content":" fromDateTime \u003d String.join(\"-\", temporaryArray);","lastModifiedDate":"2024-01-31"},{"lineNumber":174,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":175,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (WrongTimeFormatException exception) {","lastModifiedDate":"2024-01-31"},{"lineNumber":176,"author":{"gitId":"ChrysanthemumT"},"content":" throw exception;","lastModifiedDate":"2024-01-31"},{"lineNumber":177,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":178,"author":{"gitId":"ChrysanthemumT"},"content":" // Processes To DateTime","lastModifiedDate":"2024-01-31"},{"lineNumber":179,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":180,"author":{"gitId":"ChrysanthemumT"},"content":" checkTimeFormat(this.input.substring(to + 3).trim());","lastModifiedDate":"2024-01-31"},{"lineNumber":181,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":182,"author":{"gitId":"ChrysanthemumT"},"content":" String[] temporaryArray \u003d this.input.substring(to + 3)","lastModifiedDate":"2024-01-31"},{"lineNumber":183,"author":{"gitId":"ChrysanthemumT"},"content":" .trim().split(\"[\\\\s/\\\\-]+\");","lastModifiedDate":"2024-01-31"},{"lineNumber":184,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":185,"author":{"gitId":"ChrysanthemumT"},"content":" int lenTemp \u003d temporaryArray.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":186,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":187,"author":{"gitId":"ChrysanthemumT"},"content":" for (int i \u003d 0; i \u003c temporaryArray.length / 2; i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":188,"author":{"gitId":"ChrysanthemumT"},"content":" String temp \u003d temporaryArray[i];","lastModifiedDate":"2024-01-31"},{"lineNumber":189,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[i] \u003d temporaryArray[lenTemp - 1 - i];","lastModifiedDate":"2024-01-31"},{"lineNumber":190,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[lenTemp - 1 - i] \u003d temp;","lastModifiedDate":"2024-01-31"},{"lineNumber":191,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":192,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":193,"author":{"gitId":"ChrysanthemumT"},"content":" if (temporaryArray[lenTemp - 1].length() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":194,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[lenTemp - 1] \u003d \"0\" + temporaryArray[lenTemp - 1];","lastModifiedDate":"2024-01-31"},{"lineNumber":195,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":196,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":197,"author":{"gitId":"ChrysanthemumT"},"content":" if (temporaryArray[lenTemp - 2].length() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":198,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[lenTemp - 2] \u003d \"0\" + temporaryArray[lenTemp - 2];","lastModifiedDate":"2024-01-31"},{"lineNumber":199,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":200,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":201,"author":{"gitId":"ChrysanthemumT"},"content":" toDateTime \u003d String.join(\"-\", temporaryArray);","lastModifiedDate":"2024-01-31"},{"lineNumber":202,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":203,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (WrongTimeFormatException exception) {","lastModifiedDate":"2024-01-31"},{"lineNumber":204,"author":{"gitId":"ChrysanthemumT"},"content":" throw exception;","lastModifiedDate":"2024-01-31"},{"lineNumber":205,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":206,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":207,"author":{"gitId":"ChrysanthemumT"},"content":" task \u003d new Events(this.input, this.input.substring(space + 1, from).trim(), fromDateTime, toDateTime);","lastModifiedDate":"2024-02-01"},{"lineNumber":208,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d new Token(Command.EVENT, task);","lastModifiedDate":"2024-01-31"},{"lineNumber":209,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":210,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":211,"author":{"gitId":"ChrysanthemumT"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-31"},{"lineNumber":212,"author":{"gitId":"ChrysanthemumT"},"content":" flag \u003d Arrays.asList(split).indexOf(\"/by\");","lastModifiedDate":"2024-01-31"},{"lineNumber":213,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":214,"author":{"gitId":"ChrysanthemumT"},"content":" if (split.length \u003c 4) {","lastModifiedDate":"2024-01-31"},{"lineNumber":215,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionDeadlines(\"deadline\");","lastModifiedDate":"2024-01-31"},{"lineNumber":216,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (flag \u003c 2 || flag \u003d\u003d split.length - 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":217,"author":{"gitId":"ChrysanthemumT"},"content":" throw new MissingArgumentsExceptionDeadlines(\"deadline\");","lastModifiedDate":"2024-01-31"},{"lineNumber":218,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":219,"author":{"gitId":"ChrysanthemumT"},"content":" int space \u003d this.input.indexOf(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":220,"author":{"gitId":"ChrysanthemumT"},"content":" int by \u003d this.input.indexOf(\"/by\");","lastModifiedDate":"2024-01-31"},{"lineNumber":221,"author":{"gitId":"ChrysanthemumT"},"content":" String byDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":222,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":223,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":224,"author":{"gitId":"ChrysanthemumT"},"content":" checkTimeFormat(this.input.substring(by + 3).trim());","lastModifiedDate":"2024-01-31"},{"lineNumber":225,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":226,"author":{"gitId":"ChrysanthemumT"},"content":" String[] temporaryArray \u003d this.input.substring(by + 3)","lastModifiedDate":"2024-01-31"},{"lineNumber":227,"author":{"gitId":"ChrysanthemumT"},"content":" .trim().split(\"[\\\\s/\\\\-]+\");","lastModifiedDate":"2024-01-31"},{"lineNumber":228,"author":{"gitId":"ChrysanthemumT"},"content":" int lenTemp \u003d temporaryArray.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":229,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":230,"author":{"gitId":"ChrysanthemumT"},"content":" for (int i \u003d 0; i \u003c temporaryArray.length / 2; i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":231,"author":{"gitId":"ChrysanthemumT"},"content":" String temp \u003d temporaryArray[i];","lastModifiedDate":"2024-01-31"},{"lineNumber":232,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[i] \u003d temporaryArray[lenTemp - 1 - i];","lastModifiedDate":"2024-01-31"},{"lineNumber":233,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[lenTemp - 1 - i] \u003d temp;","lastModifiedDate":"2024-01-31"},{"lineNumber":234,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":235,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":236,"author":{"gitId":"ChrysanthemumT"},"content":" if (temporaryArray[lenTemp - 1].length() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":237,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[lenTemp - 1] \u003d \"0\" + temporaryArray[lenTemp - 1];","lastModifiedDate":"2024-01-31"},{"lineNumber":238,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":239,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":240,"author":{"gitId":"ChrysanthemumT"},"content":" if (temporaryArray[lenTemp - 2].length() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":241,"author":{"gitId":"ChrysanthemumT"},"content":" temporaryArray[lenTemp - 2] \u003d \"0\" + temporaryArray[lenTemp - 2];","lastModifiedDate":"2024-01-31"},{"lineNumber":242,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":243,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":244,"author":{"gitId":"ChrysanthemumT"},"content":" byDateTime \u003d String.join(\"-\", temporaryArray);","lastModifiedDate":"2024-01-31"},{"lineNumber":245,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (WrongTimeFormatException exception) {","lastModifiedDate":"2024-01-31"},{"lineNumber":246,"author":{"gitId":"ChrysanthemumT"},"content":" throw exception;","lastModifiedDate":"2024-01-31"},{"lineNumber":247,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":248,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":249,"author":{"gitId":"ChrysanthemumT"},"content":" task \u003d new Deadlines(this.input, this.input.substring(space + 1, by).trim(), byDateTime);","lastModifiedDate":"2024-02-01"},{"lineNumber":250,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d new Token(Command.DEADLINE, task);","lastModifiedDate":"2024-01-31"},{"lineNumber":251,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":252,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":253,"author":{"gitId":"ChrysanthemumT"},"content":" case \"save\":","lastModifiedDate":"2024-02-01"},{"lineNumber":254,"author":{"gitId":"ChrysanthemumT"},"content":" boolean marked \u003d split[1].equals(\"1\") ? true : false;","lastModifiedDate":"2024-02-01"},{"lineNumber":255,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":256,"author":{"gitId":"ChrysanthemumT"},"content":" this.input \u003d String.join(\" \", Arrays.copyOfRange(split, 2, split.length));","lastModifiedDate":"2024-02-01"},{"lineNumber":257,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":258,"author":{"gitId":"ChrysanthemumT"},"content":" token \u003d this.parse();","lastModifiedDate":"2024-02-01"},{"lineNumber":259,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":260,"author":{"gitId":"ChrysanthemumT"},"content":" if (marked) {","lastModifiedDate":"2024-02-01"},{"lineNumber":261,"author":{"gitId":"ChrysanthemumT"},"content":" token.getTask().mark();","lastModifiedDate":"2024-02-01"},{"lineNumber":262,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":263,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":264,"author":{"gitId":"ChrysanthemumT"},"content":" token.setAsSaved();","lastModifiedDate":"2024-02-01"},{"lineNumber":265,"author":{"gitId":"ChrysanthemumT"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":266,"author":{"gitId":"ChrysanthemumT"},"content":" default:","lastModifiedDate":"2024-01-31"},{"lineNumber":267,"author":{"gitId":"ChrysanthemumT"},"content":" throw new InvalidCommandException(\"InvalidCommandException\");","lastModifiedDate":"2024-01-31"},{"lineNumber":268,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":269,"author":{"gitId":"ChrysanthemumT"},"content":" return token;","lastModifiedDate":"2024-01-31"},{"lineNumber":270,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":271,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":272,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":273,"author":{"gitId":"ChrysanthemumT"},"content":" * Checks the format of the provided time string and throws an exception if the format is incorrect.","lastModifiedDate":"2024-02-01"},{"lineNumber":274,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":275,"author":{"gitId":"ChrysanthemumT"},"content":" * @param string The time string to be checked.","lastModifiedDate":"2024-02-01"},{"lineNumber":276,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws WrongTimeFormatException If the time format is incorrect or missing.","lastModifiedDate":"2024-02-01"},{"lineNumber":277,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":278,"author":{"gitId":"ChrysanthemumT"},"content":" private void checkTimeFormat(String string) throws WrongTimeFormatException {","lastModifiedDate":"2024-01-31"},{"lineNumber":279,"author":{"gitId":"ChrysanthemumT"},"content":" String[] splitString \u003d string.split(\"[\\\\s/\\\\-]+\");","lastModifiedDate":"2024-01-31"},{"lineNumber":280,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":281,"author":{"gitId":"ChrysanthemumT"},"content":" if (splitString.length \u003c 3) {","lastModifiedDate":"2024-01-31"},{"lineNumber":282,"author":{"gitId":"ChrysanthemumT"},"content":" throw new WrongTimeFormatException(\"wrong time buddy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":283,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":284,"author":{"gitId":"ChrysanthemumT"},"content":" if (splitString.length \u003e 5) {","lastModifiedDate":"2024-02-07"},{"lineNumber":285,"author":{"gitId":"ChrysanthemumT"},"content":" throw new WrongTimeFormatException(\"Too many inputs\");","lastModifiedDate":"2024-01-31"},{"lineNumber":286,"author":{"gitId":"ChrysanthemumT"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":287,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":288,"author":{"gitId":"ChrysanthemumT"},"content":" int year \u003d Integer.parseInt(splitString[2]);","lastModifiedDate":"2024-01-31"},{"lineNumber":289,"author":{"gitId":"ChrysanthemumT"},"content":" int month \u003d Integer.parseInt(splitString[1]);","lastModifiedDate":"2024-01-31"},{"lineNumber":290,"author":{"gitId":"ChrysanthemumT"},"content":" int day \u003d Integer.parseInt(splitString[0]);","lastModifiedDate":"2024-01-31"},{"lineNumber":291,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":292,"author":{"gitId":"ChrysanthemumT"},"content":" checkRealDate(year, month, day);","lastModifiedDate":"2024-01-31"},{"lineNumber":293,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":294,"author":{"gitId":"ChrysanthemumT"},"content":" throw new WrongTimeFormatException(\"Use numerals for date\");","lastModifiedDate":"2024-01-31"},{"lineNumber":295,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (WrongTimeFormatException exception) {","lastModifiedDate":"2024-01-31"},{"lineNumber":296,"author":{"gitId":"ChrysanthemumT"},"content":" throw exception;","lastModifiedDate":"2024-01-31"},{"lineNumber":297,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":298,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":299,"author":{"gitId":"ChrysanthemumT"},"content":" if (splitString.length \u003e 3) {","lastModifiedDate":"2024-01-31"},{"lineNumber":300,"author":{"gitId":"ChrysanthemumT"},"content":" String twelveHourFormat \u003d \"\";","lastModifiedDate":"2024-01-31"},{"lineNumber":301,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":302,"author":{"gitId":"ChrysanthemumT"},"content":" if (splitString.length \u003e 4) {","lastModifiedDate":"2024-01-31"},{"lineNumber":303,"author":{"gitId":"ChrysanthemumT"},"content":" twelveHourFormat \u003d splitString[4];","lastModifiedDate":"2024-01-31"},{"lineNumber":304,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":305,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":306,"author":{"gitId":"ChrysanthemumT"},"content":" checkRealTime(splitString[3], twelveHourFormat);","lastModifiedDate":"2024-01-31"},{"lineNumber":307,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":308,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":309,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":310,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":311,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":312,"author":{"gitId":"ChrysanthemumT"},"content":" * Checks if the provided year, month, and day form a valid date and throws an exception if not.","lastModifiedDate":"2024-02-01"},{"lineNumber":313,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":314,"author":{"gitId":"ChrysanthemumT"},"content":" * @param year The year.","lastModifiedDate":"2024-02-01"},{"lineNumber":315,"author":{"gitId":"ChrysanthemumT"},"content":" * @param month The month.","lastModifiedDate":"2024-02-01"},{"lineNumber":316,"author":{"gitId":"ChrysanthemumT"},"content":" * @param day The day.","lastModifiedDate":"2024-02-01"},{"lineNumber":317,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws WrongTimeFormatException If the date is invalid.","lastModifiedDate":"2024-02-01"},{"lineNumber":318,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":319,"author":{"gitId":"ChrysanthemumT"},"content":" private void checkRealDate(int year, int month, int day) throws WrongTimeFormatException {","lastModifiedDate":"2024-01-31"},{"lineNumber":320,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":321,"author":{"gitId":"ChrysanthemumT"},"content":" LocalDate dateToBeChecked \u003d LocalDate.of(year, month, day);","lastModifiedDate":"2024-01-31"},{"lineNumber":322,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":323,"author":{"gitId":"ChrysanthemumT"},"content":" if (dateToBeChecked.isBefore(LocalDate.now())) {","lastModifiedDate":"2024-01-31"},{"lineNumber":324,"author":{"gitId":"ChrysanthemumT"},"content":" throw new WrongTimeFormatException(\"Can\u0027t go back in time buddy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":325,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":326,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":327,"author":{"gitId":"ChrysanthemumT"},"content":" throw new WrongTimeFormatException(\"Date and time are impossible buddy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":328,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (WrongTimeFormatException exception) {","lastModifiedDate":"2024-01-31"},{"lineNumber":329,"author":{"gitId":"ChrysanthemumT"},"content":" throw exception;","lastModifiedDate":"2024-01-31"},{"lineNumber":330,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":331,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":332,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":333,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":334,"author":{"gitId":"ChrysanthemumT"},"content":" * Checks if the provided time and twelve-hour format (AM/PM) form a valid time and throws an exception if not.","lastModifiedDate":"2024-02-01"},{"lineNumber":335,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":336,"author":{"gitId":"ChrysanthemumT"},"content":" * @param time The time string.","lastModifiedDate":"2024-02-01"},{"lineNumber":337,"author":{"gitId":"ChrysanthemumT"},"content":" * @param twelveHourFormat The twelve-hour format (AM/PM).","lastModifiedDate":"2024-02-01"},{"lineNumber":338,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws WrongTimeFormatException If the time is invalid.","lastModifiedDate":"2024-02-01"},{"lineNumber":339,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":340,"author":{"gitId":"ChrysanthemumT"},"content":" private void checkRealTime(String time, String twelveHourFormat) throws WrongTimeFormatException {","lastModifiedDate":"2024-01-31"},{"lineNumber":341,"author":{"gitId":"ChrysanthemumT"},"content":" if (twelveHourFormat.equals(\"\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":342,"author":{"gitId":"ChrysanthemumT"},"content":" if (time.length() \u003c 5 \u0026\u0026 time.indexOf(\":\") !\u003d -1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":343,"author":{"gitId":"ChrysanthemumT"},"content":" time \u003d \"0\" + time;","lastModifiedDate":"2024-01-31"},{"lineNumber":344,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":345,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":346,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":347,"author":{"gitId":"ChrysanthemumT"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"[HH:mm]\" + \"[HHmm]\" + \"[Hmm]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":348,"author":{"gitId":"ChrysanthemumT"},"content":" LocalTime.parse(time, formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":349,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (DateTimeException exception) {","lastModifiedDate":"2024-01-31"},{"lineNumber":350,"author":{"gitId":"ChrysanthemumT"},"content":" throw new WrongTimeFormatException(\"Date and time are impossible buddy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":351,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":352,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (twelveHourFormat.equals(\"PM\") || twelveHourFormat.equals(\"pm\") || twelveHourFormat.equals(\"Pm\")","lastModifiedDate":"2024-01-31"},{"lineNumber":353,"author":{"gitId":"ChrysanthemumT"},"content":" || twelveHourFormat.equals(\"pM\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":354,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":355,"author":{"gitId":"ChrysanthemumT"},"content":" LocalTime.parse(time + \" pm\", DateTimeFormatter.ofPattern(\"h:mm a\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":356,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (DateTimeException exception) {","lastModifiedDate":"2024-01-31"},{"lineNumber":357,"author":{"gitId":"ChrysanthemumT"},"content":" throw new WrongTimeFormatException(\"Date and time are impossible buddy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":358,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":359,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":360,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":361,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":362,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ChrysanthemumT":362}},{"path":"src/main/java/duke/parser/Token.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.parser;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.storage.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" * The Token class represents a parsed command along with associated data.","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" * It is used to convey information between the Parser and other components of the Duke application.","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"public class Token {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" private Command cmd;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" private Task task;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" private int selectedItem;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" private String searchKey;","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a Token object with the specified command.","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" * @param cmd The command associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" public Token(Command cmd) {","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" this.cmd \u003d cmd;","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a Token object with the specified command and task.","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" * @param cmd The command associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" * @param task The task associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" public Token(Command cmd, Task task) {","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" this.cmd \u003d cmd;","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a Token object with the specified command and selected item index.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" * @param cmd The command associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" * @param selectedItem The index of the selected item.","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" public Token(Command cmd, int selectedItem) {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" this.cmd \u003d cmd;","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" this.selectedItem \u003d selectedItem;","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" * Gets the command associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The command associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" public Command getCmd() {","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" return this.cmd;","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" * Gets the index of the selected item associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The index of the selected item.","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" public int getSelectedItem() {","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" return this.selectedItem;","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" * Gets the task associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The task associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" public Task getTask() {","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" return this.task;","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" * Sets the command of the token as \"SAVED.\"","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" * This is used to indicate that the associated task has been successfully saved.","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":" public void setAsSaved() {","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":" this.cmd \u003d Command.SAVED;","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":" * Sets the search key associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"ChrysanthemumT"},"content":" * @param string The search key to be set.","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":" public void setSearchKey(String string) {","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"ChrysanthemumT"},"content":" this.searchKey \u003d string;","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":" * Gets the search key associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The search key associated with the token.","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"ChrysanthemumT"},"content":" public String getSearchKey() {","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"ChrysanthemumT"},"content":" return this.searchKey;","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":99,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ChrysanthemumT":99}},{"path":"src/main/java/duke/storage/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Optional;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" * The Deadlines class represents a deadline task in the Duke task manager, which is a subtype of the Task class.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" * It inherits properties and methods from the Task class and provides a specific implementation for deadline tasks","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" * with date and time details.","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" protected LocalDate by;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" protected LocalTime byTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a Deadlines object with the specified original command, description, and date-time details.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" * @param originalCommand The original command used to create the deadline task.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" * @param dateTimeBy The deadline date and time in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" public Deadlines(String originalCommand, String description, String dateTimeBy) {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" super(originalCommand, description);","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" String[] splitBy \u003d dateTimeBy.split(\"-\");","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" int lenBy \u003d splitBy.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" if (lenBy \u003d\u003d 3) {","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" this.by \u003d LocalDate.parse(String.join(\"-\", splitBy));","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (lenBy \u003d\u003d 4) {","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" this.by \u003d LocalDate.parse(String.join(\"-\", Arrays.copyOfRange(splitBy,","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" 1, lenBy)));","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" if (splitBy[0].length() \u003c 5 \u0026\u0026 splitBy[0].indexOf(\":\") !\u003d -1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" splitBy[0] \u003d \"0\" + splitBy[0];","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"[HH:mm]\" + \"[HHmm]\" + \"[Hmm]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" this.byTime \u003d LocalTime.parse(splitBy[0], formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (lenBy \u003d\u003d 5) {","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" this.by \u003d LocalDate.parse(String.join(\"-\", Arrays.copyOfRange(splitBy,","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" 2, lenBy)));","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" this.byTime \u003d LocalTime.parse(splitBy[1] + \" \" + splitBy[0], DateTimeFormatter.ofPattern(\"h:mm a\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns a string representation of the deadline task, including its specific type identifier, the result of the","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" * superclass\u0027s toString method, and date-time details.","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A string representation of the deadline task.","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\" h:mm a\");","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" return \"[D]\" + super.toString() + \" (by: \" + dateFormatter.format(this.by)","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" + Optional.ofNullable(byTime).map(timeFormatter::format).orElse(\"\") + \")\";","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ChrysanthemumT":65}},{"path":"src/main/java/duke/storage/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Optional;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" * The Events class represents an event task in the Duke task manager, which is a subtype of the Task class.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" * It inherits properties and methods from the Task class and provides a specific implementation for event tasks","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" * with date and time details.","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":"public class Events extends Task {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" protected LocalDate from;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" protected LocalTime fromTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" protected LocalDate to;","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" protected LocalTime toTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs an Events object with the specified original command, description, and date-time details.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" * @param originalCommand The original command used to create the event task.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" * @param description The description of the event task.","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" * @param dateTimeFrom The starting date and time of the event in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" * @param dateTimeTo The ending date and time of the event in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" public Events(String originalCommand, String description, String dateTimeFrom, String dateTimeTo) {","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" super(originalCommand, description);","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" String[] splitFrom \u003d dateTimeFrom.split(\"-\");","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" String[] splitTo \u003d dateTimeTo.split(\"-\");","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" int lenFrom \u003d splitFrom.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" int lenTo \u003d splitTo.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" if (lenFrom \u003d\u003d 3) {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" this.from \u003d LocalDate.parse(String.join(\"-\", splitFrom));","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (lenFrom \u003d\u003d 4) {","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" this.from \u003d LocalDate.parse(String.join(\"-\", Arrays.copyOfRange(splitFrom,","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" 1, lenFrom)));","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" if (splitFrom[0].length() \u003c 5 \u0026\u0026 splitTo[0].indexOf(\":\") !\u003d -1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" splitFrom[0] \u003d \"0\" + splitFrom[0];","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"[HH:mm]\" + \"[HHmm]\" + \"[Hmm]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" this.toTime \u003d LocalTime.parse(splitFrom[0], formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (lenFrom \u003d\u003d 5) {","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" this.from \u003d LocalDate.parse(String.join(\"-\", Arrays.copyOfRange(splitFrom,","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" 2, lenFrom)));","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" this.fromTime \u003d LocalTime.parse(splitFrom[1] + \" \" + splitFrom[0], DateTimeFormatter.ofPattern(\"h:mm a\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" if (lenTo \u003d\u003d 3) {","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" this.to \u003d LocalDate.parse(String.join(\"-\", splitTo));","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (lenTo \u003d\u003d 4) {","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" this.to \u003d LocalDate.parse(String.join(\"-\", Arrays.copyOfRange(splitTo,","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" 1, lenTo)));","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" if (splitTo[0].length() \u003c 5 \u0026\u0026 splitTo[0].indexOf(\":\") !\u003d -1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" splitTo[0] \u003d \"0\" + splitTo[0];","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"[HH:mm]\" + \"[HHmm]\" + \"[Hmm]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" this.toTime \u003d LocalTime.parse(splitTo[0], formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" } else if (lenTo \u003d\u003d 5) {","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" this.to \u003d LocalDate.parse(String.join(\"-\", Arrays.copyOfRange(splitTo,","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" 2, lenTo)));","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" this.toTime \u003d LocalTime.parse(splitFrom[1] + \" \" + splitFrom[0], DateTimeFormatter.ofPattern(\"h:mm a\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns a string representation of the event task, including its specific type identifier, the result of the","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":" * superclass\u0027s toString method, and date-time details.","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A string representation of the event task.","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"ChrysanthemumT"},"content":" DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\" h:mm a\");","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":" DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"ChrysanthemumT"},"content":" return \"[E]\" + super.toString() + \" (from: \" + dateFormatter.format(this.from)","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"ChrysanthemumT"},"content":" + Optional.ofNullable(fromTime).map(timeFormatter::format).orElse(\"\")","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"ChrysanthemumT"},"content":" + \" to: \" + dateFormatter.format(this.to)","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"ChrysanthemumT"},"content":" + Optional.ofNullable(toTime).map(timeFormatter::format).orElse(\"\") + \")\";","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ChrysanthemumT":93}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import java.io.File;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.parser.Token;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.ui.UI;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" * The Storage class is responsible for loading tasks from and saving tasks to a file.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" * It interacts with the TaskList, Parser, and UI classes to manage the data persistence of tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":"public class Storage {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" * Initializes the storage by loading tasks from a save file into the provided TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" * @param taskList The TaskList object to be initialized with tasks from the save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" public static void start(TaskList taskList) {","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" File file \u003d new File(\"./src/main/java/duke/storage/savefile.txt\");","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" parser.feed(scanner.nextLine());","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" Token output \u003d null;","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" output \u003d parser.parse();","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" taskList.loadFromSave(output.getTask());","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" UI.error(e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" UI.error(\"No save file\");","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" * Saves the provided input string to a save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" * @param input The input string representing the tasks to be saved.","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" public static void save(String input) {","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" FileWriter fw \u003d new FileWriter(\"./src/main/java/duke/storage/savefile.txt\");","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" fw.write(input);","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" fw.close();","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" UI.error(\"Missing save file\");","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ChrysanthemumT":63}},{"path":"src/main/java/duke/storage/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * The Task class represents a task in the Duke task manager.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * It stores information such as the task\u0027s description, completion status, and the original command","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" * used to create the task.","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" protected String originalCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a Task object with the specified original command and description.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" * @param originalCommand The original command used to create the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" public Task(String originalCommand, String description) {","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" this.originalCommand \u003d originalCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns the status icon of the task (\u0027X\u0027 if done, \u0027 \u0027 if not done).","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The status icon of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" * Marks the task as done.","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" public void mark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" * Marks the task as not done.","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" public void unMark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" * Gets the original command used to create the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The original command.","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" public String getOriginalCommand() {","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" return this.originalCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" * Gets the description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" public String getDescription() {","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" return this.description;","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns a string representation of the task, including its status icon and description.","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A string representation of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" return String.format(\"[%s] \", getStatusIcon()) + description;","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ChrysanthemumT":77}},{"path":"src/main/java/duke/storage/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" * The TaskList class represents a list of tasks in the Duke task manager.","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":" * It manages operations such as adding, marking, unmarking, and removing tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" * The class also provides methods for obtaining the length of the task list and generating a formatted","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" * string representation of the tasks.","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":"public class TaskList {","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" private static final String lines \u003d \" ____________________________________________________________\";","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" private final ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a TaskList object with an empty list of tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" public TaskList() {","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" * Adds a task to the task list and saves the updated list to a file.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" public void add(Task task) {","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" saveToFile();","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" * Loads a task from a save file and adds it to the task list.","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":" * @param task The task to be loaded and added.","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" public void loadFromSave(Task task) {","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" * Marks a task at the specified index as done and saves the updated list to a file.","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":" * @param number The index of the task to be marked.","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" public void markTask(int number) {","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" this.tasks.get(number).mark();","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" \" + this.tasks.get(number).toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" saveToFile();","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" * Marks a task at the specified index as not done and saves the updated list to a file.","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" * @param number The index of the task to be unmarked.","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" public void unMarkTask(int number) {","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":" this.tasks.get(number).unMark();","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" \" + this.tasks.get(number).toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" saveToFile();","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" * Removes a task at the specified index and saves the updated list to a file.","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" * @param number The index of the task to be removed.","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" public void remove(int number) {","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" \" + this.tasks.get(number).toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" this.tasks.remove(number);","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" saveToFile();","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" * Searches for tasks containing a specified keyword in their descriptions.","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":" * @param key The keyword to search for in task descriptions.","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted string representation of tasks that match the search criteria.","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" public String find(String key) {","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":" result.append(lines).append(\"\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":" for (int i \u003d 1; i \u003c\u003d tasks.size(); i++) {","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"ChrysanthemumT"},"content":" if (this.tasks.get(i - 1).getDescription().toLowerCase()","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"ChrysanthemumT"},"content":" .contains(key.toLowerCase())) {","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":" result.append(String.format(\" %d.\", i)).append(this.tasks.get(i - 1).toString()).append(\"\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"ChrysanthemumT"},"content":" result.append(lines);","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"ChrysanthemumT"},"content":" return result.toString();","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns the number of tasks in the task list.","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"ChrysanthemumT"},"content":" * @return The number of tasks in the task list.","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"ChrysanthemumT"},"content":" public int taskLength() {","lastModifiedDate":"2024-02-01"},{"lineNumber":99,"author":{"gitId":"ChrysanthemumT"},"content":" return this.tasks.size();","lastModifiedDate":"2024-02-01"},{"lineNumber":100,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":101,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":102,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"ChrysanthemumT"},"content":" * Generates a formatted string representation of the tasks in the task list.","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A formatted string representation of the tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":107,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":108,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":109,"author":{"gitId":"ChrysanthemumT"},"content":" StringBuilder result \u003d new StringBuilder();","lastModifiedDate":"2024-02-01"},{"lineNumber":110,"author":{"gitId":"ChrysanthemumT"},"content":" result.append(lines).append(\"\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":111,"author":{"gitId":"ChrysanthemumT"},"content":" for (int i \u003d 1; i \u003c\u003d tasks.size(); i++) {","lastModifiedDate":"2024-02-01"},{"lineNumber":112,"author":{"gitId":"ChrysanthemumT"},"content":" result.append(String.format(\" %d.\", i)).append(this.tasks.get(i - 1).toString()).append(\"\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":113,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":114,"author":{"gitId":"ChrysanthemumT"},"content":" result.append(lines);","lastModifiedDate":"2024-02-01"},{"lineNumber":115,"author":{"gitId":"ChrysanthemumT"},"content":" return result.toString();","lastModifiedDate":"2024-02-01"},{"lineNumber":116,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":117,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":118,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":119,"author":{"gitId":"ChrysanthemumT"},"content":" * Saves the current list of tasks to a file.","lastModifiedDate":"2024-02-01"},{"lineNumber":120,"author":{"gitId":"ChrysanthemumT"},"content":" * The format of the save file is \"save [doneStatus] [originalCommand]\" for each task.","lastModifiedDate":"2024-02-01"},{"lineNumber":121,"author":{"gitId":"ChrysanthemumT"},"content":" * Each task is represented as a line in the file.","lastModifiedDate":"2024-02-01"},{"lineNumber":122,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":123,"author":{"gitId":"ChrysanthemumT"},"content":" private void saveToFile() {","lastModifiedDate":"2024-02-01"},{"lineNumber":124,"author":{"gitId":"ChrysanthemumT"},"content":" StringBuilder temporary \u003d new StringBuilder();","lastModifiedDate":"2024-02-01"},{"lineNumber":125,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":126,"author":{"gitId":"ChrysanthemumT"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-02-01"},{"lineNumber":127,"author":{"gitId":"ChrysanthemumT"},"content":" temporary.append(\"save \").append(task.isDone ? \"1 \" : \"0 \").append(task.getOriginalCommand() + \"\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":128,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":129,"author":{"gitId":"ChrysanthemumT"},"content":" Storage.save(temporary.toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":130,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":131,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":132,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"ChrysanthemumT":132}},{"path":"src/main/java/duke/storage/Todos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":" * The Todos class represents a todo task in the Duke task manager, which is a subtype of the Task class.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":" * It inherits properties and methods from the Task class and provides a specific implementation for todo tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class Todos extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a Todos object with the specified original command and description.","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" * @param originalCommand The original command used to create the todo task.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" * @param description The description of the todo task.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" public Todos(String originalCommand, String description) {","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" super(originalCommand, description);","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" * Returns a string representation of the todo task, including its specific type identifier and the result","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" * of the superclass\u0027s toString method.","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" * @return A string representation of the todo task.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":28}},{"path":"src/main/java/duke/storage/savefile.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"save 1 todo hw1","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"save 0 todo hw1","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"save 0 todo hw2","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"save 0 todo hw3","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"save 0 deadline hw44 /by 2 2 2044 1800","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"ChrysanthemumT":5}},{"path":"src/main/java/duke/ui/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.ui;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.exceptions.ListOutofBoundsException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.storage.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"import duke.storage.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" * The UI class handles interactions with the user through the command-line interface.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" * It displays greetings, goodbyes, and processes user input to perform various tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":"public class UI {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" private static final String lines \u003d \" ____________________________________________________________\";","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" private static final String name \u003d \"Wang\";","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" * Constructs a UI object and initializes the associated TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" public UI() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" Storage.start(taskList);","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ChrysanthemumT"},"content":" * Displays a greeting message when the Duke program starts.","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ChrysanthemumT"},"content":" public static void greeting() {","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.printf(\" Hello! I\u0027m %s\\n\", name);","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ChrysanthemumT"},"content":" * Displays a goodbye message when the Duke program ends.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ChrysanthemumT"},"content":" public static void goodbye() {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ChrysanthemumT"},"content":" * Adds a task to the TaskList and displays a confirmation message.","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ChrysanthemumT"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ChrysanthemumT"},"content":" public void addItem(Task task) {","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"ChrysanthemumT"},"content":" this.taskList.add(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" \" + \"Got it. I\u0027ve added this task:\\n\" + \" \" + task + \"\\n\" + \"\"","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"ChrysanthemumT"},"content":" + String.format(\" Now you have %d tasks in the list.\", this.taskList.taskLength()));","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ChrysanthemumT"},"content":" * Marks a task as done and displays a confirmation message.","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ChrysanthemumT"},"content":" * @param input The index of the task to be marked as done.","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws ListOutofBoundsException If the provided index is out of bounds.","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ChrysanthemumT"},"content":" public void markTaskUI(int input) throws ListOutofBoundsException {","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"ChrysanthemumT"},"content":" if (input \u003c 0 || input \u003e this.taskList.taskLength() - 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ChrysanthemumT"},"content":" throw new ListOutofBoundsException(String.format(\"%d\", this.taskList.taskLength()));","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"ChrysanthemumT"},"content":" this.taskList.markTask(input);","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"ChrysanthemumT"},"content":" * Marks a task as not done and displays a confirmation message.","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"ChrysanthemumT"},"content":" * @param input The index of the task to be marked as not done.","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws ListOutofBoundsException If the provided index is out of bounds.","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"ChrysanthemumT"},"content":" public void unMarkTask(int input) throws ListOutofBoundsException {","lastModifiedDate":"2024-01-24"},{"lineNumber":82,"author":{"gitId":"ChrysanthemumT"},"content":" if (input \u003c 0 || input \u003e this.taskList.taskLength() - 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"ChrysanthemumT"},"content":" throw new ListOutofBoundsException(String.format(\"%d\", this.taskList.taskLength()));","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-23"},{"lineNumber":87,"author":{"gitId":"ChrysanthemumT"},"content":" this.taskList.unMarkTask(input);","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-23"},{"lineNumber":89,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":91,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"ChrysanthemumT"},"content":" * Removes a task from the TaskList and displays a confirmation message.","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"ChrysanthemumT"},"content":" * @param input The index of the task to be removed.","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"ChrysanthemumT"},"content":" * @throws ListOutofBoundsException If the provided index is out of bounds.","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"ChrysanthemumT"},"content":" public void removeTask(int input) throws ListOutofBoundsException {","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"ChrysanthemumT"},"content":" if (input \u003c 0 || input \u003e this.taskList.taskLength() - 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":100,"author":{"gitId":"ChrysanthemumT"},"content":" throw new ListOutofBoundsException(String.format(\"%d\", this.taskList.taskLength()));","lastModifiedDate":"2024-02-01"},{"lineNumber":101,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"ChrysanthemumT"},"content":" this.taskList.remove(input);","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(String.format(\" Now you have %d tasks in the list.\", this.taskList.taskLength()));","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":110,"author":{"gitId":"ChrysanthemumT"},"content":" * Prints the tasks matching the specified key using the taskList\u0027s find method.","lastModifiedDate":"2024-02-01"},{"lineNumber":111,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":112,"author":{"gitId":"ChrysanthemumT"},"content":" * @param key The keyword or item to search for in the tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":113,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":114,"author":{"gitId":"ChrysanthemumT"},"content":" public void findTaskUI(String key) {","lastModifiedDate":"2024-02-01"},{"lineNumber":115,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(this.taskList.find(key));","lastModifiedDate":"2024-02-01"},{"lineNumber":116,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":117,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":118,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":119,"author":{"gitId":"ChrysanthemumT"},"content":" * Displays the list of tasks in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":120,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":121,"author":{"gitId":"ChrysanthemumT"},"content":" public void listItems() {","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(taskList);","lastModifiedDate":"2024-02-01"},{"lineNumber":123,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":126,"author":{"gitId":"ChrysanthemumT"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":127,"author":{"gitId":"ChrysanthemumT"},"content":" * Displays an error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":128,"author":{"gitId":"ChrysanthemumT"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":129,"author":{"gitId":"ChrysanthemumT"},"content":" * @param error The error message to be displayed.","lastModifiedDate":"2024-02-01"},{"lineNumber":130,"author":{"gitId":"ChrysanthemumT"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":131,"author":{"gitId":"ChrysanthemumT"},"content":" public static void error(String error) {","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(error);","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(lines);","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":138,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ChrysanthemumT":138}},{"path":"src/test/java/duke/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.parser;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"public class ParserTest {","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" @Test","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" public void parse_success() {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" String sampleInput \u003d \"todo hw\";","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" parser.feed(sampleInput);","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" Token output \u003d parser.parse();","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" assertEquals(output.getCmd(), Command.TODO);","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":" assertEquals(output.getSelectedItem(), 0);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":" assertEquals(output.getTask().getOriginalCommand(), sampleInput);","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ChrysanthemumT"},"content":" assertEquals(output.getTask().toString(), \"[T][ ] hw\");","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ChrysanthemumT"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ChrysanthemumT"},"content":" System.out.println(\"fix your tests!!!!\");","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"ChrysanthemumT":26}},{"path":"src/test/java/duke/storage/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"package duke.storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"public class TaskTest {","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":" @Test","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ChrysanthemumT"},"content":" public void getStatusIcon_test() {","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ChrysanthemumT"},"content":" String sampleInput \u003d \"todo gym\";","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ChrysanthemumT"},"content":" Task sample \u003d new Task(sampleInput, \"gym\");","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ChrysanthemumT"},"content":" assertEquals(\"todo gym\", sample.getOriginalCommand());","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ChrysanthemumT"},"content":" assertEquals(\" \", sample.getStatusIcon());","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ChrysanthemumT"},"content":" sample.mark();","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ChrysanthemumT"},"content":" assertEquals(\"X\", sample.getStatusIcon());","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ChrysanthemumT"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ChrysanthemumT"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ChrysanthemumT"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"ChrysanthemumT":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ChrysanthemumT"},"content":"hi","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ChrysanthemumT"},"content":"deadline cs2101 by/ friday","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ChrysanthemumT"},"content":"event midterms /from idk /to idk","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ChrysanthemumT"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ChrysanthemumT"},"content":"todo cs2103t","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ChrysanthemumT"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ChrysanthemumT"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ChrysanthemumT"},"content":"list","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ChrysanthemumT":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":"ChrysanthemumT"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"ChrysanthemumT":1,"-":20}}] diff --git a/ChrysanthemumT_ip_master/commits.json b/ChrysanthemumT_ip_master/commits.json index 6ac8b9a9..9e1729d5 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":"","fileTypesAndContributionMap":{}},{"hash":"192f8ad8f163d4141520b404055332f22c79c20f","isMergeCommit":false,"messageTitle":"Fix bug relating to the path of the saved file","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":35,"deletions":7}}},{"hash":"c6ebc23caf78e4da585bb684b3fd7d6f8d5a6557","isMergeCommit":false,"messageTitle":"Add function to check ISO date","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"9c360e21c127856583bb549906822a13cf022ac0","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-31","commitResults":[{"hash":"a0cb247aa873fd3dc3d4827d8e9f097571b2b8eb","isMergeCommit":false,"messageTitle":"Add Date and Time to Tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":462,"deletions":216}}},{"hash":"bed23c7a0afa70f7666215696ca3c50cb0dc28b0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-01","commitResults":[{"hash":"b2844be2ce4675cac60ee6c03a7aaa555a6c6676","isMergeCommit":false,"messageTitle":"Refactor project to include packages","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3},"java":{"insertions":156,"deletions":82},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"0b8b6b12187e7f99484b76f233b0087bdcee53ff","isMergeCommit":false,"messageTitle":"Refactor packages to subpackages of duke","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":38,"deletions":45}}},{"hash":"da9c27b826440bfd68e02da6cb96b54e3edf3d24","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"baec850df8ccf7af85571d5dea1bed04353cbaf3","isMergeCommit":false,"messageTitle":"Add Junit Tests for Parser and Task","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":0}}},{"hash":"7b28916f9ef8e6d94a431140d0939903200bcc15","isMergeCommit":false,"messageTitle":"Update savefile.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":4}}},{"hash":"93d019ae11cb6871da5791e4ae4e1619df653db7","isMergeCommit":false,"messageTitle":"Add HHmm time format to Parser","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"txt":{"insertions":4,"deletions":4},"java":{"insertions":16,"deletions":13}}},{"hash":"ecd1c7893896e06ec8964c572796a6e54022c7eb","isMergeCommit":true,"messageTitle":"Fix merge conflict occuring in savefile.txt","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c95d890600106c6ff6f03d147ee62b7cf0c9a2b8","isMergeCommit":false,"messageTitle":"Add JavaDoc to all Classes and methods","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":422,"deletions":2}}},{"hash":"cabda1efb35adedf1bdd31fcee7f30834c0e9014","isMergeCommit":false,"messageTitle":"Fix Style errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":14}}},{"hash":"891e125d31198ecee24249743c0b1a341d5107ab","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"9af45b8dac4647ad5c55226076d35cc49acf4e24","isMergeCommit":false,"messageTitle":"Add a way to find keyword in tasklist","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1},"java":{"insertions":98,"deletions":1}}},{"hash":"8fbe64879428936d76c313a8b01e42d91fb76f9b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ChrysanthemumT":{"java":1445,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":16}},"authorContributionVariance":{"ChrysanthemumT":93530.94},"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":{}},{"hash":"192f8ad8f163d4141520b404055332f22c79c20f","isMergeCommit":false,"messageTitle":"Fix bug relating to the path of the saved file","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":35,"deletions":7}}},{"hash":"c6ebc23caf78e4da585bb684b3fd7d6f8d5a6557","isMergeCommit":false,"messageTitle":"Add function to check ISO date","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"9c360e21c127856583bb549906822a13cf022ac0","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-01-31","commitResults":[{"hash":"a0cb247aa873fd3dc3d4827d8e9f097571b2b8eb","isMergeCommit":false,"messageTitle":"Add Date and Time to Tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":462,"deletions":216}}},{"hash":"bed23c7a0afa70f7666215696ca3c50cb0dc28b0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-01","commitResults":[{"hash":"b2844be2ce4675cac60ee6c03a7aaa555a6c6676","isMergeCommit":false,"messageTitle":"Refactor project to include packages","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3},"java":{"insertions":156,"deletions":82},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"0b8b6b12187e7f99484b76f233b0087bdcee53ff","isMergeCommit":false,"messageTitle":"Refactor packages to subpackages of duke","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":38,"deletions":45}}},{"hash":"da9c27b826440bfd68e02da6cb96b54e3edf3d24","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"baec850df8ccf7af85571d5dea1bed04353cbaf3","isMergeCommit":false,"messageTitle":"Add Junit Tests for Parser and Task","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":0}}},{"hash":"7b28916f9ef8e6d94a431140d0939903200bcc15","isMergeCommit":false,"messageTitle":"Update savefile.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":4}}},{"hash":"93d019ae11cb6871da5791e4ae4e1619df653db7","isMergeCommit":false,"messageTitle":"Add HHmm time format to Parser","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"txt":{"insertions":4,"deletions":4},"java":{"insertions":16,"deletions":13}}},{"hash":"ecd1c7893896e06ec8964c572796a6e54022c7eb","isMergeCommit":true,"messageTitle":"Fix merge conflict occuring in savefile.txt","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c95d890600106c6ff6f03d147ee62b7cf0c9a2b8","isMergeCommit":false,"messageTitle":"Add JavaDoc to all Classes and methods","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":422,"deletions":2}}},{"hash":"cabda1efb35adedf1bdd31fcee7f30834c0e9014","isMergeCommit":false,"messageTitle":"Fix Style errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":14}}},{"hash":"891e125d31198ecee24249743c0b1a341d5107ab","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"9af45b8dac4647ad5c55226076d35cc49acf4e24","isMergeCommit":false,"messageTitle":"Add a way to find keyword in tasklist","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1},"java":{"insertions":98,"deletions":1}}},{"hash":"8fbe64879428936d76c313a8b01e42d91fb76f9b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-07","commitResults":[{"hash":"343041cf314b8d0ad0f7f430eb1192d5728c02b7","isMergeCommit":false,"messageTitle":"Add checkstyle to gradle build","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":8,"deletions":1},"java":{"insertions":118,"deletions":113}}},{"hash":"475eacd9dec26f68ad4004edb3a1a71328a6df51","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CheckStyle\u0027","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ChrysanthemumT":{"java":1450,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":9,"txt":16}},"authorContributionVariance":{"ChrysanthemumT":72682.54},"authorDisplayNameMap":{"ChrysanthemumT":"CS2103T-W11-3 WANG..HONG"}} diff --git a/HM33-Stu_ip_master/authorship.json b/HM33-Stu_ip_master/authorship.json index bd3568d2..af114884 100644 --- a/HM33-Stu_ip_master/authorship.json +++ b/HM33-Stu_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Hari.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"import java.io.File;","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":" * Class representing a task management chatbot named Hari.","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"class HandlerBot {","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":" private static final String FOLDER_PATH \u003d \".\" + File.separator + \"data\";","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":" private static final String FILE_PATH \u003d FOLDER_PATH + File.separator + \"hari.txt\";","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":" * Main class for the Hari chatbot.","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":" public Task[] arrTasks; // To store tasks created by the user for easy retrieval and listing","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":" public int counterTasks; // Counter for assumption that there are no more than 100 tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":" // Class object","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":" public HandlerBot() {","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":" arrTasks \u003d new Task[100]; // Assumption that there are no more than 100 tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":" counterTasks \u003d 0; // Counter for the number of tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" // Class for task (called Task)","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" public class Task {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":" private String summary; // Description of tasks","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":" private boolean completion; // To check if a task is or is not completed","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" private String taskType; // To identify the type of task","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" private LocalDate deadline; // Add LocalDate for deadline","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":" private String timerStart; // Start time for Event tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" private String timerEnd; // End time for Event tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":" private String deadlineStat; // Deadline for Deadline tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" // Constructor for To Do tasks","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" public Task(String summary) {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":" this.summary \u003d summary;","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":" this.completion \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" this.taskType \u003d \"T\";","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":" this.deadline \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" this.timerStart \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":" this.timerEnd \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":" // Constructor for Deadline tasks","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":" public Task(String summary, String deadlineStat) {","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":" this.summary \u003d summary;","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":" this.completion \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":" this.taskType \u003d \"D\";","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":" this.deadline \u003d parseDeadline(deadlineStat);","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":" this.timerStart \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":" this.timerEnd \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"HM33-Stu"},"content":" // Constructor for Event tasks","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"HM33-Stu"},"content":" public Task(String summary, String startTime, String endTime) {","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"HM33-Stu"},"content":" this.summary \u003d summary;","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"HM33-Stu"},"content":" this.completion \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"HM33-Stu"},"content":" this.taskType \u003d \"E\";","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"HM33-Stu"},"content":" this.deadline \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"HM33-Stu"},"content":" this.timerStart \u003d startTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"HM33-Stu"},"content":" this.timerEnd \u003d endTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"HM33-Stu"},"content":" // Additional method to parse deadline string into LocalDate","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"HM33-Stu"},"content":" private LocalDate parseDeadline(String deadlineStat) {","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"HM33-Stu"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"HM33-Stu"},"content":" // Parse the date string into a LocalDate object","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"HM33-Stu"},"content":" return LocalDate.parse(deadlineStat, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"HM33-Stu"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"HM33-Stu"},"content":" // Handle parsing exception (invalid date format)","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Error when parsing deadline. Please use the format yyyy-MM-dd.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"HM33-Stu"},"content":" return null;","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"HM33-Stu"},"content":" // To mark as completed","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"HM33-Stu"},"content":" public void completionMark() {","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"HM33-Stu"},"content":" this.completion \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"HM33-Stu"},"content":" // To unmark completed tasks","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"HM33-Stu"},"content":" public void incompletionMark() {","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"HM33-Stu"},"content":" this.completion \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"HM33-Stu"},"content":" // For displaying the X or [ ] depending on completion status","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"HM33-Stu"},"content":" public String completionStatus() {","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"HM33-Stu"},"content":" return (completion ? \"X\" : \" \"); // To display the X or [ ]","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"HM33-Stu"},"content":" // For displaying task description","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"HM33-Stu"},"content":" public String summaryStatus() {","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"HM33-Stu"},"content":" return summary;","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"HM33-Stu"},"content":" // For displaying the task type","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"HM33-Stu"},"content":" public String taskStatus() {","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"HM33-Stu"},"content":" return taskType;","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"HM33-Stu"},"content":" // For displaying start time of event tasks","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"HM33-Stu"},"content":" public String timerStartStatus() {","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"HM33-Stu"},"content":" return timerStart;","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"HM33-Stu"},"content":" // For displaying end time of event tasks","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"HM33-Stu"},"content":" public String timerEndStatus() {","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"HM33-Stu"},"content":" return timerEnd;","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"HM33-Stu"},"content":" // For displaying deadline of deadline tasks","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"HM33-Stu"},"content":" public String deadlineStatus() {","lastModifiedDate":"2024-02-06"},{"lineNumber":119,"author":{"gitId":"HM33-Stu"},"content":" return deadlineStat;","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"HM33-Stu"},"content":" // Additional method to check if task description is empty","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"HM33-Stu"},"content":" public boolean summaryEmpty() {","lastModifiedDate":"2024-02-06"},{"lineNumber":124,"author":{"gitId":"HM33-Stu"},"content":" return summary.trim().isEmpty();","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"HM33-Stu"},"content":" // Additional method to display deadline in a different format","lastModifiedDate":"2024-02-06"},{"lineNumber":128,"author":{"gitId":"HM33-Stu"},"content":" public String formattedDeadline() {","lastModifiedDate":"2024-02-06"},{"lineNumber":129,"author":{"gitId":"HM33-Stu"},"content":" return deadline.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":130,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":131,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"HM33-Stu"},"content":" // Task finder","lastModifiedDate":"2024-02-06"},{"lineNumber":134,"author":{"gitId":"HM33-Stu"},"content":" public void findTask(String keyword) {","lastModifiedDate":"2024-02-06"},{"lineNumber":135,"author":{"gitId":"HM33-Stu"},"content":" boolean found \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":136,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-02-06"},{"lineNumber":137,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Here are the matching tasks in your list:\");","lastModifiedDate":"2024-02-06"},{"lineNumber":138,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":139,"author":{"gitId":"HM33-Stu"},"content":" for (int i \u003d 0; i \u003c counterTasks; i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":140,"author":{"gitId":"HM33-Stu"},"content":" if (arrTasks[i].summaryStatus().toLowerCase().contains(keyword.toLowerCase())) {","lastModifiedDate":"2024-02-06"},{"lineNumber":141,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" \" + (i + 1) + \".\" + arrTasks[i].summaryStatus() + \" \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":142,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[i].taskStatus().equals(\"E\") ?","lastModifiedDate":"2024-02-06"},{"lineNumber":143,"author":{"gitId":"HM33-Stu"},"content":" \" (from: \" + arrTasks[i].timerStartStatus() + \" to: \" + arrTasks[i].timerEndStatus() + \")\" :","lastModifiedDate":"2024-02-06"},{"lineNumber":144,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[i].taskStatus().equals(\"D\") ? \" (by: \" + arrTasks[i].deadlineStatus() + \")\" : \"\")));","lastModifiedDate":"2024-02-06"},{"lineNumber":145,"author":{"gitId":"HM33-Stu"},"content":" found \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":146,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":147,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":148,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":149,"author":{"gitId":"HM33-Stu"},"content":" if (!found) {","lastModifiedDate":"2024-02-06"},{"lineNumber":150,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" No matching tasks found.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":151,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":152,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":153,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-02-06"},{"lineNumber":154,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":155,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":156,"author":{"gitId":"HM33-Stu"},"content":" // Function to save tasks to a file","lastModifiedDate":"2024-02-05"},{"lineNumber":157,"author":{"gitId":"HM33-Stu"},"content":" private void saveTasksToFile() {","lastModifiedDate":"2024-02-05"},{"lineNumber":158,"author":{"gitId":"HM33-Stu"},"content":" try (FileWriter writer \u003d new FileWriter(FILE_PATH)) {","lastModifiedDate":"2024-02-05"},{"lineNumber":159,"author":{"gitId":"HM33-Stu"},"content":" for (int i \u003d 0; i \u003c counterTasks; i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":160,"author":{"gitId":"HM33-Stu"},"content":" Task task \u003d arrTasks[i];","lastModifiedDate":"2024-02-06"},{"lineNumber":161,"author":{"gitId":"HM33-Stu"},"content":" writer.write(task.taskStatus() + \" | \" + (task.completion ? \"1\" : \"0\") + \" | \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":162,"author":{"gitId":"HM33-Stu"},"content":" task.summaryStatus() + \" | \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":163,"author":{"gitId":"HM33-Stu"},"content":" (task.taskStatus().equals(\"D\") ? task.deadlineStatus() : \"\") + \" | \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":164,"author":{"gitId":"HM33-Stu"},"content":" (task.taskStatus().equals(\"E\") ? task.timerStartStatus() + \" to \" + task.timerEndStatus() : \"\") + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":165,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":166,"author":{"gitId":"HM33-Stu"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":167,"author":{"gitId":"HM33-Stu"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-05"},{"lineNumber":168,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":169,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":170,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":171,"author":{"gitId":"HM33-Stu"},"content":" // Function to load data from the file","lastModifiedDate":"2024-02-05"},{"lineNumber":172,"author":{"gitId":"HM33-Stu"},"content":" public void loadFromFile() {","lastModifiedDate":"2024-02-05"},{"lineNumber":173,"author":{"gitId":"HM33-Stu"},"content":" File folder \u003d new File(FOLDER_PATH);","lastModifiedDate":"2024-02-05"},{"lineNumber":174,"author":{"gitId":"HM33-Stu"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-02-05"},{"lineNumber":175,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":176,"author":{"gitId":"HM33-Stu"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":177,"author":{"gitId":"HM33-Stu"},"content":" // Create the folder if it doesn\u0027t exist","lastModifiedDate":"2024-02-05"},{"lineNumber":178,"author":{"gitId":"HM33-Stu"},"content":" if (!folder.exists()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":179,"author":{"gitId":"HM33-Stu"},"content":" if (folder.mkdirs()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":180,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Data folder created.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":181,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":182,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Failed to create data folder.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":183,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":184,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":185,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":186,"author":{"gitId":"HM33-Stu"},"content":" // Create the file if it doesn\u0027t exist","lastModifiedDate":"2024-02-05"},{"lineNumber":187,"author":{"gitId":"HM33-Stu"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":188,"author":{"gitId":"HM33-Stu"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":189,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Data file created.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":190,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":191,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Failed to create data file.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":192,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":193,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":194,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":195,"author":{"gitId":"HM33-Stu"},"content":" // Load tasks from the file","lastModifiedDate":"2024-02-05"},{"lineNumber":196,"author":{"gitId":"HM33-Stu"},"content":" loadTasksFromFile();","lastModifiedDate":"2024-02-05"},{"lineNumber":197,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":198,"author":{"gitId":"HM33-Stu"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":199,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Error handling file operations: \" + e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":200,"author":{"gitId":"HM33-Stu"},"content":" } catch (CorruptedDataException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":201,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Error loading data from file. The file may be corrupted.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":202,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":203,"author":{"gitId":"HM33-Stu"},"content":" // Handle the corrupted file situation (prompt the user, take corrective actions, etc.)","lastModifiedDate":"2024-02-05"},{"lineNumber":204,"author":{"gitId":"HM33-Stu"},"content":" // For example, you may choose to delete the corrupted file and create a new one.","lastModifiedDate":"2024-02-05"},{"lineNumber":205,"author":{"gitId":"HM33-Stu"},"content":" if (file.exists() \u0026\u0026 file.delete()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":206,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Corrupted file deleted. A new file will be created.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":207,"author":{"gitId":"HM33-Stu"},"content":" loadFromFile(); // Retry loading from file","lastModifiedDate":"2024-02-05"},{"lineNumber":208,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":209,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Failed to delete corrupted file. Please create a new file manually.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":210,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":211,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":212,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":213,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":214,"author":{"gitId":"HM33-Stu"},"content":" // Function to load tasks from the file","lastModifiedDate":"2024-02-05"},{"lineNumber":215,"author":{"gitId":"HM33-Stu"},"content":" private void loadTasksFromFile() throws CorruptedDataException {","lastModifiedDate":"2024-02-05"},{"lineNumber":216,"author":{"gitId":"HM33-Stu"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(FILE_PATH))) {","lastModifiedDate":"2024-02-05"},{"lineNumber":217,"author":{"gitId":"HM33-Stu"},"content":" String line;","lastModifiedDate":"2024-02-05"},{"lineNumber":218,"author":{"gitId":"HM33-Stu"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-02-05"},{"lineNumber":219,"author":{"gitId":"HM33-Stu"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-02-05"},{"lineNumber":220,"author":{"gitId":"HM33-Stu"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-02-05"},{"lineNumber":221,"author":{"gitId":"HM33-Stu"},"content":" boolean completion \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-02-05"},{"lineNumber":222,"author":{"gitId":"HM33-Stu"},"content":" String summary \u003d parts[2];","lastModifiedDate":"2024-02-05"},{"lineNumber":223,"author":{"gitId":"HM33-Stu"},"content":" Task task;","lastModifiedDate":"2024-02-06"},{"lineNumber":224,"author":{"gitId":"HM33-Stu"},"content":" if (type.equals(\"T\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":225,"author":{"gitId":"HM33-Stu"},"content":" task \u003d new Task(summary);","lastModifiedDate":"2024-02-06"},{"lineNumber":226,"author":{"gitId":"HM33-Stu"},"content":" } else if (type.equals(\"D\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":227,"author":{"gitId":"HM33-Stu"},"content":" task \u003d new Task(summary, parts[3]);","lastModifiedDate":"2024-02-06"},{"lineNumber":228,"author":{"gitId":"HM33-Stu"},"content":" } else if (type.equals(\"E\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":229,"author":{"gitId":"HM33-Stu"},"content":" task \u003d new Task(summary, parts[3], parts[4]);","lastModifiedDate":"2024-02-06"},{"lineNumber":230,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":231,"author":{"gitId":"HM33-Stu"},"content":" // Handle unrecognized task type","lastModifiedDate":"2024-02-05"},{"lineNumber":232,"author":{"gitId":"HM33-Stu"},"content":" throw new CorruptedDataException(\"Unrecognized task type in the file.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":233,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":234,"author":{"gitId":"HM33-Stu"},"content":" if (completion) {","lastModifiedDate":"2024-02-05"},{"lineNumber":235,"author":{"gitId":"HM33-Stu"},"content":" task.completionMark();","lastModifiedDate":"2024-02-06"},{"lineNumber":236,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":237,"author":{"gitId":"HM33-Stu"},"content":" arrTasks[counterTasks++] \u003d task;","lastModifiedDate":"2024-02-06"},{"lineNumber":238,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":239,"author":{"gitId":"HM33-Stu"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":240,"author":{"gitId":"HM33-Stu"},"content":" // Handle file not found or other IO exceptions","lastModifiedDate":"2024-02-05"},{"lineNumber":241,"author":{"gitId":"HM33-Stu"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-05"},{"lineNumber":242,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":243,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":244,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":245,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":246,"author":{"gitId":"HM33-Stu"},"content":" * Custom exception class for handling corrupted data during file operations.","lastModifiedDate":"2024-02-06"},{"lineNumber":247,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":248,"author":{"gitId":"HM33-Stu"},"content":" class CorruptedDataException extends Exception {","lastModifiedDate":"2024-02-05"},{"lineNumber":249,"author":{"gitId":"HM33-Stu"},"content":" public CorruptedDataException(String message) {","lastModifiedDate":"2024-02-05"},{"lineNumber":250,"author":{"gitId":"HM33-Stu"},"content":" super(message);","lastModifiedDate":"2024-02-05"},{"lineNumber":251,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":252,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":253,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":254,"author":{"gitId":"HM33-Stu"},"content":" // Function that handles the greeting message","lastModifiedDate":"2024-01-25"},{"lineNumber":255,"author":{"gitId":"HM33-Stu"},"content":" public void messageGreeting() {","lastModifiedDate":"2024-02-06"},{"lineNumber":256,"author":{"gitId":"HM33-Stu"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":257,"author":{"gitId":"HM33-Stu"},"content":" // Load tasks from file when the chatbot starts up","lastModifiedDate":"2024-02-05"},{"lineNumber":258,"author":{"gitId":"HM33-Stu"},"content":" loadTasksFromFile();","lastModifiedDate":"2024-02-05"},{"lineNumber":259,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":260,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Hey! I\u0027m Hari!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":261,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" How may I be of service today?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":262,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":263,"author":{"gitId":"HM33-Stu"},"content":" } catch (CorruptedDataException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":264,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Error loading data from file. File may be corrupted.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":265,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":266,"author":{"gitId":"HM33-Stu"},"content":" // Handle the corrupted file situation","lastModifiedDate":"2024-02-05"},{"lineNumber":267,"author":{"gitId":"HM33-Stu"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-02-05"},{"lineNumber":268,"author":{"gitId":"HM33-Stu"},"content":" if (file.exists() \u0026\u0026 file.delete()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":269,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Corrupted file deleted. A new file will be created.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":270,"author":{"gitId":"HM33-Stu"},"content":" messageGreeting(); // Retry loading from file","lastModifiedDate":"2024-02-06"},{"lineNumber":271,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":272,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Failed to delete corrupted file. Please create new file manually.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":273,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":274,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":275,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":276,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":277,"author":{"gitId":"HM33-Stu"},"content":" // Function that handles the exit message","lastModifiedDate":"2024-01-25"},{"lineNumber":278,"author":{"gitId":"HM33-Stu"},"content":" public void messageFarewell() {","lastModifiedDate":"2024-02-06"},{"lineNumber":279,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":280,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Au revoir! Till we meet again!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":281,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":282,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":283,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":284,"author":{"gitId":"HM33-Stu"},"content":" // Function that handles and echoes user input (this is maintained as not all inputs are tasks)","lastModifiedDate":"2024-01-25"},{"lineNumber":285,"author":{"gitId":"HM33-Stu"},"content":" public void userEchoedInput(String readerInput) {","lastModifiedDate":"2024-02-06"},{"lineNumber":286,"author":{"gitId":"HM33-Stu"},"content":" if (readerInput.equalsIgnoreCase(\"list\")) // To list out tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":287,"author":{"gitId":"HM33-Stu"},"content":" {","lastModifiedDate":"2024-01-25"},{"lineNumber":288,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":289,"author":{"gitId":"HM33-Stu"},"content":" taskingsDisplay();","lastModifiedDate":"2024-02-06"},{"lineNumber":290,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":291,"author":{"gitId":"HM33-Stu"},"content":" } else if (readerInput.equalsIgnoreCase(\"bye\")) // To exit the chatbot program","lastModifiedDate":"2024-02-06"},{"lineNumber":292,"author":{"gitId":"HM33-Stu"},"content":" {","lastModifiedDate":"2024-01-25"},{"lineNumber":293,"author":{"gitId":"HM33-Stu"},"content":" messageFarewell();","lastModifiedDate":"2024-02-06"},{"lineNumber":294,"author":{"gitId":"HM33-Stu"},"content":" } else // Anything else, is assumed to be a new task to add","lastModifiedDate":"2024-01-28"},{"lineNumber":295,"author":{"gitId":"HM33-Stu"},"content":" {","lastModifiedDate":"2024-01-25"},{"lineNumber":296,"author":{"gitId":"HM33-Stu"},"content":" additionTaskings(readerInput);","lastModifiedDate":"2024-02-06"},{"lineNumber":297,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":298,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":299,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":300,"author":{"gitId":"HM33-Stu"},"content":" // Function to add tasks","lastModifiedDate":"2024-01-25"},{"lineNumber":301,"author":{"gitId":"HM33-Stu"},"content":" // No modification done to userEchoedInput function as not all inputs are tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":302,"author":{"gitId":"HM33-Stu"},"content":" public void additionTaskings(String taskings) {","lastModifiedDate":"2024-02-06"},{"lineNumber":303,"author":{"gitId":"HM33-Stu"},"content":" // Display message based on the task type","lastModifiedDate":"2024-01-28"},{"lineNumber":304,"author":{"gitId":"HM33-Stu"},"content":" if (taskings.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":305,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":306,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":307,"author":{"gitId":"HM33-Stu"},"content":" arrTasks[counterTasks] \u003d new Task(taskings.substring(5).trim()); // 5 because of the word to do","lastModifiedDate":"2024-02-06"},{"lineNumber":308,"author":{"gitId":"HM33-Stu"},"content":" } else if (taskings.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":309,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":310,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":311,"author":{"gitId":"HM33-Stu"},"content":" String[] parts \u003d taskings.substring(8).trim().split(\"/by\"); // 8 because of the word deadline","lastModifiedDate":"2024-01-28"},{"lineNumber":312,"author":{"gitId":"HM33-Stu"},"content":" arrTasks[counterTasks] \u003d new Task(parts[0].trim(), parts[1].trim());","lastModifiedDate":"2024-02-06"},{"lineNumber":313,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" \" + \"[\" + arrTasks[counterTasks].taskStatus() + \"]\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":314,"author":{"gitId":"HM33-Stu"},"content":" \"[\" + arrTasks[counterTasks].completionStatus() + \"]\" + arrTasks[counterTasks].summaryStatus() +","lastModifiedDate":"2024-02-06"},{"lineNumber":315,"author":{"gitId":"HM33-Stu"},"content":" \" (by: \" + arrTasks[counterTasks].formattedDeadline() + \")\");","lastModifiedDate":"2024-02-06"},{"lineNumber":316,"author":{"gitId":"HM33-Stu"},"content":" } else if (taskings.startsWith(\"event\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":317,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":318,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":319,"author":{"gitId":"HM33-Stu"},"content":" String[] parts \u003d taskings.substring(5).trim().split(\"/from|/to\"); // 5 because of the word event","lastModifiedDate":"2024-01-28"},{"lineNumber":320,"author":{"gitId":"HM33-Stu"},"content":" arrTasks[counterTasks] \u003d new Task(parts[0].trim(), parts[1].trim(), parts[2].trim());","lastModifiedDate":"2024-02-06"},{"lineNumber":321,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" \" + \"[\" + arrTasks[counterTasks].taskStatus() + \"]\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":322,"author":{"gitId":"HM33-Stu"},"content":" \"[\" + arrTasks[counterTasks].completionStatus() + \"]\" +","lastModifiedDate":"2024-02-06"},{"lineNumber":323,"author":{"gitId":"HM33-Stu"},"content":" arrTasks[counterTasks].summaryStatus() +","lastModifiedDate":"2024-02-06"},{"lineNumber":324,"author":{"gitId":"HM33-Stu"},"content":" \" (from: \" + arrTasks[counterTasks].timerStartStatus() + \" to: \" + arrTasks[counterTasks].timerEndStatus() + \")\");","lastModifiedDate":"2024-02-06"},{"lineNumber":325,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":326,"author":{"gitId":"HM33-Stu"},"content":" // Error handlings for missing task types","lastModifiedDate":"2024-02-06"},{"lineNumber":327,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":328,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" SAD! Please start your task with \u0027todo\u0027, \u0027deadline\u0027, or \u0027event\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":329,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":330,"author":{"gitId":"HM33-Stu"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":331,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":332,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":333,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Now you have \" + counterTasks + \" task(s) in the list\");","lastModifiedDate":"2024-02-06"},{"lineNumber":334,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":335,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":336,"author":{"gitId":"HM33-Stu"},"content":" // Save tasks to file whenever the task list changes","lastModifiedDate":"2024-02-05"},{"lineNumber":337,"author":{"gitId":"HM33-Stu"},"content":" saveTasksToFile();","lastModifiedDate":"2024-02-05"},{"lineNumber":338,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":339,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":340,"author":{"gitId":"HM33-Stu"},"content":" // Function to display tasks","lastModifiedDate":"2024-01-25"},{"lineNumber":341,"author":{"gitId":"HM33-Stu"},"content":" // No modification done to userEchoedInput function as not all inputs are tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":342,"author":{"gitId":"HM33-Stu"},"content":" public void taskingsDisplay() {","lastModifiedDate":"2024-02-06"},{"lineNumber":343,"author":{"gitId":"HM33-Stu"},"content":" if (counterTasks \u003d\u003d 0) {","lastModifiedDate":"2024-02-06"},{"lineNumber":344,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":345,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Your task list is empty. Add tasks by simply typing them in.\"); // If there are no tasks, a message to guide the user","lastModifiedDate":"2024-01-28"},{"lineNumber":346,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":347,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":348,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":349,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Here are your tasks:\"); // Display all tasks","lastModifiedDate":"2024-01-25"},{"lineNumber":350,"author":{"gitId":"HM33-Stu"},"content":" for (int i \u003d 0; i \u003c counterTasks; i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":351,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" \" + (i + 1) + \". \" + \"[\" + arrTasks[i].taskStatus() + \"]\" + \"[\" + arrTasks[i].completionStatus() + \"]\" + arrTasks[i].summaryStatus() +","lastModifiedDate":"2024-02-06"},{"lineNumber":352,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[i].taskStatus().equals(\"E\") ?","lastModifiedDate":"2024-02-06"},{"lineNumber":353,"author":{"gitId":"HM33-Stu"},"content":" \" (from: \" + arrTasks[i].timerStartStatus() + \" to: \" + arrTasks[i].timerEndStatus() + \")\" :","lastModifiedDate":"2024-02-06"},{"lineNumber":354,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[i].taskStatus().equals(\"D\") ? \" (by: \" + arrTasks[i].deadlineStatus() + \")\" : \"\")));","lastModifiedDate":"2024-02-06"},{"lineNumber":355,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":356,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":357,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":358,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":359,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":360,"author":{"gitId":"HM33-Stu"},"content":" // Function to mark task as completed","lastModifiedDate":"2024-02-06"},{"lineNumber":361,"author":{"gitId":"HM33-Stu"},"content":" public void completionMark(int taskRecorder) {","lastModifiedDate":"2024-02-06"},{"lineNumber":362,"author":{"gitId":"HM33-Stu"},"content":" if (taskRecorder \u003e 0 \u0026\u0026 taskRecorder \u003c\u003d counterTasks) // If there are tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":363,"author":{"gitId":"HM33-Stu"},"content":" {","lastModifiedDate":"2024-01-27"},{"lineNumber":364,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":365,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Another one in the bag! Well done!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":366,"author":{"gitId":"HM33-Stu"},"content":" arrTasks[taskRecorder - 1].completionMark(); // Mark as complete","lastModifiedDate":"2024-02-06"},{"lineNumber":367,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" \" + \"[\" + arrTasks[taskRecorder - 1].taskStatus() + \"]\" + \"[\" + arrTasks[taskRecorder - 1].completionStatus() + \"]\" + arrTasks[taskRecorder - 1].summaryStatus() + \" \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":368,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[taskRecorder - 1].taskStatus().equals(\"E\") ?","lastModifiedDate":"2024-02-06"},{"lineNumber":369,"author":{"gitId":"HM33-Stu"},"content":" \" (from: \" + arrTasks[taskRecorder - 1].timerStartStatus() + \" to: \" + arrTasks[taskRecorder - 1].timerEndStatus() + \")\" :","lastModifiedDate":"2024-02-06"},{"lineNumber":370,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[taskRecorder - 1].taskStatus().equals(\"D\") ? \" (by: \" + arrTasks[taskRecorder - 1].deadlineStatus() + \")\" : \"\")));","lastModifiedDate":"2024-02-06"},{"lineNumber":371,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":372,"author":{"gitId":"HM33-Stu"},"content":" } else // Error handling: There are no tasks or invalid task number","lastModifiedDate":"2024-01-29"},{"lineNumber":373,"author":{"gitId":"HM33-Stu"},"content":" {","lastModifiedDate":"2024-01-27"},{"lineNumber":374,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":375,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Hmmm...I don\u0027t seem to have a task under this number\");","lastModifiedDate":"2024-01-28"},{"lineNumber":376,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":377,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":378,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":379,"author":{"gitId":"HM33-Stu"},"content":" // Save tasks to file whenever task list changes","lastModifiedDate":"2024-02-06"},{"lineNumber":380,"author":{"gitId":"HM33-Stu"},"content":" saveTasksToFile();","lastModifiedDate":"2024-02-05"},{"lineNumber":381,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":382,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":383,"author":{"gitId":"HM33-Stu"},"content":" // Function to unmark previously marked as completed task","lastModifiedDate":"2024-01-29"},{"lineNumber":384,"author":{"gitId":"HM33-Stu"},"content":" public void incompletionMark(int taskRecorder) {","lastModifiedDate":"2024-02-06"},{"lineNumber":385,"author":{"gitId":"HM33-Stu"},"content":" if (taskRecorder \u003e 0 \u0026\u0026 taskRecorder \u003c\u003d counterTasks) // If there are tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":386,"author":{"gitId":"HM33-Stu"},"content":" {","lastModifiedDate":"2024-01-27"},{"lineNumber":387,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":388,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Oh dear, better get on it!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":389,"author":{"gitId":"HM33-Stu"},"content":" arrTasks[taskRecorder - 1].incompletionMark(); // Mark as incomplete","lastModifiedDate":"2024-02-06"},{"lineNumber":390,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" \" + \"[\" + arrTasks[taskRecorder - 1].taskStatus() + \"]\" + \"[\" + arrTasks[taskRecorder - 1].completionStatus() + \"]\" + arrTasks[taskRecorder - 1].summaryStatus() + \" \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":391,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[taskRecorder - 1].taskStatus().equals(\"E\") ?","lastModifiedDate":"2024-02-06"},{"lineNumber":392,"author":{"gitId":"HM33-Stu"},"content":" \" (from: \" + arrTasks[taskRecorder - 1].timerStartStatus() + \" to: \" + arrTasks[taskRecorder - 1].timerEndStatus() + \")\" :","lastModifiedDate":"2024-02-06"},{"lineNumber":393,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[taskRecorder - 1].taskStatus().equals(\"D\") ? \" (by: \" + arrTasks[taskRecorder - 1].deadlineStatus() + \")\" : \"\")));","lastModifiedDate":"2024-02-06"},{"lineNumber":394,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":395,"author":{"gitId":"HM33-Stu"},"content":" } else // Error handling: There are no tasks or invalid task number","lastModifiedDate":"2024-01-29"},{"lineNumber":396,"author":{"gitId":"HM33-Stu"},"content":" {","lastModifiedDate":"2024-01-27"},{"lineNumber":397,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":398,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Hmmm...I don\u0027t seem to have a task under this number\");","lastModifiedDate":"2024-01-28"},{"lineNumber":399,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":400,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":401,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":402,"author":{"gitId":"HM33-Stu"},"content":" // Save tasks to file whenever the task list changes","lastModifiedDate":"2024-02-05"},{"lineNumber":403,"author":{"gitId":"HM33-Stu"},"content":" saveTasksToFile();","lastModifiedDate":"2024-02-05"},{"lineNumber":404,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":405,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":406,"author":{"gitId":"HM33-Stu"},"content":" // Function to delete a task","lastModifiedDate":"2024-01-29"},{"lineNumber":407,"author":{"gitId":"HM33-Stu"},"content":" public void taskDeleter(int taskNumber) {","lastModifiedDate":"2024-02-06"},{"lineNumber":408,"author":{"gitId":"HM33-Stu"},"content":" if (taskNumber \u003e 0 \u0026\u0026 taskNumber \u003c\u003d counterTasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":409,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":410,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Okay, I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":411,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" \" + \"[\" + arrTasks[taskNumber - 1].taskStatus() + \"]\" + \"[\" + arrTasks[taskNumber - 1].completionStatus() + \"]\" + arrTasks[taskNumber - 1].summaryStatus() + \" \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":412,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[taskNumber - 1].taskStatus().equals(\"E\") ?","lastModifiedDate":"2024-02-06"},{"lineNumber":413,"author":{"gitId":"HM33-Stu"},"content":" \" (from: \" + arrTasks[taskNumber - 1].timerStartStatus() + \" to: \" + arrTasks[taskNumber - 1].timerEndStatus() + \")\" :","lastModifiedDate":"2024-02-06"},{"lineNumber":414,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[taskNumber - 1].taskStatus().equals(\"D\") ? \" (by: \" + arrTasks[taskNumber - 1].deadlineStatus() + \")\" : \"\")));","lastModifiedDate":"2024-02-06"},{"lineNumber":415,"author":{"gitId":"HM33-Stu"},"content":" // Shift tasks in the array to fill the gap","lastModifiedDate":"2024-01-29"},{"lineNumber":416,"author":{"gitId":"HM33-Stu"},"content":" for (int i \u003d taskNumber - 1; i \u003c counterTasks - 1; i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":417,"author":{"gitId":"HM33-Stu"},"content":" arrTasks[i] \u003d arrTasks[i + 1];","lastModifiedDate":"2024-02-06"},{"lineNumber":418,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":419,"author":{"gitId":"HM33-Stu"},"content":" arrTasks[counterTasks - 1] \u003d null; // Set the last element to null","lastModifiedDate":"2024-02-06"},{"lineNumber":420,"author":{"gitId":"HM33-Stu"},"content":" counterTasks--;","lastModifiedDate":"2024-02-06"},{"lineNumber":421,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Now you have \" + counterTasks + \" task(s) in the list\");","lastModifiedDate":"2024-02-06"},{"lineNumber":422,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":423,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":424,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":425,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Hmmm...I don\u0027t seem to have a task under this number\");","lastModifiedDate":"2024-01-29"},{"lineNumber":426,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":427,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":428,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":429,"author":{"gitId":"HM33-Stu"},"content":" // Save tasks to file whenever the task list changes","lastModifiedDate":"2024-02-05"},{"lineNumber":430,"author":{"gitId":"HM33-Stu"},"content":" saveTasksToFile();","lastModifiedDate":"2024-02-05"},{"lineNumber":431,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":432,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":433,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":434,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":435,"author":{"gitId":"HM33-Stu"},"content":" * Main method to run the Hari chatbot program.","lastModifiedDate":"2024-02-06"},{"lineNumber":436,"author":{"gitId":"HM33-Stu"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":437,"author":{"gitId":"HM33-Stu"},"content":" * @param args Command-line arguments (not used in this program).","lastModifiedDate":"2024-02-06"},{"lineNumber":438,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":439,"author":{"gitId":"HM33-Stu"},"content":"public class Hari {","lastModifiedDate":"2024-01-28"},{"lineNumber":440,"author":{"gitId":"HM33-Stu"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-28"},{"lineNumber":441,"author":{"gitId":"HM33-Stu"},"content":" Scanner inputRead \u003d new Scanner(System.in); // Scanner object to read and process user input","lastModifiedDate":"2024-02-06"},{"lineNumber":442,"author":{"gitId":"HM33-Stu"},"content":" HandlerBot hari \u003d new HandlerBot(); // Create a new \"Hari\" chatbot (HandlerBot object)","lastModifiedDate":"2024-02-06"},{"lineNumber":443,"author":{"gitId":"HM33-Stu"},"content":" hari.messageGreeting(); // Call the messageGreeting function to greet the user","lastModifiedDate":"2024-02-06"},{"lineNumber":444,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":445,"author":{"gitId":"HM33-Stu"},"content":" String readerInput; // To store user input","lastModifiedDate":"2024-02-06"},{"lineNumber":446,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":447,"author":{"gitId":"HM33-Stu"},"content":" while (true) // Modified do-while to a while as I have now streamlined all the code in the main body and reduced the number of function calls","lastModifiedDate":"2024-01-28"},{"lineNumber":448,"author":{"gitId":"HM33-Stu"},"content":" {","lastModifiedDate":"2024-01-25"},{"lineNumber":449,"author":{"gitId":"HM33-Stu"},"content":" readerInput \u003d inputRead.nextLine(); // Read and store user input inside readerInput variable","lastModifiedDate":"2024-02-06"},{"lineNumber":450,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":451,"author":{"gitId":"HM33-Stu"},"content":" if (readerInput.equalsIgnoreCase(\"bye\")) { // If \"bye\" is written as an input, the chatbot exits with the farewell message","lastModifiedDate":"2024-02-06"},{"lineNumber":452,"author":{"gitId":"HM33-Stu"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":453,"author":{"gitId":"HM33-Stu"},"content":" } else if (readerInput.equalsIgnoreCase(\"list\")) { // To list out tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":454,"author":{"gitId":"HM33-Stu"},"content":" hari.taskingsDisplay();","lastModifiedDate":"2024-02-06"},{"lineNumber":455,"author":{"gitId":"HM33-Stu"},"content":" } else if (readerInput.startsWith(\"todo\") || readerInput.startsWith(\"event\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":456,"author":{"gitId":"HM33-Stu"},"content":" // Check if there is anything following \"todo\" or \"event\"","lastModifiedDate":"2024-01-29"},{"lineNumber":457,"author":{"gitId":"HM33-Stu"},"content":" if (readerInput.length() \u003c\u003d 5) {","lastModifiedDate":"2024-02-06"},{"lineNumber":458,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":459,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" SAD! Missing task description after \u0027todo\u0027, \u0027deadline\u0027, or \u0027event\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":460,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":461,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":462,"author":{"gitId":"HM33-Stu"},"content":" hari.userEchoedInput(readerInput); // Else, it proceeds to call the user input processing function","lastModifiedDate":"2024-02-06"},{"lineNumber":463,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":464,"author":{"gitId":"HM33-Stu"},"content":" } else if (readerInput.startsWith(\"deadline\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":465,"author":{"gitId":"HM33-Stu"},"content":" // Check if there is anything following \"deadline\"","lastModifiedDate":"2024-01-29"},{"lineNumber":466,"author":{"gitId":"HM33-Stu"},"content":" if (readerInput.length() \u003c\u003d 9) {","lastModifiedDate":"2024-02-06"},{"lineNumber":467,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":468,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" SAD! Missing task description after \u0027todo\u0027, \u0027deadline\u0027, or \u0027event\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":469,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":470,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":471,"author":{"gitId":"HM33-Stu"},"content":" hari.userEchoedInput(readerInput); // Else, it proceeds to call the user input processing function","lastModifiedDate":"2024-02-06"},{"lineNumber":472,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":473,"author":{"gitId":"HM33-Stu"},"content":" } else if (readerInput.startsWith(\"unmark\") || readerInput.startsWith(\"delete\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":474,"author":{"gitId":"HM33-Stu"},"content":" // Check if there is anything following \"unmark\", \"mark\", or \"delete\"","lastModifiedDate":"2024-01-29"},{"lineNumber":475,"author":{"gitId":"HM33-Stu"},"content":" if (readerInput.length() \u003c\u003d 6) {","lastModifiedDate":"2024-02-06"},{"lineNumber":476,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":477,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" SAD! Missing task number after \u0027unmark\u0027, \u0027mark\u0027, or \u0027delete\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":478,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":479,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":480,"author":{"gitId":"HM33-Stu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":481,"author":{"gitId":"HM33-Stu"},"content":" int taskIndexer \u003d Integer.parseInt(readerInput.substring(6).trim());","lastModifiedDate":"2024-02-06"},{"lineNumber":482,"author":{"gitId":"HM33-Stu"},"content":" if (taskIndexer \u003e 0 \u0026\u0026 taskIndexer \u003c\u003d hari.counterTasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":483,"author":{"gitId":"HM33-Stu"},"content":" if (readerInput.startsWith(\"unmark\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":484,"author":{"gitId":"HM33-Stu"},"content":" hari.incompletionMark(taskIndexer);","lastModifiedDate":"2024-02-06"},{"lineNumber":485,"author":{"gitId":"HM33-Stu"},"content":" } else if (readerInput.startsWith(\"delete\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":486,"author":{"gitId":"HM33-Stu"},"content":" hari.taskDeleter(taskIndexer);","lastModifiedDate":"2024-02-06"},{"lineNumber":487,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":488,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":489,"author":{"gitId":"HM33-Stu"},"content":" // Error handling: Invalid task number","lastModifiedDate":"2024-01-29"},{"lineNumber":490,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":491,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Hmmm...I don\u0027t seem to have a task under this number\");","lastModifiedDate":"2024-02-06"},{"lineNumber":492,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":493,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":494,"author":{"gitId":"HM33-Stu"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":495,"author":{"gitId":"HM33-Stu"},"content":" // Error handling: Invalid input after \"unmark\" or \"delete\"","lastModifiedDate":"2024-02-06"},{"lineNumber":496,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":497,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" SAD! Please provide a valid task number after \u0027unmark\u0027 or \u0027delete\u0027.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":498,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":499,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":500,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":501,"author":{"gitId":"HM33-Stu"},"content":" } else if (readerInput.startsWith(\"done\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":502,"author":{"gitId":"HM33-Stu"},"content":" // Check if there is anything following \"done\"","lastModifiedDate":"2024-02-06"},{"lineNumber":503,"author":{"gitId":"HM33-Stu"},"content":" if (readerInput.length() \u003c\u003d 4) {","lastModifiedDate":"2024-02-06"},{"lineNumber":504,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":505,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" SAD! Missing task number after \u0027done\u0027.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":506,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":507,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":508,"author":{"gitId":"HM33-Stu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":509,"author":{"gitId":"HM33-Stu"},"content":" int taskIndexer \u003d Integer.parseInt(readerInput.substring(4).trim());","lastModifiedDate":"2024-02-06"},{"lineNumber":510,"author":{"gitId":"HM33-Stu"},"content":" if (taskIndexer \u003e 0 \u0026\u0026 taskIndexer \u003c\u003d hari.counterTasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":511,"author":{"gitId":"HM33-Stu"},"content":" hari.completionMark(taskIndexer);","lastModifiedDate":"2024-02-06"},{"lineNumber":512,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":513,"author":{"gitId":"HM33-Stu"},"content":" // Error handling: Invalid task number","lastModifiedDate":"2024-01-29"},{"lineNumber":514,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":515,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Hmmm...I don\u0027t seem to have a task under this number\");","lastModifiedDate":"2024-02-06"},{"lineNumber":516,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":517,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":518,"author":{"gitId":"HM33-Stu"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":519,"author":{"gitId":"HM33-Stu"},"content":" // Error handling: Invalid input after \"done\"","lastModifiedDate":"2024-02-06"},{"lineNumber":520,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":521,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" SAD! Please provide a valid task number after \u0027done\u0027.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":522,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":523,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":524,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":525,"author":{"gitId":"HM33-Stu"},"content":" } else if (readerInput.startsWith(\"find\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":526,"author":{"gitId":"HM33-Stu"},"content":" String keyword \u003d readerInput.substring(4).trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":527,"author":{"gitId":"HM33-Stu"},"content":" hari.findTask(keyword);","lastModifiedDate":"2024-02-06"},{"lineNumber":528,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":529,"author":{"gitId":"HM33-Stu"},"content":" // If none of the above conditions are met, it is assumed to be an unstructured input and echoes it back","lastModifiedDate":"2024-02-06"},{"lineNumber":530,"author":{"gitId":"HM33-Stu"},"content":" hari.userEchoedInput(readerInput);","lastModifiedDate":"2024-02-06"},{"lineNumber":531,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":532,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":533,"author":{"gitId":"HM33-Stu"},"content":" inputRead.close(); // Close the Scanner object to avoid resource leak","lastModifiedDate":"2024-02-06"},{"lineNumber":534,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":535,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"HM33-Stu":535}}] +[{"path":"src/main/java/Hari.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"HM33-Stu"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"HM33-Stu"},"content":"import java.io.File;","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"HM33-Stu"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"HM33-Stu"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"HM33-Stu"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"HM33-Stu"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"HM33-Stu"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"HM33-Stu"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"HM33-Stu"},"content":" * Class representing a task management chatbot named Hari.","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"HM33-Stu"},"content":"class HandlerBot {","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"HM33-Stu"},"content":" private static final String FOLDER_PATH \u003d \".\" + File.separator + \"data\";","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"HM33-Stu"},"content":" private static final String FILE_PATH \u003d FOLDER_PATH + File.separator + \"hari.txt\";","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"HM33-Stu"},"content":" * Main class for the Hari chatbot.","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"HM33-Stu"},"content":" public Task[] arrTasks; // To store tasks created by the user for easy retrieval and listing","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"HM33-Stu"},"content":" public int counterTasks; // Counter for assumption that there are no more than 100 tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"HM33-Stu"},"content":" // Class object","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"HM33-Stu"},"content":" public HandlerBot() {","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"HM33-Stu"},"content":" arrTasks \u003d new Task[100]; // Assumption that there are no more than 100 tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"HM33-Stu"},"content":" counterTasks \u003d 0; // Counter for the number of tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"HM33-Stu"},"content":" // Class for task (called Task)","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"HM33-Stu"},"content":" public class Task {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"HM33-Stu"},"content":" private String summary; // Description of tasks","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"HM33-Stu"},"content":" private boolean completion; // To check if a task is or is not completed","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"HM33-Stu"},"content":" private String taskType; // To identify the type of task","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"HM33-Stu"},"content":" private LocalDate deadline; // Add LocalDate for deadline","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"HM33-Stu"},"content":" private String timerStart; // Start time for Event tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"HM33-Stu"},"content":" private String timerEnd; // End time for Event tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"HM33-Stu"},"content":" private String deadlineStat; // Deadline for Deadline tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"HM33-Stu"},"content":" // Constructor for To Do tasks","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"HM33-Stu"},"content":" public Task(String summary) {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"HM33-Stu"},"content":" this.summary \u003d summary;","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"HM33-Stu"},"content":" this.completion \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"HM33-Stu"},"content":" this.taskType \u003d \"T\";","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"HM33-Stu"},"content":" this.deadline \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"HM33-Stu"},"content":" this.timerStart \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"HM33-Stu"},"content":" this.timerEnd \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"HM33-Stu"},"content":" // Constructor for Deadline tasks","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"HM33-Stu"},"content":" public Task(String summary, String deadlineStat) {","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"HM33-Stu"},"content":" this.summary \u003d summary;","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"HM33-Stu"},"content":" this.completion \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"HM33-Stu"},"content":" this.taskType \u003d \"D\";","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"HM33-Stu"},"content":" this.deadline \u003d parseDeadline(deadlineStat);","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"HM33-Stu"},"content":" this.timerStart \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"HM33-Stu"},"content":" this.timerEnd \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"HM33-Stu"},"content":" // Constructor for Event tasks","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"HM33-Stu"},"content":" public Task(String summary, String startTime, String endTime) {","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"HM33-Stu"},"content":" this.summary \u003d summary;","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"HM33-Stu"},"content":" this.completion \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"HM33-Stu"},"content":" this.taskType \u003d \"E\";","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"HM33-Stu"},"content":" this.deadline \u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"HM33-Stu"},"content":" this.timerStart \u003d startTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"HM33-Stu"},"content":" this.timerEnd \u003d endTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"HM33-Stu"},"content":" // Additional method to parse deadline string into LocalDate","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"HM33-Stu"},"content":" private LocalDate parseDeadline(String deadlineStat) {","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"HM33-Stu"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"HM33-Stu"},"content":" // Parse the date string into a LocalDate object","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"HM33-Stu"},"content":" return LocalDate.parse(deadlineStat, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"HM33-Stu"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"HM33-Stu"},"content":" // Handle parsing exception (invalid date format)","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Error when parsing deadline. Please use the format yyyy-MM-dd.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"HM33-Stu"},"content":" return null;","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"HM33-Stu"},"content":" // To mark as completed","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"HM33-Stu"},"content":" public void markAsComplete() {","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"HM33-Stu"},"content":" this.completion \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"HM33-Stu"},"content":" // To unmark completed tasks","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"HM33-Stu"},"content":" public void markAsIncomplete() {","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"HM33-Stu"},"content":" this.completion \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"HM33-Stu"},"content":" // For displaying the X or [ ] depending on completion status","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"HM33-Stu"},"content":" public String getStatus() {","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"HM33-Stu"},"content":" return (completion ? \"X\" : \" \"); // To display the X or [ ]","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"HM33-Stu"},"content":" // For displaying task description","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"HM33-Stu"},"content":" public String getDescription() {","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"HM33-Stu"},"content":" return summary;","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"HM33-Stu"},"content":" // For displaying the task type","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"HM33-Stu"},"content":" public String getTaskType() {","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"HM33-Stu"},"content":" return taskType;","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"HM33-Stu"},"content":" // For displaying start time of event tasks","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"HM33-Stu"},"content":" public String getStartTime() {","lastModifiedDate":"2024-02-07"},{"lineNumber":109,"author":{"gitId":"HM33-Stu"},"content":" return timerStart;","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"HM33-Stu"},"content":" // For displaying end time of event tasks","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"HM33-Stu"},"content":" public String getEndTime() {","lastModifiedDate":"2024-02-07"},{"lineNumber":114,"author":{"gitId":"HM33-Stu"},"content":" return timerEnd;","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"HM33-Stu"},"content":" // For displaying deadline of deadline tasks","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"HM33-Stu"},"content":" public String getDeadline() {","lastModifiedDate":"2024-02-07"},{"lineNumber":119,"author":{"gitId":"HM33-Stu"},"content":" return deadlineStat;","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"HM33-Stu"},"content":" // Additional method to check if task description is empty","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"HM33-Stu"},"content":" public boolean isDescriptionEmpty() {","lastModifiedDate":"2024-02-07"},{"lineNumber":124,"author":{"gitId":"HM33-Stu"},"content":" return summary.trim().isEmpty();","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"HM33-Stu"},"content":" // Additional method to display deadline in a different format","lastModifiedDate":"2024-02-06"},{"lineNumber":128,"author":{"gitId":"HM33-Stu"},"content":" public String formattedDeadline() {","lastModifiedDate":"2024-02-06"},{"lineNumber":129,"author":{"gitId":"HM33-Stu"},"content":" return deadline.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":130,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":131,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"HM33-Stu"},"content":" // Task finder","lastModifiedDate":"2024-02-06"},{"lineNumber":134,"author":{"gitId":"HM33-Stu"},"content":" public void findTask(String keyword) {","lastModifiedDate":"2024-02-06"},{"lineNumber":135,"author":{"gitId":"HM33-Stu"},"content":" boolean found \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":136,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-02-06"},{"lineNumber":137,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Here are the matching tasks in your list:\");","lastModifiedDate":"2024-02-06"},{"lineNumber":138,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":139,"author":{"gitId":"HM33-Stu"},"content":" for (int i \u003d 0; i \u003c counterTasks; i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":140,"author":{"gitId":"HM33-Stu"},"content":" if (arrTasks[i].getDescription().toLowerCase().contains(keyword.toLowerCase())) {","lastModifiedDate":"2024-02-07"},{"lineNumber":141,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" \" + (i + 1) + \".\" + arrTasks[i].getDescription() + \" \" +","lastModifiedDate":"2024-02-07"},{"lineNumber":142,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[i].getTaskType().equals(\"E\") ?","lastModifiedDate":"2024-02-07"},{"lineNumber":143,"author":{"gitId":"HM33-Stu"},"content":" \" (from: \" + arrTasks[i].getStartTime() + \" to: \" + arrTasks[i].getEndTime() + \")\" :","lastModifiedDate":"2024-02-07"},{"lineNumber":144,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[i].getTaskType().equals(\"D\") ? \" (by: \" + arrTasks[i].getDeadline() + \")\" : \"\")));","lastModifiedDate":"2024-02-07"},{"lineNumber":145,"author":{"gitId":"HM33-Stu"},"content":" found \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":146,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":147,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":148,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":149,"author":{"gitId":"HM33-Stu"},"content":" if (!found) {","lastModifiedDate":"2024-02-06"},{"lineNumber":150,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" No matching tasks found.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":151,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":152,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":153,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-02-06"},{"lineNumber":154,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":155,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":156,"author":{"gitId":"HM33-Stu"},"content":" // Function to save tasks to a file","lastModifiedDate":"2024-02-05"},{"lineNumber":157,"author":{"gitId":"HM33-Stu"},"content":" private void saveTasksToFile() {","lastModifiedDate":"2024-02-05"},{"lineNumber":158,"author":{"gitId":"HM33-Stu"},"content":" try (FileWriter writer \u003d new FileWriter(FILE_PATH)) {","lastModifiedDate":"2024-02-05"},{"lineNumber":159,"author":{"gitId":"HM33-Stu"},"content":" for (int i \u003d 0; i \u003c counterTasks; i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":160,"author":{"gitId":"HM33-Stu"},"content":" Task task \u003d arrTasks[i];","lastModifiedDate":"2024-02-06"},{"lineNumber":161,"author":{"gitId":"HM33-Stu"},"content":" writer.write(task.getTaskType() + \" | \" + (task.completion ? \"1\" : \"0\") + \" | \" +","lastModifiedDate":"2024-02-07"},{"lineNumber":162,"author":{"gitId":"HM33-Stu"},"content":" task.getDescription() + \" | \" +","lastModifiedDate":"2024-02-07"},{"lineNumber":163,"author":{"gitId":"HM33-Stu"},"content":" (task.getTaskType().equals(\"D\") ? task.getDeadline() : \"\") + \" | \" +","lastModifiedDate":"2024-02-07"},{"lineNumber":164,"author":{"gitId":"HM33-Stu"},"content":" (task.getTaskType().equals(\"E\") ? task.getStartTime() + \" to \" + task.getEndTime() : \"\") + \"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":165,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":166,"author":{"gitId":"HM33-Stu"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":167,"author":{"gitId":"HM33-Stu"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-05"},{"lineNumber":168,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":169,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":170,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":171,"author":{"gitId":"HM33-Stu"},"content":" // Function to load data from the file","lastModifiedDate":"2024-02-05"},{"lineNumber":172,"author":{"gitId":"HM33-Stu"},"content":" public void loadFromFile() {","lastModifiedDate":"2024-02-05"},{"lineNumber":173,"author":{"gitId":"HM33-Stu"},"content":" File folder \u003d new File(FOLDER_PATH);","lastModifiedDate":"2024-02-05"},{"lineNumber":174,"author":{"gitId":"HM33-Stu"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-02-05"},{"lineNumber":175,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":176,"author":{"gitId":"HM33-Stu"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":177,"author":{"gitId":"HM33-Stu"},"content":" // Create the folder if it doesn\u0027t exist","lastModifiedDate":"2024-02-05"},{"lineNumber":178,"author":{"gitId":"HM33-Stu"},"content":" if (!folder.exists()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":179,"author":{"gitId":"HM33-Stu"},"content":" if (folder.mkdirs()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":180,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Data folder created.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":181,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":182,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Failed to create data folder.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":183,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":184,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":185,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":186,"author":{"gitId":"HM33-Stu"},"content":" // Create the file if it doesn\u0027t exist","lastModifiedDate":"2024-02-05"},{"lineNumber":187,"author":{"gitId":"HM33-Stu"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":188,"author":{"gitId":"HM33-Stu"},"content":" if (file.createNewFile()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":189,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Data file created.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":190,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":191,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Failed to create data file.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":192,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":193,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":194,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":195,"author":{"gitId":"HM33-Stu"},"content":" // Load tasks from the file","lastModifiedDate":"2024-02-05"},{"lineNumber":196,"author":{"gitId":"HM33-Stu"},"content":" loadTasksFromFile();","lastModifiedDate":"2024-02-05"},{"lineNumber":197,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":198,"author":{"gitId":"HM33-Stu"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":199,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Error handling file operations: \" + e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":200,"author":{"gitId":"HM33-Stu"},"content":" } catch (CorruptedDataException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":201,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Error loading data from file. The file may be corrupted.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":202,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":203,"author":{"gitId":"HM33-Stu"},"content":" // Handle the corrupted file situation (prompt the user, take corrective actions, etc.)","lastModifiedDate":"2024-02-05"},{"lineNumber":204,"author":{"gitId":"HM33-Stu"},"content":" // For example, you may choose to delete the corrupted file and create a new one.","lastModifiedDate":"2024-02-05"},{"lineNumber":205,"author":{"gitId":"HM33-Stu"},"content":" if (file.exists() \u0026\u0026 file.delete()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":206,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Corrupted file deleted. A new file will be created.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":207,"author":{"gitId":"HM33-Stu"},"content":" loadFromFile(); // Retry loading from file","lastModifiedDate":"2024-02-05"},{"lineNumber":208,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":209,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Failed to delete corrupted file. Please create a new file manually.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":210,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":211,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":212,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":213,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":214,"author":{"gitId":"HM33-Stu"},"content":" // Function to load tasks from the file","lastModifiedDate":"2024-02-05"},{"lineNumber":215,"author":{"gitId":"HM33-Stu"},"content":" private void loadTasksFromFile() throws CorruptedDataException {","lastModifiedDate":"2024-02-05"},{"lineNumber":216,"author":{"gitId":"HM33-Stu"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(FILE_PATH))) {","lastModifiedDate":"2024-02-05"},{"lineNumber":217,"author":{"gitId":"HM33-Stu"},"content":" String line;","lastModifiedDate":"2024-02-05"},{"lineNumber":218,"author":{"gitId":"HM33-Stu"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-02-05"},{"lineNumber":219,"author":{"gitId":"HM33-Stu"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-02-05"},{"lineNumber":220,"author":{"gitId":"HM33-Stu"},"content":" String type \u003d parts[0];","lastModifiedDate":"2024-02-05"},{"lineNumber":221,"author":{"gitId":"HM33-Stu"},"content":" boolean completion \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-02-05"},{"lineNumber":222,"author":{"gitId":"HM33-Stu"},"content":" String summary \u003d parts[2];","lastModifiedDate":"2024-02-05"},{"lineNumber":223,"author":{"gitId":"HM33-Stu"},"content":" Task task;","lastModifiedDate":"2024-02-06"},{"lineNumber":224,"author":{"gitId":"HM33-Stu"},"content":" if (type.equals(\"T\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":225,"author":{"gitId":"HM33-Stu"},"content":" task \u003d new Task(summary);","lastModifiedDate":"2024-02-06"},{"lineNumber":226,"author":{"gitId":"HM33-Stu"},"content":" } else if (type.equals(\"D\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":227,"author":{"gitId":"HM33-Stu"},"content":" task \u003d new Task(summary, parts[3]);","lastModifiedDate":"2024-02-06"},{"lineNumber":228,"author":{"gitId":"HM33-Stu"},"content":" } else if (type.equals(\"E\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":229,"author":{"gitId":"HM33-Stu"},"content":" task \u003d new Task(summary, parts[3], parts[4]);","lastModifiedDate":"2024-02-06"},{"lineNumber":230,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":231,"author":{"gitId":"HM33-Stu"},"content":" // Handle unrecognized task type","lastModifiedDate":"2024-02-05"},{"lineNumber":232,"author":{"gitId":"HM33-Stu"},"content":" throw new CorruptedDataException(\"Unrecognized task type in the file.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":233,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":234,"author":{"gitId":"HM33-Stu"},"content":" if (completion) {","lastModifiedDate":"2024-02-05"},{"lineNumber":235,"author":{"gitId":"HM33-Stu"},"content":" task.markAsComplete();","lastModifiedDate":"2024-02-07"},{"lineNumber":236,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":237,"author":{"gitId":"HM33-Stu"},"content":" arrTasks[counterTasks++] \u003d task;","lastModifiedDate":"2024-02-06"},{"lineNumber":238,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":239,"author":{"gitId":"HM33-Stu"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":240,"author":{"gitId":"HM33-Stu"},"content":" // Handle file not found or other IO exceptions","lastModifiedDate":"2024-02-05"},{"lineNumber":241,"author":{"gitId":"HM33-Stu"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-05"},{"lineNumber":242,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":243,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":244,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":245,"author":{"gitId":"HM33-Stu"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":246,"author":{"gitId":"HM33-Stu"},"content":" * Custom exception class for handling corrupted data during file operations.","lastModifiedDate":"2024-02-06"},{"lineNumber":247,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":248,"author":{"gitId":"HM33-Stu"},"content":" class CorruptedDataException extends Exception {","lastModifiedDate":"2024-02-05"},{"lineNumber":249,"author":{"gitId":"HM33-Stu"},"content":" public CorruptedDataException(String message) {","lastModifiedDate":"2024-02-05"},{"lineNumber":250,"author":{"gitId":"HM33-Stu"},"content":" super(message);","lastModifiedDate":"2024-02-05"},{"lineNumber":251,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":252,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":253,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":254,"author":{"gitId":"HM33-Stu"},"content":" // Function that handles the greeting message","lastModifiedDate":"2024-01-25"},{"lineNumber":255,"author":{"gitId":"HM33-Stu"},"content":" public void messageGreeting() {","lastModifiedDate":"2024-02-06"},{"lineNumber":256,"author":{"gitId":"HM33-Stu"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":257,"author":{"gitId":"HM33-Stu"},"content":" // Load tasks from file when the chatbot starts up","lastModifiedDate":"2024-02-05"},{"lineNumber":258,"author":{"gitId":"HM33-Stu"},"content":" loadTasksFromFile();","lastModifiedDate":"2024-02-05"},{"lineNumber":259,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":260,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Hey! I\u0027m Hari!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":261,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" How may I be of service today?\");","lastModifiedDate":"2024-01-25"},{"lineNumber":262,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":263,"author":{"gitId":"HM33-Stu"},"content":" } catch (CorruptedDataException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":264,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Error loading data from file. File may be corrupted.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":265,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":266,"author":{"gitId":"HM33-Stu"},"content":" // Handle the corrupted file situation","lastModifiedDate":"2024-02-05"},{"lineNumber":267,"author":{"gitId":"HM33-Stu"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-02-05"},{"lineNumber":268,"author":{"gitId":"HM33-Stu"},"content":" if (file.exists() \u0026\u0026 file.delete()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":269,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Corrupted file deleted. A new file will be created.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":270,"author":{"gitId":"HM33-Stu"},"content":" messageGreeting(); // Retry loading from file","lastModifiedDate":"2024-02-06"},{"lineNumber":271,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":272,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Failed to delete corrupted file. Please create new file manually.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":273,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":274,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":275,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":276,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":277,"author":{"gitId":"HM33-Stu"},"content":" // Function that handles the exit message","lastModifiedDate":"2024-01-25"},{"lineNumber":278,"author":{"gitId":"HM33-Stu"},"content":" public void messageFarewell() {","lastModifiedDate":"2024-02-06"},{"lineNumber":279,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":280,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"Au revoir! Till we meet again!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":281,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":282,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":283,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":284,"author":{"gitId":"HM33-Stu"},"content":" // Function that handles and echoes user input (this is maintained as not all inputs are tasks)","lastModifiedDate":"2024-01-25"},{"lineNumber":285,"author":{"gitId":"HM33-Stu"},"content":" public void userEchoedInput(String readerInput) {","lastModifiedDate":"2024-02-06"},{"lineNumber":286,"author":{"gitId":"HM33-Stu"},"content":" if (readerInput.equalsIgnoreCase(\"list\")) // To list out tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":287,"author":{"gitId":"HM33-Stu"},"content":" {","lastModifiedDate":"2024-01-25"},{"lineNumber":288,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":289,"author":{"gitId":"HM33-Stu"},"content":" listTasks();","lastModifiedDate":"2024-02-07"},{"lineNumber":290,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":291,"author":{"gitId":"HM33-Stu"},"content":" } else if (readerInput.equalsIgnoreCase(\"bye\")) // To exit the chatbot program","lastModifiedDate":"2024-02-06"},{"lineNumber":292,"author":{"gitId":"HM33-Stu"},"content":" {","lastModifiedDate":"2024-01-25"},{"lineNumber":293,"author":{"gitId":"HM33-Stu"},"content":" messageFarewell();","lastModifiedDate":"2024-02-06"},{"lineNumber":294,"author":{"gitId":"HM33-Stu"},"content":" } else // Anything else, is assumed to be a new task to add","lastModifiedDate":"2024-01-28"},{"lineNumber":295,"author":{"gitId":"HM33-Stu"},"content":" {","lastModifiedDate":"2024-01-25"},{"lineNumber":296,"author":{"gitId":"HM33-Stu"},"content":" addTask(readerInput);","lastModifiedDate":"2024-02-07"},{"lineNumber":297,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":298,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":299,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":300,"author":{"gitId":"HM33-Stu"},"content":" // Function to add tasks","lastModifiedDate":"2024-01-25"},{"lineNumber":301,"author":{"gitId":"HM33-Stu"},"content":" // No modification done to userEchoedInput function as not all inputs are tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":302,"author":{"gitId":"HM33-Stu"},"content":" public void addTask(String taskings) {","lastModifiedDate":"2024-02-07"},{"lineNumber":303,"author":{"gitId":"HM33-Stu"},"content":" // Display message based on the task type","lastModifiedDate":"2024-01-28"},{"lineNumber":304,"author":{"gitId":"HM33-Stu"},"content":" if (taskings.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":305,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":306,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":307,"author":{"gitId":"HM33-Stu"},"content":" arrTasks[counterTasks] \u003d new Task(taskings.substring(5).trim()); // 5 because of the word to do","lastModifiedDate":"2024-02-06"},{"lineNumber":308,"author":{"gitId":"HM33-Stu"},"content":" } else if (taskings.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":309,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":310,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":311,"author":{"gitId":"HM33-Stu"},"content":" String[] parts \u003d taskings.substring(8).trim().split(\"/by\"); // 8 because of the word deadline","lastModifiedDate":"2024-01-28"},{"lineNumber":312,"author":{"gitId":"HM33-Stu"},"content":" arrTasks[counterTasks] \u003d new Task(parts[0].trim(), parts[1].trim());","lastModifiedDate":"2024-02-06"},{"lineNumber":313,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" \" + \"[\" + arrTasks[counterTasks].getTaskType() + \"]\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":314,"author":{"gitId":"HM33-Stu"},"content":" \"[\" + arrTasks[counterTasks].getStatus() + \"]\" + arrTasks[counterTasks].getDescription() +","lastModifiedDate":"2024-02-07"},{"lineNumber":315,"author":{"gitId":"HM33-Stu"},"content":" \" (by: \" + arrTasks[counterTasks].formattedDeadline() + \")\");","lastModifiedDate":"2024-02-06"},{"lineNumber":316,"author":{"gitId":"HM33-Stu"},"content":" } else if (taskings.startsWith(\"event\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":317,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":318,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":319,"author":{"gitId":"HM33-Stu"},"content":" String[] parts \u003d taskings.substring(5).trim().split(\"/from|/to\"); // 5 because of the word event","lastModifiedDate":"2024-01-28"},{"lineNumber":320,"author":{"gitId":"HM33-Stu"},"content":" arrTasks[counterTasks] \u003d new Task(parts[0].trim(), parts[1].trim(), parts[2].trim());","lastModifiedDate":"2024-02-06"},{"lineNumber":321,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" \" + \"[\" + arrTasks[counterTasks].getTaskType() + \"]\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":322,"author":{"gitId":"HM33-Stu"},"content":" \"[\" + arrTasks[counterTasks].getStatus() + \"]\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":323,"author":{"gitId":"HM33-Stu"},"content":" arrTasks[counterTasks].getDescription() +","lastModifiedDate":"2024-02-07"},{"lineNumber":324,"author":{"gitId":"HM33-Stu"},"content":" \" (from: \" + arrTasks[counterTasks].getStartTime() + \" to: \" + arrTasks[counterTasks].getEndTime() + \")\");","lastModifiedDate":"2024-02-07"},{"lineNumber":325,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":326,"author":{"gitId":"HM33-Stu"},"content":" // Error handlings for missing task types","lastModifiedDate":"2024-02-06"},{"lineNumber":327,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":328,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" SAD! Please start your task with \u0027todo\u0027, \u0027deadline\u0027, or \u0027event\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":329,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":330,"author":{"gitId":"HM33-Stu"},"content":" return;","lastModifiedDate":"2024-01-29"},{"lineNumber":331,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":332,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":333,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Now you have \" + counterTasks + \" task(s) in the list\");","lastModifiedDate":"2024-02-06"},{"lineNumber":334,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":335,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":336,"author":{"gitId":"HM33-Stu"},"content":" // Save tasks to file whenever the task list changes","lastModifiedDate":"2024-02-05"},{"lineNumber":337,"author":{"gitId":"HM33-Stu"},"content":" saveTasksToFile();","lastModifiedDate":"2024-02-05"},{"lineNumber":338,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":339,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":340,"author":{"gitId":"HM33-Stu"},"content":" // Function to display tasks","lastModifiedDate":"2024-01-25"},{"lineNumber":341,"author":{"gitId":"HM33-Stu"},"content":" // No modification done to userEchoedInput function as not all inputs are tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":342,"author":{"gitId":"HM33-Stu"},"content":" public void listTasks() {","lastModifiedDate":"2024-02-07"},{"lineNumber":343,"author":{"gitId":"HM33-Stu"},"content":" if (counterTasks \u003d\u003d 0) {","lastModifiedDate":"2024-02-06"},{"lineNumber":344,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":345,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Your task list is empty. Add tasks by simply typing them in.\"); // If there are no tasks, a message to guide the user","lastModifiedDate":"2024-01-28"},{"lineNumber":346,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":347,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":348,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":349,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Here are your tasks:\"); // Display all tasks","lastModifiedDate":"2024-01-25"},{"lineNumber":350,"author":{"gitId":"HM33-Stu"},"content":" for (int i \u003d 0; i \u003c counterTasks; i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":351,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" \" + (i + 1) + \". \" + \"[\" + arrTasks[i].getTaskType() + \"]\" + \"[\" + arrTasks[i].getStatus() + \"]\" + arrTasks[i].getDescription() +","lastModifiedDate":"2024-02-07"},{"lineNumber":352,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[i].getTaskType().equals(\"E\") ?","lastModifiedDate":"2024-02-07"},{"lineNumber":353,"author":{"gitId":"HM33-Stu"},"content":" \" (from: \" + arrTasks[i].getStartTime() + \" to: \" + arrTasks[i].getEndTime() + \")\" :","lastModifiedDate":"2024-02-07"},{"lineNumber":354,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[i].getTaskType().equals(\"D\") ? \" (by: \" + arrTasks[i].getDeadline() + \")\" : \"\")));","lastModifiedDate":"2024-02-07"},{"lineNumber":355,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":356,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":357,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":358,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":359,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":360,"author":{"gitId":"HM33-Stu"},"content":" // Function to mark task as completed","lastModifiedDate":"2024-02-06"},{"lineNumber":361,"author":{"gitId":"HM33-Stu"},"content":" public void markAsComplete(int taskRecorder) {","lastModifiedDate":"2024-02-07"},{"lineNumber":362,"author":{"gitId":"HM33-Stu"},"content":" if (taskRecorder \u003e 0 \u0026\u0026 taskRecorder \u003c\u003d counterTasks) // If there are tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":363,"author":{"gitId":"HM33-Stu"},"content":" {","lastModifiedDate":"2024-01-27"},{"lineNumber":364,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":365,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Another one in the bag! Well done!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":366,"author":{"gitId":"HM33-Stu"},"content":" arrTasks[taskRecorder - 1].markAsComplete(); // Mark as complete","lastModifiedDate":"2024-02-07"},{"lineNumber":367,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" \" + \"[\" + arrTasks[taskRecorder - 1].getTaskType() + \"]\" + \"[\" + arrTasks[taskRecorder - 1].getStatus() + \"]\" + arrTasks[taskRecorder - 1].getDescription() + \" \" +","lastModifiedDate":"2024-02-07"},{"lineNumber":368,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[taskRecorder - 1].getTaskType().equals(\"E\") ?","lastModifiedDate":"2024-02-07"},{"lineNumber":369,"author":{"gitId":"HM33-Stu"},"content":" \" (from: \" + arrTasks[taskRecorder - 1].getStartTime() + \" to: \" + arrTasks[taskRecorder - 1].getEndTime() + \")\" :","lastModifiedDate":"2024-02-07"},{"lineNumber":370,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[taskRecorder - 1].getTaskType().equals(\"D\") ? \" (by: \" + arrTasks[taskRecorder - 1].getDeadline() + \")\" : \"\")));","lastModifiedDate":"2024-02-07"},{"lineNumber":371,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":372,"author":{"gitId":"HM33-Stu"},"content":" } else // Error handling: There are no tasks or invalid task number","lastModifiedDate":"2024-01-29"},{"lineNumber":373,"author":{"gitId":"HM33-Stu"},"content":" {","lastModifiedDate":"2024-01-27"},{"lineNumber":374,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":375,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Hmmm...I don\u0027t seem to have a task under this number\");","lastModifiedDate":"2024-01-28"},{"lineNumber":376,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":377,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":378,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":379,"author":{"gitId":"HM33-Stu"},"content":" // Save tasks to file whenever task list changes","lastModifiedDate":"2024-02-06"},{"lineNumber":380,"author":{"gitId":"HM33-Stu"},"content":" saveTasksToFile();","lastModifiedDate":"2024-02-05"},{"lineNumber":381,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":382,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":383,"author":{"gitId":"HM33-Stu"},"content":" // Function to unmark previously marked as completed task","lastModifiedDate":"2024-01-29"},{"lineNumber":384,"author":{"gitId":"HM33-Stu"},"content":" public void markAsIncomplete(int taskRecorder) {","lastModifiedDate":"2024-02-07"},{"lineNumber":385,"author":{"gitId":"HM33-Stu"},"content":" if (taskRecorder \u003e 0 \u0026\u0026 taskRecorder \u003c\u003d counterTasks) // If there are tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":386,"author":{"gitId":"HM33-Stu"},"content":" {","lastModifiedDate":"2024-01-27"},{"lineNumber":387,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":388,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Oh dear, better get on it!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":389,"author":{"gitId":"HM33-Stu"},"content":" arrTasks[taskRecorder - 1].markAsIncomplete(); // Mark as incomplete","lastModifiedDate":"2024-02-07"},{"lineNumber":390,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" \" + \"[\" + arrTasks[taskRecorder - 1].getTaskType() + \"]\" + \"[\" + arrTasks[taskRecorder - 1].getStatus() + \"]\" + arrTasks[taskRecorder - 1].getDescription() + \" \" +","lastModifiedDate":"2024-02-07"},{"lineNumber":391,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[taskRecorder - 1].getTaskType().equals(\"E\") ?","lastModifiedDate":"2024-02-07"},{"lineNumber":392,"author":{"gitId":"HM33-Stu"},"content":" \" (from: \" + arrTasks[taskRecorder - 1].getStartTime() + \" to: \" + arrTasks[taskRecorder - 1].getEndTime() + \")\" :","lastModifiedDate":"2024-02-07"},{"lineNumber":393,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[taskRecorder - 1].getTaskType().equals(\"D\") ? \" (by: \" + arrTasks[taskRecorder - 1].getDeadline() + \")\" : \"\")));","lastModifiedDate":"2024-02-07"},{"lineNumber":394,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":395,"author":{"gitId":"HM33-Stu"},"content":" } else // Error handling: There are no tasks or invalid task number","lastModifiedDate":"2024-01-29"},{"lineNumber":396,"author":{"gitId":"HM33-Stu"},"content":" {","lastModifiedDate":"2024-01-27"},{"lineNumber":397,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":398,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Hmmm...I don\u0027t seem to have a task under this number\");","lastModifiedDate":"2024-01-28"},{"lineNumber":399,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-27"},{"lineNumber":400,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":401,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":402,"author":{"gitId":"HM33-Stu"},"content":" // Save tasks to file whenever the task list changes","lastModifiedDate":"2024-02-05"},{"lineNumber":403,"author":{"gitId":"HM33-Stu"},"content":" saveTasksToFile();","lastModifiedDate":"2024-02-05"},{"lineNumber":404,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":405,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":406,"author":{"gitId":"HM33-Stu"},"content":" // Function to delete a task","lastModifiedDate":"2024-01-29"},{"lineNumber":407,"author":{"gitId":"HM33-Stu"},"content":" public void deleteTask(int taskNumber) {","lastModifiedDate":"2024-02-07"},{"lineNumber":408,"author":{"gitId":"HM33-Stu"},"content":" if (taskNumber \u003e 0 \u0026\u0026 taskNumber \u003c\u003d counterTasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":409,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":410,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Okay, I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":411,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" \" + \"[\" + arrTasks[taskNumber - 1].getTaskType() + \"]\" + \"[\" + arrTasks[taskNumber - 1].getStatus() + \"]\" + arrTasks[taskNumber - 1].getDescription() + \" \" +","lastModifiedDate":"2024-02-07"},{"lineNumber":412,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[taskNumber - 1].getTaskType().equals(\"E\") ?","lastModifiedDate":"2024-02-07"},{"lineNumber":413,"author":{"gitId":"HM33-Stu"},"content":" \" (from: \" + arrTasks[taskNumber - 1].getStartTime() + \" to: \" + arrTasks[taskNumber - 1].getEndTime() + \")\" :","lastModifiedDate":"2024-02-07"},{"lineNumber":414,"author":{"gitId":"HM33-Stu"},"content":" (arrTasks[taskNumber - 1].getTaskType().equals(\"D\") ? \" (by: \" + arrTasks[taskNumber - 1].getDeadline() + \")\" : \"\")));","lastModifiedDate":"2024-02-07"},{"lineNumber":415,"author":{"gitId":"HM33-Stu"},"content":" // Shift tasks in the array to fill the gap","lastModifiedDate":"2024-01-29"},{"lineNumber":416,"author":{"gitId":"HM33-Stu"},"content":" for (int i \u003d taskNumber - 1; i \u003c counterTasks - 1; i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":417,"author":{"gitId":"HM33-Stu"},"content":" arrTasks[i] \u003d arrTasks[i + 1];","lastModifiedDate":"2024-02-06"},{"lineNumber":418,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":419,"author":{"gitId":"HM33-Stu"},"content":" arrTasks[counterTasks - 1] \u003d null; // Set the last element to null","lastModifiedDate":"2024-02-06"},{"lineNumber":420,"author":{"gitId":"HM33-Stu"},"content":" counterTasks--;","lastModifiedDate":"2024-02-06"},{"lineNumber":421,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Now you have \" + counterTasks + \" task(s) in the list\");","lastModifiedDate":"2024-02-06"},{"lineNumber":422,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":423,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":424,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":425,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Hmmm...I don\u0027t seem to have a task under this number\");","lastModifiedDate":"2024-01-29"},{"lineNumber":426,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":427,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":428,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":429,"author":{"gitId":"HM33-Stu"},"content":" // Save tasks to file whenever the task list changes","lastModifiedDate":"2024-02-05"},{"lineNumber":430,"author":{"gitId":"HM33-Stu"},"content":" saveTasksToFile();","lastModifiedDate":"2024-02-05"},{"lineNumber":431,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":432,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":433,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":434,"author":{"gitId":"HM33-Stu"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":435,"author":{"gitId":"HM33-Stu"},"content":" * Main method to run the Hari chatbot program.","lastModifiedDate":"2024-02-06"},{"lineNumber":436,"author":{"gitId":"HM33-Stu"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":437,"author":{"gitId":"HM33-Stu"},"content":" * @param args Command-line arguments (not used in this program).","lastModifiedDate":"2024-02-06"},{"lineNumber":438,"author":{"gitId":"HM33-Stu"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":439,"author":{"gitId":"HM33-Stu"},"content":"public class Hari {","lastModifiedDate":"2024-01-28"},{"lineNumber":440,"author":{"gitId":"HM33-Stu"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-28"},{"lineNumber":441,"author":{"gitId":"HM33-Stu"},"content":" Scanner inputRead \u003d new Scanner(System.in); // Scanner object to read and process user input","lastModifiedDate":"2024-02-06"},{"lineNumber":442,"author":{"gitId":"HM33-Stu"},"content":" HandlerBot hari \u003d new HandlerBot(); // Create a new \"Hari\" chatbot (HandlerBot object)","lastModifiedDate":"2024-02-06"},{"lineNumber":443,"author":{"gitId":"HM33-Stu"},"content":" hari.messageGreeting(); // Call the messageGreeting function to greet the user","lastModifiedDate":"2024-02-06"},{"lineNumber":444,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":445,"author":{"gitId":"HM33-Stu"},"content":" String readerInput; // To store user input","lastModifiedDate":"2024-02-06"},{"lineNumber":446,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":447,"author":{"gitId":"HM33-Stu"},"content":" while (true) // Modified do-while to a while as I have now streamlined all the code in the main body and reduced the number of function calls","lastModifiedDate":"2024-01-28"},{"lineNumber":448,"author":{"gitId":"HM33-Stu"},"content":" {","lastModifiedDate":"2024-01-25"},{"lineNumber":449,"author":{"gitId":"HM33-Stu"},"content":" readerInput \u003d inputRead.nextLine(); // Read and store user input inside readerInput variable","lastModifiedDate":"2024-02-06"},{"lineNumber":450,"author":{"gitId":"HM33-Stu"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":451,"author":{"gitId":"HM33-Stu"},"content":" if (readerInput.equalsIgnoreCase(\"bye\")) { // If \"bye\" is written as an input, the chatbot exits with the farewell message","lastModifiedDate":"2024-02-06"},{"lineNumber":452,"author":{"gitId":"HM33-Stu"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":453,"author":{"gitId":"HM33-Stu"},"content":" } else if (readerInput.equalsIgnoreCase(\"list\")) { // To list out tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":454,"author":{"gitId":"HM33-Stu"},"content":" hari.listTasks();","lastModifiedDate":"2024-02-07"},{"lineNumber":455,"author":{"gitId":"HM33-Stu"},"content":" } else if (readerInput.startsWith(\"todo\") || readerInput.startsWith(\"event\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":456,"author":{"gitId":"HM33-Stu"},"content":" // Check if there is anything following \"todo\" or \"event\"","lastModifiedDate":"2024-01-29"},{"lineNumber":457,"author":{"gitId":"HM33-Stu"},"content":" if (readerInput.length() \u003c\u003d 5) {","lastModifiedDate":"2024-02-06"},{"lineNumber":458,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":459,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" SAD! Missing task description after \u0027todo\u0027, \u0027deadline\u0027, or \u0027event\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":460,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":461,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":462,"author":{"gitId":"HM33-Stu"},"content":" hari.userEchoedInput(readerInput); // Else, it proceeds to call the user input processing function","lastModifiedDate":"2024-02-06"},{"lineNumber":463,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":464,"author":{"gitId":"HM33-Stu"},"content":" } else if (readerInput.startsWith(\"deadline\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":465,"author":{"gitId":"HM33-Stu"},"content":" // Check if there is anything following \"deadline\"","lastModifiedDate":"2024-01-29"},{"lineNumber":466,"author":{"gitId":"HM33-Stu"},"content":" if (readerInput.length() \u003c\u003d 9) {","lastModifiedDate":"2024-02-06"},{"lineNumber":467,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":468,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" SAD! Missing task description after \u0027todo\u0027, \u0027deadline\u0027, or \u0027event\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":469,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":470,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":471,"author":{"gitId":"HM33-Stu"},"content":" hari.userEchoedInput(readerInput); // Else, it proceeds to call the user input processing function","lastModifiedDate":"2024-02-06"},{"lineNumber":472,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":473,"author":{"gitId":"HM33-Stu"},"content":" } else if (readerInput.startsWith(\"unmark\") || readerInput.startsWith(\"delete\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":474,"author":{"gitId":"HM33-Stu"},"content":" // Check if there is anything following \"unmark\", \"mark\", or \"delete\"","lastModifiedDate":"2024-01-29"},{"lineNumber":475,"author":{"gitId":"HM33-Stu"},"content":" if (readerInput.length() \u003c\u003d 6) {","lastModifiedDate":"2024-02-06"},{"lineNumber":476,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":477,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" SAD! Missing task number after \u0027unmark\u0027, \u0027mark\u0027, or \u0027delete\u0027.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":478,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":479,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":480,"author":{"gitId":"HM33-Stu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":481,"author":{"gitId":"HM33-Stu"},"content":" int taskIndexer \u003d Integer.parseInt(readerInput.substring(6).trim());","lastModifiedDate":"2024-02-06"},{"lineNumber":482,"author":{"gitId":"HM33-Stu"},"content":" if (taskIndexer \u003e 0 \u0026\u0026 taskIndexer \u003c\u003d hari.counterTasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":483,"author":{"gitId":"HM33-Stu"},"content":" if (readerInput.startsWith(\"unmark\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":484,"author":{"gitId":"HM33-Stu"},"content":" hari.markAsIncomplete(taskIndexer);","lastModifiedDate":"2024-02-07"},{"lineNumber":485,"author":{"gitId":"HM33-Stu"},"content":" } else if (readerInput.startsWith(\"delete\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":486,"author":{"gitId":"HM33-Stu"},"content":" hari.deleteTask(taskIndexer);","lastModifiedDate":"2024-02-07"},{"lineNumber":487,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":488,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":489,"author":{"gitId":"HM33-Stu"},"content":" // Error handling: Invalid task number","lastModifiedDate":"2024-01-29"},{"lineNumber":490,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":491,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Hmmm...I don\u0027t seem to have a task under this number\");","lastModifiedDate":"2024-02-06"},{"lineNumber":492,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":493,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":494,"author":{"gitId":"HM33-Stu"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":495,"author":{"gitId":"HM33-Stu"},"content":" // Error handling: Invalid input after \"unmark\" or \"delete\"","lastModifiedDate":"2024-02-06"},{"lineNumber":496,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":497,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" SAD! Please provide a valid task number after \u0027unmark\u0027 or \u0027delete\u0027.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":498,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":499,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":500,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":501,"author":{"gitId":"HM33-Stu"},"content":" } else if (readerInput.startsWith(\"done\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":502,"author":{"gitId":"HM33-Stu"},"content":" // Check if there is anything following \"done\"","lastModifiedDate":"2024-02-06"},{"lineNumber":503,"author":{"gitId":"HM33-Stu"},"content":" if (readerInput.length() \u003c\u003d 4) {","lastModifiedDate":"2024-02-06"},{"lineNumber":504,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":505,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" SAD! Missing task number after \u0027done\u0027.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":506,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":507,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":508,"author":{"gitId":"HM33-Stu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":509,"author":{"gitId":"HM33-Stu"},"content":" int taskIndexer \u003d Integer.parseInt(readerInput.substring(4).trim());","lastModifiedDate":"2024-02-06"},{"lineNumber":510,"author":{"gitId":"HM33-Stu"},"content":" if (taskIndexer \u003e 0 \u0026\u0026 taskIndexer \u003c\u003d hari.counterTasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":511,"author":{"gitId":"HM33-Stu"},"content":" hari.markAsComplete(taskIndexer);","lastModifiedDate":"2024-02-07"},{"lineNumber":512,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":513,"author":{"gitId":"HM33-Stu"},"content":" // Error handling: Invalid task number","lastModifiedDate":"2024-01-29"},{"lineNumber":514,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":515,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" Hmmm...I don\u0027t seem to have a task under this number\");","lastModifiedDate":"2024-02-06"},{"lineNumber":516,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":517,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":518,"author":{"gitId":"HM33-Stu"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":519,"author":{"gitId":"HM33-Stu"},"content":" // Error handling: Invalid input after \"done\"","lastModifiedDate":"2024-02-06"},{"lineNumber":520,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":521,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\" SAD! Please provide a valid task number after \u0027done\u0027.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":522,"author":{"gitId":"HM33-Stu"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":523,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":524,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":525,"author":{"gitId":"HM33-Stu"},"content":" } else if (readerInput.startsWith(\"find\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":526,"author":{"gitId":"HM33-Stu"},"content":" String keyword \u003d readerInput.substring(4).trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":527,"author":{"gitId":"HM33-Stu"},"content":" hari.findTask(keyword);","lastModifiedDate":"2024-02-06"},{"lineNumber":528,"author":{"gitId":"HM33-Stu"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":529,"author":{"gitId":"HM33-Stu"},"content":" // If none of the above conditions are met, it is assumed to be an unstructured input and echoes it back","lastModifiedDate":"2024-02-06"},{"lineNumber":530,"author":{"gitId":"HM33-Stu"},"content":" hari.userEchoedInput(readerInput);","lastModifiedDate":"2024-02-06"},{"lineNumber":531,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":532,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":533,"author":{"gitId":"HM33-Stu"},"content":" inputRead.close(); // Close the Scanner object to avoid resource leak","lastModifiedDate":"2024-02-06"},{"lineNumber":534,"author":{"gitId":"HM33-Stu"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":535,"author":{"gitId":"HM33-Stu"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"HM33-Stu":535}}] diff --git a/HM33-Stu_ip_master/commits.json b/HM33-Stu_ip_master/commits.json index 3b49cb01..d17136b4 100644 --- a/HM33-Stu_ip_master/commits.json +++ b/HM33-Stu_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"HM33-Stu":[{"date":"2024-01-25","commitResults":[{"hash":"52b74b4525be3be27cf71f05d7fd23747d260634","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":0}}},{"hash":"7eef6996a2ae5c35216646af520b059cb3b363eb","isMergeCommit":false,"messageTitle":"Delete src/main/java/Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}},{"hash":"84cd5e6ff878eb2f4d50b3817254c061577ada90","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":4}}},{"hash":"4d2d6b93d6d14b10cbcd678c65dd90bdda108d76","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/HM33-Stu/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b5e1235eadde01e7c8f4e04db531f6daec83c7db","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":16}}}]},{"date":"2024-01-27","commitResults":[{"hash":"d23974f8cb0cf4fd20de3e66145e4beed9176681","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":6}}},{"hash":"ecf4f4a980c31c78b213c6b1f451976083da5b67","isMergeCommit":false,"messageTitle":"A-Classes","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":8}}}]},{"date":"2024-01-28","commitResults":[{"hash":"c47767a30159f7402810851b45b2b6d0ebf6683d","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":120,"deletions":61}}}]},{"date":"2024-01-29","commitResults":[{"hash":"10eb94047bca38639403642fc14f5a2d8ff3d129","isMergeCommit":false,"messageTitle":"A-Inheritance","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"79816655f2255bfb1711c894b71f2762436d2de7","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"744c9e5a49b84f579fde675cfcda9859c4712706","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":12}}},{"hash":"3662601f90ef6365b310b392fc5c65a88d932c14","isMergeCommit":false,"messageTitle":"A-Exceptions","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"66d3876a9cab21f7c3f70f718098d1264a0f7b11","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":12}}},{"hash":"d97a43c801dec422675dc6212146dccfd9504dee","isMergeCommit":false,"messageTitle":"Added more error handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":19}}}]},{"date":"2024-02-05","commitResults":[{"hash":"65fb64cf503279f7305998ad954d02ac44e1e672","isMergeCommit":false,"messageTitle":"Added more error handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"bd09a58a43d02fb80cff53e4a72fd58796379ef0","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":137,"deletions":4}}},{"hash":"89d7d9d13da5f37c16c2f48687d8a72b023017ef","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"c1212a7024f9101f8b5d8fa558fdce953d6dc833","isMergeCommit":false,"messageTitle":"branch-Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":16}}},{"hash":"1bce3840e676c69ccb5d2ce8731e9af743fc66ff","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"8323cbfa07206d2476b8f62958268a3b3d0117ce","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f48166a498339dccf8fa71da56f4cccd29b2f7e0","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"562c545d422af368983edbaea31ee65c4c6649e9","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"1cd758bbfba3ee1c063a73494d764857a948ac62","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"a777e4b7b684ab03da42c2f463f7213287309c6a","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"3d3bf487d96e12d074f092ee85b50af21b4d8c34","isMergeCommit":false,"messageTitle":"A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"44a22e2061955e0667f411437aa2882bf6221ebf","isMergeCommit":false,"messageTitle":"A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":4}}},{"hash":"d9e7ccce014397975983d9d2c5c2447a8a47813c","isMergeCommit":false,"messageTitle":"A-CodingStandard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":148,"deletions":158}}},{"hash":"842a93760d87fe4032178a85879e8b2d5c09c7ff","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":1}}},{"hash":"a3092129dba8c5b408af95dab1a58a20fa215ab2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"0cd31da83621fe2a7e77eba5b8a65bf701dca1b1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab137cb1c9a204d0013b743e7d57ae6d35a73760","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"HM33-Stu":{"java":535,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"HM33-Stu":12198.403},"authorDisplayNameMap":{"HM33-Stu":"CS2103T-W11-1 HARI..OHAN"}} +{"authorDailyContributionsMap":{"HM33-Stu":[{"date":"2024-01-25","commitResults":[{"hash":"52b74b4525be3be27cf71f05d7fd23747d260634","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":0}}},{"hash":"7eef6996a2ae5c35216646af520b059cb3b363eb","isMergeCommit":false,"messageTitle":"Delete src/main/java/Duke.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}},{"hash":"84cd5e6ff878eb2f4d50b3817254c061577ada90","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":4}}},{"hash":"4d2d6b93d6d14b10cbcd678c65dd90bdda108d76","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/HM33-Stu/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b5e1235eadde01e7c8f4e04db531f6daec83c7db","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":16}}}]},{"date":"2024-01-27","commitResults":[{"hash":"d23974f8cb0cf4fd20de3e66145e4beed9176681","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":6}}},{"hash":"ecf4f4a980c31c78b213c6b1f451976083da5b67","isMergeCommit":false,"messageTitle":"A-Classes","messageBody":"","tags":["A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":8}}}]},{"date":"2024-01-28","commitResults":[{"hash":"c47767a30159f7402810851b45b2b6d0ebf6683d","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":120,"deletions":61}}}]},{"date":"2024-01-29","commitResults":[{"hash":"10eb94047bca38639403642fc14f5a2d8ff3d129","isMergeCommit":false,"messageTitle":"A-Inheritance","messageBody":"","tags":["A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"79816655f2255bfb1711c894b71f2762436d2de7","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"744c9e5a49b84f579fde675cfcda9859c4712706","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":12}}},{"hash":"3662601f90ef6365b310b392fc5c65a88d932c14","isMergeCommit":false,"messageTitle":"A-Exceptions","messageBody":"","tags":["A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"66d3876a9cab21f7c3f70f718098d1264a0f7b11","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":12}}},{"hash":"d97a43c801dec422675dc6212146dccfd9504dee","isMergeCommit":false,"messageTitle":"Added more error handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":19}}}]},{"date":"2024-02-05","commitResults":[{"hash":"65fb64cf503279f7305998ad954d02ac44e1e672","isMergeCommit":false,"messageTitle":"Added more error handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"bd09a58a43d02fb80cff53e4a72fd58796379ef0","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":137,"deletions":4}}},{"hash":"89d7d9d13da5f37c16c2f48687d8a72b023017ef","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"c1212a7024f9101f8b5d8fa558fdce953d6dc833","isMergeCommit":false,"messageTitle":"branch-Level-8","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":16}}},{"hash":"1bce3840e676c69ccb5d2ce8731e9af743fc66ff","isMergeCommit":false,"messageTitle":"Level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"8323cbfa07206d2476b8f62958268a3b3d0117ce","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f48166a498339dccf8fa71da56f4cccd29b2f7e0","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"562c545d422af368983edbaea31ee65c4c6649e9","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"1cd758bbfba3ee1c063a73494d764857a948ac62","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"a777e4b7b684ab03da42c2f463f7213287309c6a","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"3d3bf487d96e12d074f092ee85b50af21b4d8c34","isMergeCommit":false,"messageTitle":"A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"44a22e2061955e0667f411437aa2882bf6221ebf","isMergeCommit":false,"messageTitle":"A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":4}}},{"hash":"d9e7ccce014397975983d9d2c5c2447a8a47813c","isMergeCommit":false,"messageTitle":"A-CodingStandard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":148,"deletions":158}}},{"hash":"842a93760d87fe4032178a85879e8b2d5c09c7ff","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":1}}},{"hash":"a3092129dba8c5b408af95dab1a58a20fa215ab2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"0cd31da83621fe2a7e77eba5b8a65bf701dca1b1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab137cb1c9a204d0013b743e7d57ae6d35a73760","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-07","commitResults":[{"hash":"176a8159a6f0e2b10557fa56119fc06010e130e7","isMergeCommit":false,"messageTitle":"Addressed peer PR review comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":54}}}]}]},"authorFileTypeContributionMap":{"HM33-Stu":{"java":535,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"HM33-Stu":11681.546},"authorDisplayNameMap":{"HM33-Stu":"CS2103T-W11-1 HARI..OHAN"}} diff --git a/Howlong11_ip_master/authorship.json b/Howlong11_ip_master/authorship.json index 0fc9461c..893b935d 100644 --- a/Howlong11_ip_master/authorship.json +++ b/Howlong11_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/lemona.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"[D] / [ ] / return book / 12월 01 2000 1111","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"[E] / [ ] / meeting / 11월 02 2019 1800 / 10월 01 2019 1800","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Howlong11":2}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":" private LocalDateTime dueDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":" private DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":" private DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":" public Deadline(String description, String dueDate) {","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":" this.dueDate \u003d LocalDateTime.parse(dueDate, inputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Howlong11"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Howlong11"},"content":" public String print() throws DateTimeParseException{","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Howlong11"},"content":" String time \u003d dueDate.format(outputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"[D]\" + super.print() + \"(by: \" + time + \")\";","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Howlong11"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"Howlong11"},"content":" public String getDescription() {","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"Howlong11"},"content":" String time \u003d dueDate.format(outputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"[D]\" + super.getDescription() + \" \" + time;","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"Howlong11"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"Howlong11"},"content":" public String getTaskInfo() {","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"Howlong11"},"content":" String time \u003d dueDate.format(outputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Howlong11"},"content":" return \"[D] \" + \"/ [\" + super.getStatusIcon()","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"Howlong11"},"content":" + \"] / \" + super.getTaskInfo() + \" / \" + time;","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Howlong11":35}},{"path":"src/main/java/DuplicateInstructionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"public class DuplicateInstructionException extends Exception{","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":" public String toString(String string) {","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":" String str;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":" switch (string) {","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":" case \"mark\":","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":" str \u003d \"\\t I think you haven\u0027t had enough vitamin D.\"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t Your task is already marked!\";","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":" str \u003d \"\\t I think you haven\u0027t had enough vitamin D.\"","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t Your task is already unmarked!\";","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":" default:","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":" str \u003d\"\\t I think you haven\u0027t had enough vitamin D.\"","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t Your task is already existing in the list!\";","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"Howlong11"},"content":" str \u003d str + \"\\n\\t I suggest you take some LEMONA\";","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"Howlong11":21}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":"public class Event extends Task{","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":" private LocalDateTime startTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":" private DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":" private DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":" public Event(String description, String startTime, String endTime) {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":" this.startTime \u003d LocalDateTime.parse(startTime, inputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":" this.endTime \u003d LocalDateTime.parse(endTime, inputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Howlong11"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Howlong11"},"content":" public String print() {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Howlong11"},"content":" String start \u003d startTime.format(outputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Howlong11"},"content":" String end \u003d endTime.format(outputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"[E]\" + super.print() + \"(from: \" +","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"Howlong11"},"content":" start + \"to: \" + end + \")\";","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Howlong11"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"Howlong11"},"content":" public String getDescription() {","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"Howlong11"},"content":" String start \u003d startTime.format(outputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Howlong11"},"content":" String end \u003d endTime.format(outputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"[E] \" + super.getDescription() + \" \" + start + \" \" + end;","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"Howlong11"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"Howlong11"},"content":" public String getTaskInfo() {","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"Howlong11"},"content":" String start \u003d startTime.format(outputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Howlong11"},"content":" String end \u003d endTime.format(outputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Howlong11"},"content":" return \"[E] \" + \"/ [\" + super.getStatusIcon() + \"] / \" + super.getTaskInfo() + \" / \" + start","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Howlong11"},"content":" + \" / \" + end;","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Howlong11":39}},{"path":"src/main/java/Lemona.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"import java.io.*;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":"public class Lemona {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":" private static final String path \u003d \"./data/lemona.txt\";","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":" private static final String line \u003d \"\\t______________________________________________________\";","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":" String addMessage \u003d \"\\t Got it. I\u0027ve added this task:\";","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"Howlong11"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"Howlong11"},"content":" list \u003d load(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"Howlong11"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t Sorry, I think I haven\u0027t had enough vitamin C.\"","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t I am unable to load tasks from the file.\"","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t I will need to go have some LEMONA\");","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"Howlong11"},"content":" //greeting","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Howlong11"},"content":" System.out.println(line +","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"Howlong11"},"content":" \"\\n\\t Hello! I\u0027m Lemona\" +","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"Howlong11"},"content":" \"\\n\\t Would you like some vitamins?\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"Howlong11"},"content":" \"\\n\" + line);","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Howlong11"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"Howlong11"},"content":" while (true) {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Howlong11"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Howlong11"},"content":" String[] untrimmedParts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"Howlong11"},"content":" String[] parts \u003d Arrays.stream(untrimmedParts)","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"Howlong11"},"content":" .map(String::trim)","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"Howlong11"},"content":" .filter(s -\u003e !s.isEmpty())","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"Howlong11"},"content":" .toArray(String[]::new);","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"Howlong11"},"content":" int size \u003d parts.length;","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"Howlong11"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Howlong11"},"content":" if (parts[0].equals(\"mark\") || parts[0].equals(\"unmark\") || parts[0].equals(\"delete\") \u0026\u0026 size \u003d\u003d 1) {","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"Howlong11"},"content":" if (size \u003d\u003d 1) {","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"Howlong11"},"content":" throw new MissingIndexException();","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"Howlong11"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"Howlong11"},"content":" case (\"bye\"):","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t Bye. Don\u0027t forget to take a LEMONA!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"Howlong11"},"content":" scanner.close();","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"Howlong11"},"content":" return;","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"Howlong11"},"content":" case (\"list\"):","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"Howlong11"},"content":" if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t I think you haven\u0027t had enough vitamin E.\"","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t You do not have any tasks on the list yet!\"","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t I suggest you take some LEMONA.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"Howlong11"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t Here are the tasks in your list:\");","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"Howlong11"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t \" + (i + 1) + \".\" + list.get(i).print());","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":69,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"Howlong11"},"content":" case (\"mark\"):","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"Howlong11"},"content":" int index \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"Howlong11"},"content":" if (list.size() \u003c index) {","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"Howlong11"},"content":" throw new OutOfIndexException();","lastModifiedDate":"2024-02-04"},{"lineNumber":74,"author":{"gitId":"Howlong11"},"content":" } else if (list.get(index - 1).getStatusIcon().equals(\"X\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":75,"author":{"gitId":"Howlong11"},"content":" throw new DuplicateInstructionException();","lastModifiedDate":"2024-02-04"},{"lineNumber":76,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":78,"author":{"gitId":"Howlong11"},"content":" list.get(index - 1).markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"Howlong11"},"content":" save(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":80,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t Nice! I\u0027ve marked this task as done:\" + \"\\n\\t\\t\" +","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"Howlong11"},"content":" list.get(index - 1).print());","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-04"},{"lineNumber":83,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"Howlong11"},"content":" case (\"unmark\"):","lastModifiedDate":"2024-02-04"},{"lineNumber":85,"author":{"gitId":"Howlong11"},"content":" index \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-02-04"},{"lineNumber":86,"author":{"gitId":"Howlong11"},"content":" if (list.size() \u003c index) {","lastModifiedDate":"2024-02-04"},{"lineNumber":87,"author":{"gitId":"Howlong11"},"content":" throw new OutOfIndexException();","lastModifiedDate":"2024-02-04"},{"lineNumber":88,"author":{"gitId":"Howlong11"},"content":" } else if (list.get(index - 1).getStatusIcon().equals(\" \")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":89,"author":{"gitId":"Howlong11"},"content":" throw new DuplicateInstructionException();","lastModifiedDate":"2024-02-04"},{"lineNumber":90,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":92,"author":{"gitId":"Howlong11"},"content":" list.get(index - 1).unmarkAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"Howlong11"},"content":" save(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":94,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t OK, I\u0027ve marked this task as not done yet:\" + \"\\n\\t\\t\" +","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"Howlong11"},"content":" list.get(index - 1).print());","lastModifiedDate":"2024-02-04"},{"lineNumber":96,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-04"},{"lineNumber":97,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"Howlong11"},"content":" case (\"delete\"):","lastModifiedDate":"2024-02-04"},{"lineNumber":99,"author":{"gitId":"Howlong11"},"content":" index \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-02-04"},{"lineNumber":100,"author":{"gitId":"Howlong11"},"content":" if (list.size() \u003c index || index \u003c 1) {","lastModifiedDate":"2024-02-04"},{"lineNumber":101,"author":{"gitId":"Howlong11"},"content":" throw new OutOfIndexException();","lastModifiedDate":"2024-02-04"},{"lineNumber":102,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":104,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t OK, I\u0027ve removed this task:\" + \"\\n\\t\\t\" +","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"Howlong11"},"content":" list.get(index - 1).print());","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"Howlong11"},"content":" list.remove(index - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"Howlong11"},"content":" save(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":108,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-04"},{"lineNumber":110,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"Howlong11"},"content":" case (\"todo\"):","lastModifiedDate":"2024-02-04"},{"lineNumber":112,"author":{"gitId":"Howlong11"},"content":" if (size \u003d\u003d 1) {","lastModifiedDate":"2024-02-04"},{"lineNumber":113,"author":{"gitId":"Howlong11"},"content":" throw new MissingDescriptionException();","lastModifiedDate":"2024-02-04"},{"lineNumber":114,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":115,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"Howlong11"},"content":" Task task \u003d new Todo(parts[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"Howlong11"},"content":" for (Task value : list) {","lastModifiedDate":"2024-02-05"},{"lineNumber":118,"author":{"gitId":"Howlong11"},"content":" if (value.getDescription().equals(task.getDescription())) {","lastModifiedDate":"2024-02-05"},{"lineNumber":119,"author":{"gitId":"Howlong11"},"content":" throw new DuplicateInstructionException();","lastModifiedDate":"2024-02-04"},{"lineNumber":120,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":121,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":122,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":123,"author":{"gitId":"Howlong11"},"content":" list.add(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"Howlong11"},"content":" save(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":125,"author":{"gitId":"Howlong11"},"content":" System.out.println(addMessage);","lastModifiedDate":"2024-02-04"},{"lineNumber":126,"author":{"gitId":"Howlong11"},"content":" System.out.print(\"\\t \" + task.print());","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\n\\t Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":128,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-04"},{"lineNumber":129,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":130,"author":{"gitId":"Howlong11"},"content":" case (\"deadline\"):","lastModifiedDate":"2024-02-04"},{"lineNumber":131,"author":{"gitId":"Howlong11"},"content":" if (size \u003d\u003d 1 || parts[1].split(\"/by \").length \u003d\u003d 1) {","lastModifiedDate":"2024-02-04"},{"lineNumber":132,"author":{"gitId":"Howlong11"},"content":" throw new MissingDescriptionException();","lastModifiedDate":"2024-02-04"},{"lineNumber":133,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":134,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"Howlong11"},"content":" String[] content \u003d parts[1].split(\"/by \");","lastModifiedDate":"2024-01-26"},{"lineNumber":136,"author":{"gitId":"Howlong11"},"content":" task \u003d new Deadline(content[0], content[1]);","lastModifiedDate":"2024-02-04"},{"lineNumber":137,"author":{"gitId":"Howlong11"},"content":" for (Task value : list) {","lastModifiedDate":"2024-02-05"},{"lineNumber":138,"author":{"gitId":"Howlong11"},"content":" if (value.getDescription().equals(task.getDescription())) {","lastModifiedDate":"2024-02-05"},{"lineNumber":139,"author":{"gitId":"Howlong11"},"content":" throw new DuplicateInstructionException();","lastModifiedDate":"2024-02-04"},{"lineNumber":140,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":141,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":142,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":143,"author":{"gitId":"Howlong11"},"content":" list.add(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":144,"author":{"gitId":"Howlong11"},"content":" save(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":145,"author":{"gitId":"Howlong11"},"content":" System.out.println(addMessage);","lastModifiedDate":"2024-02-04"},{"lineNumber":146,"author":{"gitId":"Howlong11"},"content":" System.out.print(\"\\t \" + task.print());","lastModifiedDate":"2024-01-26"},{"lineNumber":147,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\n\\t Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":148,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-04"},{"lineNumber":149,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":150,"author":{"gitId":"Howlong11"},"content":" case (\"event\"):","lastModifiedDate":"2024-02-04"},{"lineNumber":151,"author":{"gitId":"Howlong11"},"content":" if (size \u003d\u003d 1 || parts[1].split(\"/from \").length \u003d\u003d 1) {","lastModifiedDate":"2024-02-04"},{"lineNumber":152,"author":{"gitId":"Howlong11"},"content":" throw new MissingDescriptionException();","lastModifiedDate":"2024-02-04"},{"lineNumber":153,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":154,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":155,"author":{"gitId":"Howlong11"},"content":" content \u003d parts[1].split(\"/from \");","lastModifiedDate":"2024-02-04"},{"lineNumber":156,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":157,"author":{"gitId":"Howlong11"},"content":" if (size \u003d\u003d 1 || content[1].split(\"/to \").length \u003d\u003d 1) {","lastModifiedDate":"2024-02-04"},{"lineNumber":158,"author":{"gitId":"Howlong11"},"content":" throw new MissingDescriptionException();","lastModifiedDate":"2024-02-04"},{"lineNumber":159,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":160,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":161,"author":{"gitId":"Howlong11"},"content":" String[] dates \u003d content[1].split(\" /to \");","lastModifiedDate":"2024-01-26"},{"lineNumber":162,"author":{"gitId":"Howlong11"},"content":" task \u003d new Event(content[0], dates[0], dates[1]);","lastModifiedDate":"2024-02-04"},{"lineNumber":163,"author":{"gitId":"Howlong11"},"content":" for (Task value : list) {","lastModifiedDate":"2024-02-05"},{"lineNumber":164,"author":{"gitId":"Howlong11"},"content":" if (value.getDescription().equals(task.getDescription())) {","lastModifiedDate":"2024-02-05"},{"lineNumber":165,"author":{"gitId":"Howlong11"},"content":" throw new DuplicateInstructionException();","lastModifiedDate":"2024-02-04"},{"lineNumber":166,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":167,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":168,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":169,"author":{"gitId":"Howlong11"},"content":" list.add(task);","lastModifiedDate":"2024-01-26"},{"lineNumber":170,"author":{"gitId":"Howlong11"},"content":" save(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":171,"author":{"gitId":"Howlong11"},"content":" System.out.println(addMessage);","lastModifiedDate":"2024-02-04"},{"lineNumber":172,"author":{"gitId":"Howlong11"},"content":" System.out.print(\"\\t \" + task.print());","lastModifiedDate":"2024-01-26"},{"lineNumber":173,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\n\\t Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":174,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-04"},{"lineNumber":175,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":176,"author":{"gitId":"Howlong11"},"content":" default:","lastModifiedDate":"2024-02-04"},{"lineNumber":177,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t I think you haven\u0027t had enough vitamin C.\" +","lastModifiedDate":"2024-01-28"},{"lineNumber":178,"author":{"gitId":"Howlong11"},"content":" \"\\n\\t I can\u0027t understand what you want me to do!\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":179,"author":{"gitId":"Howlong11"},"content":" \"\\n\\t I suggest you take some LEMONA.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":180,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-04"},{"lineNumber":181,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":182,"author":{"gitId":"Howlong11"},"content":" } catch (OutOfIndexException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":183,"author":{"gitId":"Howlong11"},"content":" System.out.println(e.toString(list.size()));","lastModifiedDate":"2024-02-04"},{"lineNumber":184,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-04"},{"lineNumber":185,"author":{"gitId":"Howlong11"},"content":" } catch (MissingIndexException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":186,"author":{"gitId":"Howlong11"},"content":" System.out.println(e.toString(parts[0]));","lastModifiedDate":"2024-02-04"},{"lineNumber":187,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-04"},{"lineNumber":188,"author":{"gitId":"Howlong11"},"content":" } catch (MissingDescriptionException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":189,"author":{"gitId":"Howlong11"},"content":" System.out.println(e.toString(parts[0]));","lastModifiedDate":"2024-02-04"},{"lineNumber":190,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-04"},{"lineNumber":191,"author":{"gitId":"Howlong11"},"content":" } catch (DuplicateInstructionException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":192,"author":{"gitId":"Howlong11"},"content":" System.out.println(e.toString(parts[0]));","lastModifiedDate":"2024-02-04"},{"lineNumber":193,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-04"},{"lineNumber":194,"author":{"gitId":"Howlong11"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":195,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t Sorry, I think I haven\u0027t had enough vitamin C.\"","lastModifiedDate":"2024-02-05"},{"lineNumber":196,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t I am unable to save tasks into the file.\"","lastModifiedDate":"2024-02-05"},{"lineNumber":197,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t I will need to go have some LEMONA.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":198,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-06"},{"lineNumber":199,"author":{"gitId":"Howlong11"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":200,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t I think you haven\u0027t had enough vitamin C.\"","lastModifiedDate":"2024-02-06"},{"lineNumber":201,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t Your time format should be :\"","lastModifiedDate":"2024-02-06"},{"lineNumber":202,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t\\t { dd/MM/yyyy HHmm }\"","lastModifiedDate":"2024-02-06"},{"lineNumber":203,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t I suggest you take some LEMONA.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":204,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-06"},{"lineNumber":205,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":206,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":207,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":208,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":209,"author":{"gitId":"Howlong11"},"content":" public static String listToString(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-02-05"},{"lineNumber":210,"author":{"gitId":"Howlong11"},"content":" String content \u003d \"\";","lastModifiedDate":"2024-02-05"},{"lineNumber":211,"author":{"gitId":"Howlong11"},"content":" for (int i \u003d 0; i \u003c list.size() - 1; i++) {","lastModifiedDate":"2024-02-05"},{"lineNumber":212,"author":{"gitId":"Howlong11"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2024-02-05"},{"lineNumber":213,"author":{"gitId":"Howlong11"},"content":" content \u003d content + task.getTaskInfo() + \"\\n\";","lastModifiedDate":"2024-02-05"},{"lineNumber":214,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":215,"author":{"gitId":"Howlong11"},"content":" Task task \u003d list.get(list.size() - 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":216,"author":{"gitId":"Howlong11"},"content":" content \u003d content + task.getTaskInfo();","lastModifiedDate":"2024-02-05"},{"lineNumber":217,"author":{"gitId":"Howlong11"},"content":" return content;","lastModifiedDate":"2024-02-05"},{"lineNumber":218,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":219,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":220,"author":{"gitId":"Howlong11"},"content":" public static ArrayList\u003cTask\u003e stringToList(ArrayList\u003cTask\u003e array, String text) {","lastModifiedDate":"2024-02-05"},{"lineNumber":221,"author":{"gitId":"Howlong11"},"content":" String[] list \u003d text.split(\"(new) \");","lastModifiedDate":"2024-02-05"},{"lineNumber":222,"author":{"gitId":"Howlong11"},"content":" for (String s : list) {","lastModifiedDate":"2024-02-05"},{"lineNumber":223,"author":{"gitId":"Howlong11"},"content":" String[] info \u003d s.split(\"/ \");","lastModifiedDate":"2024-02-05"},{"lineNumber":224,"author":{"gitId":"Howlong11"},"content":" switch (info[0]) {","lastModifiedDate":"2024-02-05"},{"lineNumber":225,"author":{"gitId":"Howlong11"},"content":" case \"[T] \":","lastModifiedDate":"2024-02-05"},{"lineNumber":226,"author":{"gitId":"Howlong11"},"content":" Task task \u003d new Todo(info[2]);","lastModifiedDate":"2024-02-05"},{"lineNumber":227,"author":{"gitId":"Howlong11"},"content":" if (info[1].equals(\"[X]\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":228,"author":{"gitId":"Howlong11"},"content":" task.markAsDone();","lastModifiedDate":"2024-02-05"},{"lineNumber":229,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":230,"author":{"gitId":"Howlong11"},"content":" array.add(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":231,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":232,"author":{"gitId":"Howlong11"},"content":" case \"[D] \":","lastModifiedDate":"2024-02-05"},{"lineNumber":233,"author":{"gitId":"Howlong11"},"content":" String dueDate \u003d LocalDateTime.parse(info[3], DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\"))","lastModifiedDate":"2024-02-06"},{"lineNumber":234,"author":{"gitId":"Howlong11"},"content":" .format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":235,"author":{"gitId":"Howlong11"},"content":" task \u003d new Deadline(info[2], dueDate);","lastModifiedDate":"2024-02-06"},{"lineNumber":236,"author":{"gitId":"Howlong11"},"content":" if (info[1].equals(\"[X]\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":237,"author":{"gitId":"Howlong11"},"content":" task.markAsDone();","lastModifiedDate":"2024-02-05"},{"lineNumber":238,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":239,"author":{"gitId":"Howlong11"},"content":" array.add(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":240,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":241,"author":{"gitId":"Howlong11"},"content":" case \"[E] \":","lastModifiedDate":"2024-02-05"},{"lineNumber":242,"author":{"gitId":"Howlong11"},"content":" String startTime \u003d LocalDateTime.parse(info[3], DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\"))","lastModifiedDate":"2024-02-06"},{"lineNumber":243,"author":{"gitId":"Howlong11"},"content":" .format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":244,"author":{"gitId":"Howlong11"},"content":" String endTime \u003d LocalDateTime.parse(info[4], DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\"))","lastModifiedDate":"2024-02-06"},{"lineNumber":245,"author":{"gitId":"Howlong11"},"content":" .format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":246,"author":{"gitId":"Howlong11"},"content":" task \u003d new Event(info[2], startTime, endTime);","lastModifiedDate":"2024-02-06"},{"lineNumber":247,"author":{"gitId":"Howlong11"},"content":" if (info[1].equals(\"[X]\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":248,"author":{"gitId":"Howlong11"},"content":" task.markAsDone();","lastModifiedDate":"2024-02-05"},{"lineNumber":249,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":250,"author":{"gitId":"Howlong11"},"content":" array.add(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":251,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":252,"author":{"gitId":"Howlong11"},"content":" default:","lastModifiedDate":"2024-02-05"},{"lineNumber":253,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"File is corrupted!\");","lastModifiedDate":"2024-02-05"},{"lineNumber":254,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":255,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":256,"author":{"gitId":"Howlong11"},"content":" return array;","lastModifiedDate":"2024-02-05"},{"lineNumber":257,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":258,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":259,"author":{"gitId":"Howlong11"},"content":" public static ArrayList\u003cTask\u003e load(ArrayList\u003cTask\u003e array) throws IOException{","lastModifiedDate":"2024-02-05"},{"lineNumber":260,"author":{"gitId":"Howlong11"},"content":" File file \u003d new File(path);","lastModifiedDate":"2024-02-05"},{"lineNumber":261,"author":{"gitId":"Howlong11"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-05"},{"lineNumber":262,"author":{"gitId":"Howlong11"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":263,"author":{"gitId":"Howlong11"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-02-05"},{"lineNumber":264,"author":{"gitId":"Howlong11"},"content":" file.createNewFile();","lastModifiedDate":"2024-02-05"},{"lineNumber":265,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":266,"author":{"gitId":"Howlong11"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-02-05"},{"lineNumber":267,"author":{"gitId":"Howlong11"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":268,"author":{"gitId":"Howlong11"},"content":" String task \u003d scanner.nextLine();","lastModifiedDate":"2024-02-05"},{"lineNumber":269,"author":{"gitId":"Howlong11"},"content":" tasks \u003d stringToList(array, task);","lastModifiedDate":"2024-02-05"},{"lineNumber":270,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":271,"author":{"gitId":"Howlong11"},"content":" return tasks;","lastModifiedDate":"2024-02-05"},{"lineNumber":272,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":273,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":274,"author":{"gitId":"Howlong11"},"content":" public static void save(ArrayList\u003cTask\u003e tasks) throws IOException{","lastModifiedDate":"2024-02-05"},{"lineNumber":275,"author":{"gitId":"Howlong11"},"content":" if (tasks.size() !\u003d 0) {","lastModifiedDate":"2024-02-06"},{"lineNumber":276,"author":{"gitId":"Howlong11"},"content":" File file \u003d new File(path);","lastModifiedDate":"2024-02-05"},{"lineNumber":277,"author":{"gitId":"Howlong11"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":278,"author":{"gitId":"Howlong11"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-02-05"},{"lineNumber":279,"author":{"gitId":"Howlong11"},"content":" file.createNewFile();","lastModifiedDate":"2024-02-05"},{"lineNumber":280,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":281,"author":{"gitId":"Howlong11"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-02-05"},{"lineNumber":282,"author":{"gitId":"Howlong11"},"content":" fw.write(listToString(tasks));","lastModifiedDate":"2024-02-05"},{"lineNumber":283,"author":{"gitId":"Howlong11"},"content":" fw.close();","lastModifiedDate":"2024-02-05"},{"lineNumber":284,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":285,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":286,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Howlong11":286}},{"path":"src/main/java/MissingDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"public class MissingDescriptionException extends Exception{","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":" public String toString(String string) {","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"\\t I think you haven\u0027t had enough vitamin K.\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":" \"\\n\\t Your input should be in format of:\";","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":" if (string.equalsIgnoreCase(\"todo\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":" str \u003d str + \"\\n\\t\\t { todo (Task) }\";","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":" } else if (string.equalsIgnoreCase(\"deadline\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":" str \u003d str + \"\\n\\t\\t { deadline (Task) (/by DueDate) }\";","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":" } else if (string.equalsIgnoreCase(\"event\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":" str \u003d str + \"\\n\\t\\t { event (Task) (/from StartDate) (/to EndDate) }\";","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":" str \u003d str + \"\\n\\t I suggest you take some LEMONA.\";","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"Howlong11":15}},{"path":"src/main/java/MissingIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"public class MissingIndexException extends Exception{","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":" public String toString(String string) {","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"\\t I think you haven\u0027t had enough vitamin C.\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":" \"\\n\\t You need to tell me which task to \" + string +","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":" \"!\\n\\t I suggest you take some LEMONA.\";","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"Howlong11":8}},{"path":"src/main/java/OutOfIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"public class OutOfIndexException extends Exception {","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":" public String toString(Integer index) {","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":" String message;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":" if (index \u003d\u003d 1) {","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":" message \u003d \"\\n\\t You only have 1 task!\";","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":" } else if (index \u003d\u003d 0) {","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":" message \u003d \"\\n\\t You do not have any task!\";","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":" message \u003d \"\\n\\t You only have \" + index + \" tasks!\";","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"\\t I think you haven\u0027t had enough vitamin A.\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":" message + \"\\n\\t I suggest you take some LEMONA.\";","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"Howlong11":15}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":" protected String type;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Howlong11"},"content":" return this.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Howlong11"},"content":" public String getType() {","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"Howlong11"},"content":" return \"\";","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"Howlong11"},"content":" public String getTaskInfo() {","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"Howlong11"},"content":" return this.description;","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Howlong11"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Howlong11"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Howlong11"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Howlong11"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Howlong11"},"content":" public String print() {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Howlong11":37}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":" public String print() {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"[T]\" + super.print();","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":" public String getDescription() {","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"[T] \" + super.getDescription();","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"Howlong11"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"Howlong11"},"content":" public String getTaskInfo() {","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"Howlong11"},"content":" return \"[T] \" + \"/ [\" + super.getStatusIcon()","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"Howlong11"},"content":" + \"] / \" + super.getTaskInfo();","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Howlong11":25}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"todo vitamin c","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Howlong11":4}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":"del ACTUAL.TXT","lastModifiedDate":"2024-01-26"},{"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":"Howlong11"},"content":"java -classpath ..\\bin Lemona \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-26"},{"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":{"Howlong11":2,"-":19}}] +[{"path":"data/lemona.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"[T] / [ ] / vitamin c","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"[D] / [X] / hw / 11월 01 1111 1111","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":"[E] / [X]/ event / 11월 01 1111 1111/ 12월 02 2222 2222","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Howlong11":3}},{"path":"src/main/java/Lemona.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"import java.io.*;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"import oop.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":"import oop.Parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":"import oop.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":"import oop.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":"import task.Todo;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":"import task.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":"import task.Event;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":"import task.Deadline;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":"public class Lemona {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":" private Storage storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":" private Ui ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"Howlong11"},"content":" public Lemona(String filePath) {","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Howlong11"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Howlong11"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Howlong11"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"Howlong11"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Howlong11"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"Howlong11"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Howlong11"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"Howlong11"},"content":" public void run() {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Howlong11"},"content":" ui.greet();","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Howlong11"},"content":" while (true) {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Howlong11"},"content":" String input \u003d ui.readInput();","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Howlong11"},"content":" String[] parsedInput \u003d Parser.parse(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Howlong11"},"content":" switch (parsedInput[0]) {","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Howlong11"},"content":" case (\"bye\"):","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"Howlong11"},"content":" ui.bye();","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Howlong11"},"content":" System.exit(0);","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"Howlong11"},"content":" case (\"mark\"):","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"Howlong11"},"content":" tasks.mark(Integer.parseInt(parsedInput[1]));","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Howlong11"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"Howlong11"},"content":" case (\"unmark\"):","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"Howlong11"},"content":" tasks.unmark(Integer.parseInt(parsedInput[1]));","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"Howlong11"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"Howlong11"},"content":" case (\"delete\"):","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"Howlong11"},"content":" tasks.delete(Integer.parseInt(parsedInput[1]));","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"Howlong11"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"Howlong11"},"content":" case (\"list\"):","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"Howlong11"},"content":" ui.list(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"Howlong11"},"content":" case (\"todo\"):","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"Howlong11"},"content":" Task task \u003d new Todo(parsedInput[1]);","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"Howlong11"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"Howlong11"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"Howlong11"},"content":" case (\"deadline\"):","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"Howlong11"},"content":" task \u003d new Deadline(parsedInput[1], parsedInput[2]);","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"Howlong11"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"Howlong11"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"Howlong11"},"content":" case (\"event\"):","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"Howlong11"},"content":" task \u003d new Event(parsedInput[1], parsedInput[2], parsedInput[3]);","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"Howlong11"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"Howlong11"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":70,"author":{"gitId":"Howlong11"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"Howlong11"},"content":" new Lemona(\"data/lemona.txt\").run();","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Howlong11":73}},{"path":"src/main/java/Task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"package task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":"import oop.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":" private LocalDateTime dueDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":" private static final String line \u003d \"\\t______________________________________________________\";","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":" private DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":" private DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":" public Deadline(String description, String dueDate) {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Howlong11"},"content":" this.dueDate \u003d LocalDateTime.parse(dueDate, inputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Howlong11"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Howlong11"},"content":" public String print(){","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Howlong11"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Howlong11"},"content":" String time \u003d dueDate.format(outputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Howlong11"},"content":" str \u003d \"[D]\" + super.print() + \"(by: \" + time + \")\";","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Howlong11"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t I think you haven\u0027t had enough vitamin C.\"","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t Your time format should be :\"","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t\\t { dd/MM/yyyy HHmm }\"","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t I suggest you take some LEMONA.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Howlong11"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"Howlong11"},"content":" public String getDescription() {","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"Howlong11"},"content":" String time \u003d dueDate.format(outputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"[D]\" + super.getDescription() + \" \" + time;","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"Howlong11"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"Howlong11"},"content":" public String getTaskInfo() {","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"Howlong11"},"content":" String time \u003d dueDate.format(outputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"Howlong11"},"content":" return \"[D] \" + \"/ [\" + super.getStatusIcon()","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"Howlong11"},"content":" + \"] / \" + super.getTaskInfo() + \"/ \" + time;","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Howlong11":48}},{"path":"src/main/java/Task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"package task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":"public class Event extends Task{","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":" private LocalDateTime startTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":" private static final String line \u003d \"\\t______________________________________________________\";","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":" private DateTimeFormatter inputFormat \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":" private DateTimeFormatter outputFormat \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":" public Event(String description, String startTime, String endTime) {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Howlong11"},"content":" this.startTime \u003d LocalDateTime.parse(startTime, inputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Howlong11"},"content":" this.endTime \u003d LocalDateTime.parse(endTime, inputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Howlong11"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Howlong11"},"content":" public String print() {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Howlong11"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Howlong11"},"content":" String start \u003d startTime.format(outputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Howlong11"},"content":" String end \u003d endTime.format(outputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Howlong11"},"content":" str \u003d \"[E]\" + super.print() + \"(from: \" +","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Howlong11"},"content":" start + \") (to: \" + end + \")\";","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Howlong11"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t I think you haven\u0027t had enough vitamin C.\"","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t Your time format should be :\"","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t\\t { dd/MM/yyyy HHmm }\"","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t I suggest you take some LEMONA.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Howlong11"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"Howlong11"},"content":" public String getDescription() {","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"Howlong11"},"content":" String start \u003d startTime.format(outputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"Howlong11"},"content":" String end \u003d endTime.format(outputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"[E] \" + super.getDescription() + \" \" + start + \" \" + end;","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"Howlong11"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"Howlong11"},"content":" public String getTaskInfo() {","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"Howlong11"},"content":" String start \u003d startTime.format(outputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"Howlong11"},"content":" String end \u003d endTime.format(outputFormat);","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"Howlong11"},"content":" return \"[E] \" + \"/ [\" + super.getStatusIcon() + \"]/ \" + super.getTaskInfo() + \"/ \" + start","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"Howlong11"},"content":" + \"/ \" + end;","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Howlong11":53}},{"path":"src/main/java/Task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"package task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":" protected String type;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Howlong11"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Howlong11"},"content":" return this.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Howlong11"},"content":" public String getType() {","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"Howlong11"},"content":" return \"\";","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"Howlong11"},"content":" public String getTaskInfo() {","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"Howlong11"},"content":" return this.description;","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Howlong11"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Howlong11"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Howlong11"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Howlong11"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Howlong11"},"content":" public String print() {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Howlong11":39}},{"path":"src/main/java/Task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"package task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":"public class Todo extends Task{","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":" public String print() {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"[T]\" + super.print();","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"Howlong11"},"content":" public String getDescription() {","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"[T] \" + super.getDescription();","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"Howlong11"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"Howlong11"},"content":" public String getTaskInfo() {","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"Howlong11"},"content":" return \"[T] \" + \"/ [\" + super.getStatusIcon()","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"Howlong11"},"content":" + \"] / \" + super.getTaskInfo();","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Howlong11":27}},{"path":"src/main/java/exceptions/DuplicateInstructionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"package exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"public class DuplicateInstructionException extends Exception{","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":" public String toString(String string) {","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":" String str;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":" switch (string) {","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":" case \"mark\":","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":" str \u003d \"\\t I think you haven\u0027t had enough vitamin D.\"","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t Your task is already marked!\";","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":" str \u003d \"\\t I think you haven\u0027t had enough vitamin D.\"","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t Your task is already unmarked!\";","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":" default:","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":" str \u003d\"\\t I think you haven\u0027t had enough vitamin D.\"","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t Your task is already existing in the list!\";","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"Howlong11"},"content":" str \u003d str + \"\\n\\t I suggest you take some LEMONA\";","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"Howlong11":22}},{"path":"src/main/java/exceptions/MissingDescriptionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"package exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"public class MissingDescriptionException extends Exception{","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":" public String toString(String string) {","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"\\t I think you haven\u0027t had enough vitamin K.\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":" \"\\n\\t Your input should be in format of:\";","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":" if (string.equalsIgnoreCase(\"todo\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":" str \u003d str + \"\\n\\t\\t { todo (Task) }\";","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":" } else if (string.equalsIgnoreCase(\"deadline\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":" str \u003d str + \"\\n\\t\\t { deadline (Task) (/by DueDate) }\";","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":" } else if (string.equalsIgnoreCase(\"event\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":" str \u003d str + \"\\n\\t\\t { event (Task) (/from StartDate) (/to EndDate) }\";","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":" str \u003d str + \"\\n\\t I suggest you take some LEMONA.\";","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"Howlong11":16}},{"path":"src/main/java/exceptions/MissingIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"package exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"public class MissingIndexException extends Exception{","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":" public String toString(String string) {","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"\\t I think you haven\u0027t had enough vitamin C.\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":" \"\\n\\t You need to tell me which task to \" + string +","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":" \"!\\n\\t I suggest you take some LEMONA.\";","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"Howlong11":9}},{"path":"src/main/java/exceptions/OutOfIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"package exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"public class OutOfIndexException extends Exception {","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":" public String toString(Integer index) {","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":" String message;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":" if (index \u003d\u003d 1) {","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":" message \u003d \"\\n\\t You only have 1 task!\";","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":" } else if (index \u003d\u003d 0) {","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":" message \u003d \"\\n\\t You do not have any task!\";","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":" message \u003d \"\\n\\t You only have \" + index + \" tasks!\";","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":" String str \u003d \"\\t I think you haven\u0027t had enough vitamin A.\" +","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":" message + \"\\n\\t I suggest you take some LEMONA.\";","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":" return str;","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"Howlong11":16}},{"path":"src/main/java/oop/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"package oop;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":"import exceptions.MissingIndexException;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":"import exceptions.MissingDescriptionException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":"public class Parser {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":" private static final String line \u003d \"\\t______________________________________________________\";","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":" public static String[] trim(String input) {","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":" String[] untrimmedParts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":" String[] parts \u003d Arrays.stream(untrimmedParts)","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":" .map(String::trim)","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":" .filter(s -\u003e !s.isEmpty())","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":" .toArray(String[]::new);","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":" return parts;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Howlong11"},"content":" public static String[] parse(String input) {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Howlong11"},"content":" String[] parts \u003d trim(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Howlong11"},"content":" int size \u003d parts.length;","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Howlong11"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Howlong11"},"content":" if (parts[0].equals(\"mark\") || parts[0].equals(\"unmark\") || parts[0].equals(\"delete\") \u0026\u0026 size \u003d\u003d 1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Howlong11"},"content":" if (size \u003d\u003d 1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Howlong11"},"content":" throw new MissingIndexException();","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Howlong11"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Howlong11"},"content":" case (\"deadline\"):","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Howlong11"},"content":" if (size \u003d\u003d 1 || parts[1].split(\"/by \").length \u003d\u003d 1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Howlong11"},"content":" throw new MissingDescriptionException();","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Howlong11"},"content":" String[] content \u003d parts[1].split(\"/by \");","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Howlong11"},"content":" String[] temp \u003d parts;","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"Howlong11"},"content":" parts \u003d new String[3];","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"Howlong11"},"content":" parts[0] \u003d temp[0];","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Howlong11"},"content":" parts[1] \u003d content[0];","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"Howlong11"},"content":" parts[2] \u003d content[1];","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"Howlong11"},"content":" case (\"event\"):","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"Howlong11"},"content":" if (size \u003d\u003d 1 || parts[1].split(\"/from \").length \u003d\u003d 1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"Howlong11"},"content":" throw new MissingDescriptionException();","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"Howlong11"},"content":" content \u003d parts[1].split(\"/from \");","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"Howlong11"},"content":" if (size \u003d\u003d 1 || content[1].split(\"/to \").length \u003d\u003d 1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"Howlong11"},"content":" throw new MissingDescriptionException();","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"Howlong11"},"content":" String[] dates \u003d content[1].split(\" /to \");","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"Howlong11"},"content":" temp \u003d parts;","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"Howlong11"},"content":" parts \u003d new String[4];","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"Howlong11"},"content":" parts[0] \u003d temp[0];","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"Howlong11"},"content":" parts[1] \u003d content[0];","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"Howlong11"},"content":" parts[2] \u003d dates[0];","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"Howlong11"},"content":" parts[3] \u003d dates[1];","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"Howlong11"},"content":" case (\"todo\"):","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"Howlong11"},"content":" if (size \u003d\u003d 1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"Howlong11"},"content":" throw new MissingDescriptionException();","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"Howlong11"},"content":" default:","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"Howlong11"},"content":" if (!parts[0].equals(\"list\") \u0026\u0026 !parts[0].equals(\"bye\") \u0026\u0026 !parts[0].equals(\"mark\")","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"Howlong11"},"content":" \u0026\u0026 !parts[0].equals(\"unmark\") \u0026\u0026 !parts[0].equals(\"delete\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t I think you haven\u0027t had enough vitamin C.\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"Howlong11"},"content":" \"\\n\\t I can\u0027t understand what you want me to do!\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"Howlong11"},"content":" \"\\n\\t I suggest you take some LEMONA.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"Howlong11"},"content":" } catch (MissingDescriptionException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"Howlong11"},"content":" System.out.println(e.toString(parts[0]));","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"Howlong11"},"content":" } catch (MissingIndexException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"Howlong11"},"content":" System.out.println(e.toString(parts[0]));","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"Howlong11"},"content":" return parts;","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Howlong11":86}},{"path":"src/main/java/oop/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"package oop;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":"import java.io.File;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":"import task.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":"import task.Todo;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":"import task.Deadline;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":"import task.Event;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Howlong11"},"content":"public class Storage {","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Howlong11"},"content":" private static String filePath;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Howlong11"},"content":" private static final String line \u003d \"\\t______________________________________________________\";","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Howlong11"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Howlong11"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Howlong11"},"content":" public static String listToString(TaskList list) {","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Howlong11"},"content":" String content \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Howlong11"},"content":" for (int i \u003d 0; i \u003c list.size() - 1; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Howlong11"},"content":" Task task \u003d list.get(i);","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Howlong11"},"content":" content \u003d content + task.getTaskInfo() + \"\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Howlong11"},"content":" Task task \u003d list.get(list.size() - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Howlong11"},"content":" content \u003d content + task.getTaskInfo();","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Howlong11"},"content":" return content;","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Howlong11"},"content":" public static ArrayList\u003cTask\u003e stringToList(ArrayList\u003cTask\u003e tasks, String text) {","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Howlong11"},"content":" String[] list \u003d text.split(\"(new) \");","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Howlong11"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"Howlong11"},"content":" for (String s : list) {","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"Howlong11"},"content":" String[] info \u003d s.split(\"/ \");","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Howlong11"},"content":" switch (info[0]) {","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"Howlong11"},"content":" case \"[T] \":","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"Howlong11"},"content":" Task task \u003d new Todo(info[2]);","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"Howlong11"},"content":" if (info[1].equals(\"[X]\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"Howlong11"},"content":" task.markAsDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"Howlong11"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"Howlong11"},"content":" case \"[D] \":","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"Howlong11"},"content":" String dueDate \u003d LocalDateTime.parse(info[3], DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\"))","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"Howlong11"},"content":" .format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"Howlong11"},"content":" task \u003d new Deadline(info[2], dueDate);","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"Howlong11"},"content":" if (info[1].equals(\"[X]\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"Howlong11"},"content":" task.markAsDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"Howlong11"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"Howlong11"},"content":" case \"[E] \":","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"Howlong11"},"content":" String startTime \u003d LocalDateTime.parse(info[3], DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\"))","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"Howlong11"},"content":" .format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"Howlong11"},"content":" String endTime \u003d LocalDateTime.parse(info[4], DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\"))","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"Howlong11"},"content":" .format(DateTimeFormatter.ofPattern(\"dd/MM/yyyy HHmm\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"Howlong11"},"content":" task \u003d new Event(info[2], startTime, endTime);","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"Howlong11"},"content":" if (info[1].equals(\"[X]\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"Howlong11"},"content":" task.markAsDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"Howlong11"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"Howlong11"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"Howlong11"},"content":" default:","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"File is corrupted!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"Howlong11"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t I think you haven\u0027t had enough vitamin C.\"","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t Your time format should be :\"","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t\\t { dd/MM/yyyy HHmm }\"","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t I suggest you take some LEMONA.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"Howlong11"},"content":" return tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"Howlong11"},"content":" public static ArrayList\u003cTask\u003e load() throws IOException {","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"Howlong11"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"Howlong11"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"Howlong11"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"Howlong11"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"Howlong11"},"content":" file.createNewFile();","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"Howlong11"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"Howlong11"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"Howlong11"},"content":" String task \u003d scanner.nextLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"Howlong11"},"content":" tasks \u003d stringToList(tasks, task);","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"Howlong11"},"content":" return tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"Howlong11"},"content":" public static void save(TaskList tasks){","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"Howlong11"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"Howlong11"},"content":" if (tasks.size() !\u003d 0) {","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"Howlong11"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"Howlong11"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"Howlong11"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-02-07"},{"lineNumber":102,"author":{"gitId":"Howlong11"},"content":" file.createNewFile();","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"Howlong11"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"Howlong11"},"content":" fw.write(listToString(tasks));","lastModifiedDate":"2024-02-07"},{"lineNumber":106,"author":{"gitId":"Howlong11"},"content":" fw.close();","lastModifiedDate":"2024-02-07"},{"lineNumber":107,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":108,"author":{"gitId":"Howlong11"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":109,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t Sorry, I think I haven\u0027t had enough vitamin C.\"","lastModifiedDate":"2024-02-07"},{"lineNumber":110,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t I am unable to save tasks into the file.\"","lastModifiedDate":"2024-02-07"},{"lineNumber":111,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t I will need to go have some LEMONA.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":112,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":113,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":114,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":115,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Howlong11":115}},{"path":"src/main/java/oop/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"package oop;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":"import task.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":"import exceptions.DuplicateInstructionException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":"import exceptions.OutOfIndexException;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":"import exceptions.MissingIndexException;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":"public class TaskList {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":" public ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":" public static final String line \u003d \"\\t______________________________________________________\";","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Howlong11"},"content":" public TaskList() {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Howlong11"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Howlong11"},"content":" public int size() {","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Howlong11"},"content":" return tasks.size();","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Howlong11"},"content":" public Task get(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Howlong11"},"content":" return tasks.get(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Howlong11"},"content":" public void mark(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Howlong11"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Howlong11"},"content":" if (tasks.size() \u003c index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Howlong11"},"content":" throw new OutOfIndexException();","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Howlong11"},"content":" } else if (tasks.get(index - 1).getStatusIcon().equals(\"X\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Howlong11"},"content":" throw new DuplicateInstructionException();","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"Howlong11"},"content":" tasks.get(index - 1).markAsDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t Nice! I\u0027ve marked this task as done:\" + \"\\n\\t\\t\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"Howlong11"},"content":" tasks.get(index - 1).print());","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"Howlong11"},"content":" } catch (OutOfIndexException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"Howlong11"},"content":" System.out.println(e.toString(tasks.size()));","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"Howlong11"},"content":" } catch (DuplicateInstructionException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"Howlong11"},"content":" System.out.println(e.toString(\"mark\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"Howlong11"},"content":" public void unmark(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"Howlong11"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"Howlong11"},"content":" if (tasks.size() \u003c index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"Howlong11"},"content":" throw new OutOfIndexException();","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"Howlong11"},"content":" } else if (tasks.get(index - 1).getStatusIcon().equals(\" \")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"Howlong11"},"content":" throw new DuplicateInstructionException();","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"Howlong11"},"content":" tasks.get(index - 1).unmarkAsDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t OK, I\u0027ve marked this task as not done yet:\" + \"\\n\\t\\t\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"Howlong11"},"content":" tasks.get(index - 1).print());","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"Howlong11"},"content":" } catch (OutOfIndexException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"Howlong11"},"content":" System.out.println(e.toString(tasks.size()));","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"Howlong11"},"content":" } catch (DuplicateInstructionException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"Howlong11"},"content":" System.out.println(e.toString(\"unmark\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"Howlong11"},"content":" public void delete(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"Howlong11"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"Howlong11"},"content":" if (tasks.size() \u003c index || index \u003c 1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"Howlong11"},"content":" throw new OutOfIndexException();","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t OK, I\u0027ve removed this task:\" + \"\\n\\t\\t\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"Howlong11"},"content":" tasks.get(index - 1).print());","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"Howlong11"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"Howlong11"},"content":" } catch (OutOfIndexException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"Howlong11"},"content":" System.out.println(e.toString(tasks.size()));","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"Howlong11"},"content":" public void add(Task task){","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"Howlong11"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"Howlong11"},"content":" for (Task value : tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"Howlong11"},"content":" if (value.getDescription().equals(task.getDescription())) {","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"Howlong11"},"content":" throw new DuplicateInstructionException();","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"Howlong11"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":102,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"Howlong11"},"content":" System.out.print(\"\\t \" + task.print());","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\n\\t Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":106,"author":{"gitId":"Howlong11"},"content":" } catch (DuplicateInstructionException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":107,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":108,"author":{"gitId":"Howlong11"},"content":" System.out.println(e.toString(\"\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":109,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":110,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":111,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":112,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Howlong11":112}},{"path":"src/main/java/oop/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"package oop;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Howlong11"},"content":"public class Ui {","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":" private TaskList taskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Howlong11"},"content":" private Scanner scanner;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Howlong11"},"content":" private static final String line \u003d \"\\t______________________________________________________\";","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Howlong11"},"content":" public Ui() {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Howlong11"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Howlong11"},"content":" public String readInput() {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Howlong11"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Howlong11"},"content":" public void greet() {","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t Hello! I\u0027m Lemona\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Howlong11"},"content":" \"\\n\\t Would you like some vitamins?\");","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Howlong11"},"content":" public void bye() {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t Bye. Don\u0027t forget to take a LEMONA!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Howlong11"},"content":" scanner.close();","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Howlong11"},"content":" public void list(TaskList list) {","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Howlong11"},"content":" if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t I think you haven\u0027t had enough vitamin E.\"","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t You do not have any tasks on the list yet!\"","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t I suggest you take some LEMONA.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"Howlong11"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t Here are the tasks in your list:\");","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"Howlong11"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t \" + (i + 1) + \". \" + list.get(i).print());","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"Howlong11"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"Howlong11"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"Howlong11"},"content":" System.out.println(\"\\t Sorry, I think I haven\u0027t had enough vitamin C.\"","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t There was an error loading file, so I had to make a new taskList for you!\"","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"Howlong11"},"content":" + \"\\n\\t I will need to go have some LEMONA.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"Howlong11"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"Howlong11"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"Howlong11"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Howlong11":57}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Howlong11"},"content":"todo vitamin c","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Howlong11"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Howlong11"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Howlong11"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Howlong11":4}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"Howlong11"},"content":"del ACTUAL.TXT","lastModifiedDate":"2024-01-26"},{"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":"Howlong11"},"content":"java -classpath ..\\bin Lemona \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-26"},{"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":{"Howlong11":2,"-":19}}] diff --git a/Howlong11_ip_master/commits.json b/Howlong11_ip_master/commits.json index a6b8986d..1e3c504c 100644 --- a/Howlong11_ip_master/commits.json +++ b/Howlong11_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Howlong11":[{"date":"2024-01-25","commitResults":[{"hash":"52c8e422cd17e9c5b6a523abc22f313ccd1b60fd","isMergeCommit":false,"messageTitle":"FIrst commit, level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":10}}},{"hash":"8cc892402b5567c506b3b43e3bde76b3b2b1ab23","isMergeCommit":false,"messageTitle":"second commit. Level-1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":5}}},{"hash":"db066283c17ecc149d1345d6ec62c1d36f240629","isMergeCommit":false,"messageTitle":"Revert \"second commit. Level-1\"","messageBody":"This reverts commit 8cc892402b5567c506b3b43e3bde76b3b2b1ab23.\n","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":23}}},{"hash":"957599c11bb2f0b7ea6d3d5b6261d5333126dc08","isMergeCommit":false,"messageTitle":"Second commit, Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":5}}},{"hash":"58bba397eb1bf260b399b8d25f4aa7d7cdfa7230","isMergeCommit":false,"messageTitle":"Third commit, Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":2}}},{"hash":"59d6d947936831423fd4e92cf5ffb71f13bd2a33","isMergeCommit":false,"messageTitle":"Fourth commit, level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":7}}}]},{"date":"2024-01-26","commitResults":[{"hash":"9231dfc60c953b8d27aee2430e5c7cd60fea4d5a","isMergeCommit":false,"messageTitle":"Fifth commit, level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":13}}},{"hash":"72735d711cd7036f759d3105d70469afb0b791fb","isMergeCommit":false,"messageTitle":"Sixth commit, A-textUItesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"bat":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-28","commitResults":[{"hash":"54bab98f61f6f3eb51b525e9a318a5161cffd715","isMergeCommit":false,"messageTitle":"Seventh commit, level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":19}}},{"hash":"80b7231cde7eb783a78a554dff0fe340b4de4fd2","isMergeCommit":false,"messageTitle":"eighth commit, level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":6}}}]},{"date":"2024-02-04","commitResults":[{"hash":"35e1c005aa83fe517397ea68e3fb2c069e8445af","isMergeCommit":false,"messageTitle":"ninth commit, error fixes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":241,"deletions":116}}}]},{"date":"2024-02-05","commitResults":[{"hash":"4a81beabfd876135986a3538e250290ef1ed31bf","isMergeCommit":false,"messageTitle":"Save list into txt file, level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":232,"deletions":112}}},{"hash":"e9a600b182dfe4dd92fff5e9f799412c995527f6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"77989e5c3fa2c52bf191352abf7658f32f079e33","isMergeCommit":false,"messageTitle":"Save dates as LocalDateTime objects, level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":64,"deletions":42}}},{"hash":"ace0cdd65091a6c642c08f051f691c38b97d5a39","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Howlong11":{"java":481,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":6}},"authorContributionVariance":{"Howlong11":12422.11},"authorDisplayNameMap":{"Howlong11":"CS2103T-F12-2 HYUN..NKYU"}} +{"authorDailyContributionsMap":{"Howlong11":[{"date":"2024-01-25","commitResults":[{"hash":"52c8e422cd17e9c5b6a523abc22f313ccd1b60fd","isMergeCommit":false,"messageTitle":"FIrst commit, level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":10}}},{"hash":"8cc892402b5567c506b3b43e3bde76b3b2b1ab23","isMergeCommit":false,"messageTitle":"second commit. Level-1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":5}}},{"hash":"db066283c17ecc149d1345d6ec62c1d36f240629","isMergeCommit":false,"messageTitle":"Revert \"second commit. Level-1\"","messageBody":"This reverts commit 8cc892402b5567c506b3b43e3bde76b3b2b1ab23.\n","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":23}}},{"hash":"957599c11bb2f0b7ea6d3d5b6261d5333126dc08","isMergeCommit":false,"messageTitle":"Second commit, Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":5}}},{"hash":"58bba397eb1bf260b399b8d25f4aa7d7cdfa7230","isMergeCommit":false,"messageTitle":"Third commit, Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":2}}},{"hash":"59d6d947936831423fd4e92cf5ffb71f13bd2a33","isMergeCommit":false,"messageTitle":"Fourth commit, level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":7}}}]},{"date":"2024-01-26","commitResults":[{"hash":"9231dfc60c953b8d27aee2430e5c7cd60fea4d5a","isMergeCommit":false,"messageTitle":"Fifth commit, level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":94,"deletions":13}}},{"hash":"72735d711cd7036f759d3105d70469afb0b791fb","isMergeCommit":false,"messageTitle":"Sixth commit, A-textUItesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"bat":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-28","commitResults":[{"hash":"54bab98f61f6f3eb51b525e9a318a5161cffd715","isMergeCommit":false,"messageTitle":"Seventh commit, level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":19}}},{"hash":"80b7231cde7eb783a78a554dff0fe340b4de4fd2","isMergeCommit":false,"messageTitle":"eighth commit, level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":6}}}]},{"date":"2024-02-04","commitResults":[{"hash":"35e1c005aa83fe517397ea68e3fb2c069e8445af","isMergeCommit":false,"messageTitle":"ninth commit, error fixes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":241,"deletions":116}}}]},{"date":"2024-02-05","commitResults":[{"hash":"4a81beabfd876135986a3538e250290ef1ed31bf","isMergeCommit":false,"messageTitle":"Save list into txt file, level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":232,"deletions":112}}},{"hash":"e9a600b182dfe4dd92fff5e9f799412c995527f6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"77989e5c3fa2c52bf191352abf7658f32f079e33","isMergeCommit":false,"messageTitle":"Save dates as LocalDateTime objects, level-8","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":64,"deletions":42}}},{"hash":"ace0cdd65091a6c642c08f051f691c38b97d5a39","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-07","commitResults":[{"hash":"a4255220f4d7dcaacb689c8560c0f9531543ae23","isMergeCommit":false,"messageTitle":"OOP structure, A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":421,"deletions":269}}},{"hash":"aa218d61925f7c765502ca02ebd00005be151f22","isMergeCommit":false,"messageTitle":"data file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2}}},{"hash":"a5924c72a09cb28f339b51929ef3d5ec30d666f6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"7a7626b831820c494b8b7b29c0ea83a104b7fa6b","isMergeCommit":false,"messageTitle":"create packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":41,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"Howlong11":{"java":673,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":7}},"authorContributionVariance":{"Howlong11":33938.746},"authorDisplayNameMap":{"Howlong11":"CS2103T-F12-2 HYUN..NKYU"}} diff --git a/Hwww23_ip_master/authorship.json b/Hwww23_ip_master/authorship.json index 8dee0aa2..32e4bd3c 100644 --- a/Hwww23_ip_master/authorship.json +++ b/Hwww23_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Hwww23"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Hwww23"},"content":" protected String by;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Hwww23"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Hwww23"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Hwww23"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Hwww23"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Hwww23"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Hwww23"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Hwww23"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Hwww23":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Hwww23"},"content":"import java.io.*;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Hwww23"},"content":"import java.util.*;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"Hwww23"},"content":" enum Request {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Hwww23"},"content":" BYE, LIST, MARK, TODO, DEADLINE, EVENT, DELETE, INVALID","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"-"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"-"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2019-07-29"},{"lineNumber":16,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Hello! I\u0027m Hao Wen\\n\" + \"What can I do for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Hwww23"},"content":" //System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Hwww23"},"content":" MyList myList \u003d new MyList();","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Hwww23"},"content":" BufferedReader br \u003d new BufferedReader(new InputStreamReader(System.in));","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Hwww23"},"content":" File file \u003d new File(\"src/main/java/data/duke.txt\");","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Hwww23"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Hwww23"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(file))) {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Hwww23"},"content":" String line;","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Hwww23"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Hwww23"},"content":" String[] loadInput \u003d line.split(\"\\\\|\");","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Hwww23"},"content":" String type \u003d loadInput[0].trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Hwww23"},"content":" String done \u003d loadInput[1].trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Hwww23"},"content":" String s, s1;","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Hwww23"},"content":" Task task;","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Hwww23"},"content":" switch (type) {","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Hwww23"},"content":" case \"T\":","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Hwww23"},"content":" s \u003d loadInput[2].trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Hwww23"},"content":" task \u003d new Todo(s);","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"Hwww23"},"content":" if (done.equals(\"1\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"Hwww23"},"content":" task.markAsDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"Hwww23"},"content":" myList.addItem(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"Hwww23"},"content":" case \"D\":","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"Hwww23"},"content":" s \u003d loadInput[2].trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"Hwww23"},"content":" s1 \u003d loadInput[3].trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"Hwww23"},"content":" task \u003d new Deadline(s, s1);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"Hwww23"},"content":" if (done.equals(\"1\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"Hwww23"},"content":" task.markAsDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"Hwww23"},"content":" myList.addItem(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"Hwww23"},"content":" case \"E\":","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"Hwww23"},"content":" s \u003d loadInput[2].trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"Hwww23"},"content":" s1 \u003d loadInput[3].trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"Hwww23"},"content":" String s2 \u003d loadInput[4].trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"Hwww23"},"content":" task \u003d new Event(s, s1, s2);","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"Hwww23"},"content":" if (done.equals(\"1\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"Hwww23"},"content":" task.markAsDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"Hwww23"},"content":" myList.addItem(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"Hwww23"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Error: File not Found\");","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"Hwww23"},"content":" while (true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"Hwww23"},"content":" String userInput \u003d br.readLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"Hwww23"},"content":" Request request \u003d getRequest(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"Hwww23"},"content":" switch (request) {","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"Hwww23"},"content":" case BYE:","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"Hwww23"},"content":" return;","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"Hwww23"},"content":" case LIST:","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"Hwww23"},"content":" System.out.println(myList.getItems());","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"Hwww23"},"content":" case MARK:","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"Hwww23"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"Hwww23"},"content":" int index \u003d Integer.parseInt(userInput.substring(\"mark\".length()).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"Hwww23"},"content":" System.out.println(myList.markTask(index));","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"Hwww23"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Please enter a number after mark.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"Hwww23"},"content":" case TODO:","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"Hwww23"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"Hwww23"},"content":" String s \u003d userInput.substring(\"todo\".length()).trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"Hwww23"},"content":" if (s.isEmpty()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"Hwww23"},"content":" throw new DukeException(\"Task description cannot be empty.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"Hwww23"},"content":" Task task \u003d new Todo(s);","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"Hwww23"},"content":" System.out.println(myList.addItem(task));","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"Hwww23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Error: \" + e.getMsg());","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"Hwww23"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"Hwww23"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"Hwww23"},"content":" String s \u003d userInput.substring(\"deadline\".length()).trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"Hwww23"},"content":" String[] s1 \u003d s.split(\"/by\");","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"Hwww23"},"content":" if (s1.length \u003e 2) {","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"Hwww23"},"content":" throw new DukeException(\"Please enter format deadline (task) /by (input)\");","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"Hwww23"},"content":" } else if (s1[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"Hwww23"},"content":" throw new DukeException(\"Empty timing. Please enter format deadline (task) /by (input)\");","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"Hwww23"},"content":" Task task \u003d new Deadline(s1[0].trim(), s1[1].trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"Hwww23"},"content":" System.out.println(myList.addItem(task));","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"Hwww23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Error: \" + e.getMsg());","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"Hwww23"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Please enter format deadline (task) /by (input)\");","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"Hwww23"},"content":" case EVENT:","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"Hwww23"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"Hwww23"},"content":" String s \u003d userInput.substring(\"event\".length()).trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"Hwww23"},"content":" String[] s1 \u003d s.split(\"/from\");","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"Hwww23"},"content":" if (s1.length \u003e 2) {","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"Hwww23"},"content":" throw new DukeException(\"Please enter format event (task) /from (input) /to (input)\");","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"Hwww23"},"content":" } else if (s1[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":129,"author":{"gitId":"Hwww23"},"content":" throw new DukeException(\"Empty timing. Please enter format event (task) /from (input) /to (input)\");","lastModifiedDate":"2024-01-26"},{"lineNumber":130,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":131,"author":{"gitId":"Hwww23"},"content":" String[] s2 \u003d s1[1].split(\"/to\");","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"Hwww23"},"content":" if (s2.length \u003e 2) {","lastModifiedDate":"2024-01-26"},{"lineNumber":133,"author":{"gitId":"Hwww23"},"content":" throw new DukeException(\"Please enter format event (task) /from (input) /to (input)\");","lastModifiedDate":"2024-01-26"},{"lineNumber":134,"author":{"gitId":"Hwww23"},"content":" } else if (s2[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":135,"author":{"gitId":"Hwww23"},"content":" throw new DukeException(\"Empty timing. Please enter format event (task) /from (input) /to (input)\");","lastModifiedDate":"2024-01-26"},{"lineNumber":136,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"Hwww23"},"content":" Task task \u003d new Event(s1[0].trim(), s2[0].trim(), s2[1].trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"Hwww23"},"content":" System.out.println(myList.addItem(task));","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"Hwww23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":140,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Error: \" + e.getMsg());","lastModifiedDate":"2024-01-26"},{"lineNumber":141,"author":{"gitId":"Hwww23"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":142,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Please enter format event (task) /from (input) /to (input)\");","lastModifiedDate":"2024-01-26"},{"lineNumber":143,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":144,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":145,"author":{"gitId":"Hwww23"},"content":" case DELETE:","lastModifiedDate":"2024-01-26"},{"lineNumber":146,"author":{"gitId":"Hwww23"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":147,"author":{"gitId":"Hwww23"},"content":" int index \u003d Integer.parseInt(userInput.substring(\"delete\".length()).trim());","lastModifiedDate":"2024-01-26"},{"lineNumber":148,"author":{"gitId":"Hwww23"},"content":" System.out.println(myList.delete(index));","lastModifiedDate":"2024-01-26"},{"lineNumber":149,"author":{"gitId":"Hwww23"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":150,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Please enter a number after delete.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":151,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":152,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":153,"author":{"gitId":"Hwww23"},"content":" case INVALID:","lastModifiedDate":"2024-01-26"},{"lineNumber":154,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"OOPS! That was an invalid input\");","lastModifiedDate":"2024-01-26"},{"lineNumber":155,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":156,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":158,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":159,"author":{"gitId":"Hwww23"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":160,"author":{"gitId":"Hwww23"},"content":" System.err.println(\"Error\");","lastModifiedDate":"2024-01-24"},{"lineNumber":161,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":163,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":164,"author":{"gitId":"Hwww23"},"content":" private static Request getRequest(String userInput) {","lastModifiedDate":"2024-01-26"},{"lineNumber":165,"author":{"gitId":"Hwww23"},"content":" String inputUpper \u003d userInput.toUpperCase();","lastModifiedDate":"2024-01-26"},{"lineNumber":166,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":167,"author":{"gitId":"Hwww23"},"content":" for (Request request : Request.values()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":168,"author":{"gitId":"Hwww23"},"content":" if (inputUpper.startsWith(request.name())) {","lastModifiedDate":"2024-01-26"},{"lineNumber":169,"author":{"gitId":"Hwww23"},"content":" return request;","lastModifiedDate":"2024-01-26"},{"lineNumber":170,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":171,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":172,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":173,"author":{"gitId":"Hwww23"},"content":" return Request.INVALID;","lastModifiedDate":"2024-01-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Hwww23":164,"-":11}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Hwww23"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Hwww23"},"content":" private String msg;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Hwww23"},"content":" public DukeException(String msg) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Hwww23"},"content":" super(msg);","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Hwww23"},"content":" this.msg \u003d msg;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Hwww23"},"content":" public String getMsg() {","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Hwww23"},"content":" return msg;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Hwww23"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Hwww23":12}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Hwww23"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Hwww23"},"content":" protected String start;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Hwww23"},"content":" protected String end;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Hwww23"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Hwww23"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Hwww23"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Hwww23"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Hwww23"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Hwww23"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Hwww23"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Hwww23"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Hwww23":15}},{"path":"src/main/java/MyList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Hwww23"},"content":"import java.util.*;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Hwww23"},"content":"public class MyList {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Hwww23"},"content":" private List\u003cTask\u003e items;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Hwww23"},"content":" public MyList() {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Hwww23"},"content":" this.items \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Hwww23"},"content":" public String addItem(Task t) {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Hwww23"},"content":" this.items.add(t);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Hwww23"},"content":" return \"Got it. I\u0027ve added this task:\\n\" + t.toString() + \"\\nNow you have \" + this.items.size() + \" tasks in the list.\";","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Hwww23"},"content":" public String getItems() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Hwww23"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Hwww23"},"content":" stringBuilder.append(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Hwww23"},"content":" int index \u003d 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Hwww23"},"content":" for (Task task : this.items) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Hwww23"},"content":" String itemString \u003d String.format(\"%d. %s\\n\", index, task.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Hwww23"},"content":" stringBuilder.append(itemString);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Hwww23"},"content":" index++;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Hwww23"},"content":" return stringBuilder.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Hwww23"},"content":" public String markTask(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Hwww23"},"content":" if (index \u003c 1 || index \u003e this.items.size()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Hwww23"},"content":" return \"Number is outside length of list\";","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Hwww23"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Hwww23"},"content":" return \"Nice! I\u0027ve marked this task as done:\\n\" + this.items.get(index - 1).markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Hwww23"},"content":" public String delete(int index) {","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Hwww23"},"content":" if (index \u003c 1 || index \u003e this.items.size()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Hwww23"},"content":" return \"Number is outside length of list\";","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Hwww23"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Hwww23"},"content":" Task t \u003d this.items.remove(index - 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Hwww23"},"content":" return \"Noted. I\u0027ve removed this task:\\n\" + t.toString() + \"\\nNow you have \" + this.items.size() + \" tasks in the list.\";","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Hwww23"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Hwww23":44}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Hwww23"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Hwww23"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Hwww23"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Hwww23"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Hwww23"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Hwww23"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Hwww23"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Hwww23"},"content":" return this.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Hwww23"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Hwww23"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Hwww23"},"content":" public String markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Hwww23"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Hwww23"},"content":" return this.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Hwww23"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Hwww23"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.getDescription());","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Hwww23"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Hwww23":26}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Hwww23"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Hwww23"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Hwww23"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Hwww23"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Hwww23"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Hwww23"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Hwww23"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Hwww23":10}},{"path":"src/main/java/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Hwww23"},"content":"T | 1 | read book","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Hwww23"},"content":"D | 0 | return book | June 6th","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Hwww23"},"content":"E | 0 | project meeting | Aug 6th 2pm | 4pm","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Hwww23"},"content":"T | 1 | join sports club","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Hwww23":4}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Hwww23"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Hwww23":1}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Hwww23"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Hwww23"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Hwww23"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Hwww23"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Hwww23"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Hwww23"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Hwww23"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Hwww23"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Hwww23"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Hwww23"},"content":" DateTimeFormatter customFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy h:mma\");","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Hwww23"},"content":" String formattedDateTime \u003d this.by.format(customFormatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Hwww23"},"content":" return \"[D]\" + super.toString() + \" (by: \" + formattedDateTime + \")\";","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Hwww23"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Hwww23":18}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Hwww23"},"content":"import java.io.*;","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"Hwww23"},"content":"import java.text.ParseException;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Hwww23"},"content":"import java.util.*;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"Hwww23"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Hwww23"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Hwww23"},"content":"import java.text.SimpleDateFormat;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Hwww23"},"content":"import java.util.Date;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Hwww23"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Hwww23"},"content":"import java.util.regex.*;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"Hwww23"},"content":" enum Request {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Hwww23"},"content":" BYE, LIST, MARK, TODO, DEADLINE, EVENT, DELETE, INVALID","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2019-07-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2019-07-29"},{"lineNumber":22,"author":{"gitId":"-"},"content":" System.out.println(\"Hello from\\n\" + logo);","lastModifiedDate":"2019-07-29"},{"lineNumber":23,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Hello! I\u0027m Hao Wen\\n\" + \"What can I do for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"Hwww23"},"content":" //System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"Hwww23"},"content":" MyList myList \u003d new MyList();","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Hwww23"},"content":" BufferedReader br \u003d new BufferedReader(new InputStreamReader(System.in));","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Hwww23"},"content":" File file \u003d new File(\"src/main/java/data/duke.txt\");","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Hwww23"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Hwww23"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(file))) {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Hwww23"},"content":" String line;","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Hwww23"},"content":" String s, s1, s2, date1 \u003d \"\", date2\u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Hwww23"},"content":" String[] d_t, d_t1;","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Hwww23"},"content":" LocalDate d, d1;","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"Hwww23"},"content":" SimpleDateFormat inputFormat \u003d new SimpleDateFormat(\"HHmm\");","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"Hwww23"},"content":" SimpleDateFormat outputFormat \u003d new SimpleDateFormat(\"h:mm a\");","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Hwww23"},"content":" Date date_1, date_2;","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"Hwww23"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"Hwww23"},"content":" String[] loadInput \u003d line.split(\"\\\\|\");","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"Hwww23"},"content":" String type \u003d loadInput[0].trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"Hwww23"},"content":" String done \u003d loadInput[1].trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"Hwww23"},"content":" String taskString, byString, dateTimePattern, fromString, toString;","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"Hwww23"},"content":" Task task;","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"Hwww23"},"content":" switch (type) {","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"Hwww23"},"content":" case \"T\":","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"Hwww23"},"content":" taskString \u003d loadInput[2].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"Hwww23"},"content":" task \u003d new Todo(taskString);","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"Hwww23"},"content":" if (done.equals(\"1\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"Hwww23"},"content":" task.markAsDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"Hwww23"},"content":" myList.addItem(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"Hwww23"},"content":" case \"D\":","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"Hwww23"},"content":" taskString \u003d loadInput[2].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"Hwww23"},"content":" byString \u003d loadInput[3].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"Hwww23"},"content":" dateTimePattern \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2} \\\\d{4}\";","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"Hwww23"},"content":" if (Pattern.matches(dateTimePattern, byString)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"Hwww23"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"Hwww23"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(byString, formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"Hwww23"},"content":" task \u003d new Deadline(taskString, dateTime);","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"Hwww23"},"content":" myList.addItem(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"Hwww23"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"Hwww23"},"content":" throw new DukeException(\"Please enter date in the format (yyyy-mm-dd hhmm)\");","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"Hwww23"},"content":" if (done.equals(\"1\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"Hwww23"},"content":" task.markAsDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"Hwww23"},"content":" case \"E\":","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"Hwww23"},"content":" taskString \u003d loadInput[2].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"Hwww23"},"content":" fromString \u003d loadInput[3].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"Hwww23"},"content":" toString \u003d loadInput[4].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"Hwww23"},"content":" dateTimePattern \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2} \\\\d{4}\";","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"Hwww23"},"content":" if (Pattern.matches(dateTimePattern, fromString) \u0026\u0026 Pattern.matches(dateTimePattern, toString)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"Hwww23"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"Hwww23"},"content":" LocalDateTime dateTimeFrom \u003d LocalDateTime.parse(fromString, formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"Hwww23"},"content":" LocalDateTime dateTimeTo \u003d LocalDateTime.parse(toString, formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"Hwww23"},"content":" task \u003d new Event(taskString, dateTimeFrom, dateTimeTo);","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"Hwww23"},"content":" myList.addItem(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"Hwww23"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"Hwww23"},"content":" throw new DukeException(\"Please enter date in the format (yyyy-mm-dd hhmm)\");","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"Hwww23"},"content":" if (done.equals(\"1\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"Hwww23"},"content":" task.markAsDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"Hwww23"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Error: File not Found\");","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"Hwww23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Error: \" + e.getMsg());","lastModifiedDate":"2024-02-07"},{"lineNumber":102,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"Hwww23"},"content":" while (true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":105,"author":{"gitId":"Hwww23"},"content":" String userInput \u003d br.readLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"Hwww23"},"content":" Request request \u003d getRequest(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"Hwww23"},"content":" switch (request) {","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"Hwww23"},"content":" case BYE:","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"Hwww23"},"content":" return;","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"Hwww23"},"content":" case LIST:","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"Hwww23"},"content":" System.out.println(myList.getItems());","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"Hwww23"},"content":" case MARK:","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"Hwww23"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"Hwww23"},"content":" int index \u003d Integer.parseInt(userInput.substring(\"mark\".length()).trim());","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"Hwww23"},"content":" System.out.println(myList.markTask(index));","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"Hwww23"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Please enter a number after mark.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"Hwww23"},"content":" case TODO:","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"Hwww23"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"Hwww23"},"content":" String s \u003d userInput.substring(\"todo\".length()).trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":127,"author":{"gitId":"Hwww23"},"content":" if (s.isEmpty()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"Hwww23"},"content":" throw new DukeException(\"Task description cannot be empty.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":129,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":130,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":131,"author":{"gitId":"Hwww23"},"content":" Task task \u003d new Todo(s);","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"Hwww23"},"content":" System.out.println(myList.addItem(task));","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"Hwww23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":134,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Error: \" + e.getMsg());","lastModifiedDate":"2024-01-26"},{"lineNumber":135,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":136,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"Hwww23"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-26"},{"lineNumber":138,"author":{"gitId":"Hwww23"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":139,"author":{"gitId":"Hwww23"},"content":" String s \u003d userInput.substring(\"deadline\".length()).trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"Hwww23"},"content":" String[] s1 \u003d s.split(\"/by\");","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":142,"author":{"gitId":"Hwww23"},"content":" if (s1.length \u003e 2) {","lastModifiedDate":"2024-01-26"},{"lineNumber":143,"author":{"gitId":"Hwww23"},"content":" throw new DukeException(\"Please enter format deadline (task) /by (yyyy-mm-dd hhmm)\");","lastModifiedDate":"2024-02-07"},{"lineNumber":144,"author":{"gitId":"Hwww23"},"content":" } else if (s1[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":145,"author":{"gitId":"Hwww23"},"content":" throw new DukeException(\"Empty timing. Please enter format deadline (task) /by (yyyy-mm-dd hhmm)\");","lastModifiedDate":"2024-02-07"},{"lineNumber":146,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":147,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":148,"author":{"gitId":"Hwww23"},"content":" String taskString \u003d s1[0].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":149,"author":{"gitId":"Hwww23"},"content":" String byString \u003d s1[1].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":150,"author":{"gitId":"Hwww23"},"content":" String dateTimePattern \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2} \\\\d{4}\";","lastModifiedDate":"2024-02-07"},{"lineNumber":151,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":152,"author":{"gitId":"Hwww23"},"content":" if (Pattern.matches(dateTimePattern, byString)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":153,"author":{"gitId":"Hwww23"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-02-07"},{"lineNumber":154,"author":{"gitId":"Hwww23"},"content":" LocalDateTime dateTime \u003d LocalDateTime.parse(byString, formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":155,"author":{"gitId":"Hwww23"},"content":" Task task \u003d new Deadline(taskString, dateTime);","lastModifiedDate":"2024-02-07"},{"lineNumber":156,"author":{"gitId":"Hwww23"},"content":" System.out.println(myList.addItem(task));","lastModifiedDate":"2024-01-25"},{"lineNumber":157,"author":{"gitId":"Hwww23"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":158,"author":{"gitId":"Hwww23"},"content":" throw new DukeException(\"Please enter date in the format (yyyy-mm-dd hhmm)\");","lastModifiedDate":"2024-02-07"},{"lineNumber":159,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":160,"author":{"gitId":"Hwww23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":161,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Error: \" + e.getMsg());","lastModifiedDate":"2024-01-26"},{"lineNumber":162,"author":{"gitId":"Hwww23"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":163,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Please enter format deadline (task) /by (yyyy-mm-dd hhmm)\");","lastModifiedDate":"2024-02-07"},{"lineNumber":164,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":165,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":166,"author":{"gitId":"Hwww23"},"content":" case EVENT:","lastModifiedDate":"2024-01-26"},{"lineNumber":167,"author":{"gitId":"Hwww23"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":168,"author":{"gitId":"Hwww23"},"content":" String s \u003d userInput.substring(\"event\".length()).trim();","lastModifiedDate":"2024-01-25"},{"lineNumber":169,"author":{"gitId":"Hwww23"},"content":" String[] s1 \u003d s.split(\"/from\");","lastModifiedDate":"2024-01-25"},{"lineNumber":170,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":171,"author":{"gitId":"Hwww23"},"content":" if (s1.length \u003e 2) {","lastModifiedDate":"2024-01-26"},{"lineNumber":172,"author":{"gitId":"Hwww23"},"content":" throw new DukeException(\"Please enter format event (task) /from (yyyy-mm-dd hhmm) /to (yyyy-mm-dd hhmm)\");","lastModifiedDate":"2024-02-07"},{"lineNumber":173,"author":{"gitId":"Hwww23"},"content":" } else if (s1[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":174,"author":{"gitId":"Hwww23"},"content":" throw new DukeException(\"Empty timing. Please enter format event (task) /from (yyyy-mm-dd hhmm) /to (yyyy-mm-dd hhmm)\");","lastModifiedDate":"2024-02-07"},{"lineNumber":175,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":176,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":177,"author":{"gitId":"Hwww23"},"content":" String[] s2 \u003d s1[1].split(\"/to\");","lastModifiedDate":"2024-01-25"},{"lineNumber":178,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":179,"author":{"gitId":"Hwww23"},"content":" if (s2.length \u003e 2) {","lastModifiedDate":"2024-01-26"},{"lineNumber":180,"author":{"gitId":"Hwww23"},"content":" throw new DukeException(\"Please enter format event (task) /from (yyyy-mm-dd hhmm) /to (yyyy-mm-dd hhmm)\");","lastModifiedDate":"2024-02-07"},{"lineNumber":181,"author":{"gitId":"Hwww23"},"content":" } else if (s2[1].trim().isEmpty()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":182,"author":{"gitId":"Hwww23"},"content":" throw new DukeException(\"Empty timing. Please enter format event (task) /from (yyyy-mm-dd hhmm) /to (yyyy-mm-dd hhmm)\");","lastModifiedDate":"2024-02-07"},{"lineNumber":183,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":184,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":185,"author":{"gitId":"Hwww23"},"content":" String taskString \u003d s1[0].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":186,"author":{"gitId":"Hwww23"},"content":" String fromString \u003d s2[0].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":187,"author":{"gitId":"Hwww23"},"content":" String toString \u003d s2[1].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":188,"author":{"gitId":"Hwww23"},"content":" String dateTimePattern \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2} \\\\d{4}\";","lastModifiedDate":"2024-02-07"},{"lineNumber":189,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":190,"author":{"gitId":"Hwww23"},"content":" if (Pattern.matches(dateTimePattern, fromString) \u0026\u0026 Pattern.matches(dateTimePattern, toString)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":191,"author":{"gitId":"Hwww23"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-02-07"},{"lineNumber":192,"author":{"gitId":"Hwww23"},"content":" LocalDateTime dateTimeFrom \u003d LocalDateTime.parse(fromString, formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":193,"author":{"gitId":"Hwww23"},"content":" LocalDateTime dateTimeTo \u003d LocalDateTime.parse(toString, formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":194,"author":{"gitId":"Hwww23"},"content":" Task task \u003d new Event(taskString, dateTimeFrom, dateTimeTo);","lastModifiedDate":"2024-02-07"},{"lineNumber":195,"author":{"gitId":"Hwww23"},"content":" System.out.println(myList.addItem(task));","lastModifiedDate":"2024-01-25"},{"lineNumber":196,"author":{"gitId":"Hwww23"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":197,"author":{"gitId":"Hwww23"},"content":" throw new DukeException(\"Please enter date in the format (yyyy-mm-dd hhmm)\");","lastModifiedDate":"2024-02-07"},{"lineNumber":198,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":199,"author":{"gitId":"Hwww23"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":200,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Error: \" + e.getMsg());","lastModifiedDate":"2024-01-26"},{"lineNumber":201,"author":{"gitId":"Hwww23"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":202,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Please enter format event (task) /from (yyyy-mm-dd hhmm) /to (yyyy-mm-dd hhmm)\");","lastModifiedDate":"2024-02-07"},{"lineNumber":203,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":204,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":205,"author":{"gitId":"Hwww23"},"content":" case DELETE:","lastModifiedDate":"2024-01-26"},{"lineNumber":206,"author":{"gitId":"Hwww23"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":207,"author":{"gitId":"Hwww23"},"content":" int index \u003d Integer.parseInt(userInput.substring(\"delete\".length()).trim());","lastModifiedDate":"2024-01-26"},{"lineNumber":208,"author":{"gitId":"Hwww23"},"content":" System.out.println(myList.delete(index));","lastModifiedDate":"2024-01-26"},{"lineNumber":209,"author":{"gitId":"Hwww23"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":210,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"Please enter a number after delete.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":211,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":212,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":213,"author":{"gitId":"Hwww23"},"content":" case INVALID:","lastModifiedDate":"2024-01-26"},{"lineNumber":214,"author":{"gitId":"Hwww23"},"content":" System.out.println(\"OOPS! That was an invalid input\");","lastModifiedDate":"2024-01-26"},{"lineNumber":215,"author":{"gitId":"Hwww23"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":216,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":217,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":218,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":219,"author":{"gitId":"Hwww23"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":220,"author":{"gitId":"Hwww23"},"content":" System.err.println(\"Error\");","lastModifiedDate":"2024-01-24"},{"lineNumber":221,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":223,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":224,"author":{"gitId":"Hwww23"},"content":" private static Request getRequest(String userInput) {","lastModifiedDate":"2024-01-26"},{"lineNumber":225,"author":{"gitId":"Hwww23"},"content":" String inputUpper \u003d userInput.toUpperCase();","lastModifiedDate":"2024-01-26"},{"lineNumber":226,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":227,"author":{"gitId":"Hwww23"},"content":" for (Request request : Request.values()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":228,"author":{"gitId":"Hwww23"},"content":" if (inputUpper.startsWith(request.name())) {","lastModifiedDate":"2024-01-26"},{"lineNumber":229,"author":{"gitId":"Hwww23"},"content":" return request;","lastModifiedDate":"2024-01-26"},{"lineNumber":230,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":231,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":232,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":233,"author":{"gitId":"Hwww23"},"content":" return Request.INVALID;","lastModifiedDate":"2024-01-26"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":235,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Hwww23":224,"-":11}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Hwww23"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Hwww23"},"content":" private String msg;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Hwww23"},"content":" public DukeException(String msg) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Hwww23"},"content":" super(msg);","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Hwww23"},"content":" this.msg \u003d msg;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Hwww23"},"content":" public String getMsg() {","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Hwww23"},"content":" return msg;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Hwww23"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Hwww23":12}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Hwww23"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Hwww23"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Hwww23"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Hwww23"},"content":" protected LocalDateTime start;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Hwww23"},"content":" protected LocalDateTime end;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Hwww23"},"content":" public Event(String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Hwww23"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Hwww23"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Hwww23"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Hwww23"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Hwww23"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Hwww23"},"content":" DateTimeFormatter customFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy h:mma\");","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Hwww23"},"content":" String formattedDateTime \u003d this.start.format(customFormatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Hwww23"},"content":" String formattedDateTime1 \u003d this.end.format(customFormatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Hwww23"},"content":" return \"[E]\" + super.toString() + \" (from: \" + formattedDateTime + \" to: \" + formattedDateTime1 + \")\";","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Hwww23"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Hwww23":21}},{"path":"src/main/java/MyList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Hwww23"},"content":"import java.util.*;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Hwww23"},"content":"public class MyList {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Hwww23"},"content":" private List\u003cTask\u003e items;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Hwww23"},"content":" public MyList() {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Hwww23"},"content":" this.items \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Hwww23"},"content":" public String addItem(Task t) {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Hwww23"},"content":" this.items.add(t);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Hwww23"},"content":" return \"Got it. I\u0027ve added this task:\\n\" + t.toString() + \"\\nNow you have \" + this.items.size() + \" tasks in the list.\";","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Hwww23"},"content":" public String getItems() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Hwww23"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Hwww23"},"content":" stringBuilder.append(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Hwww23"},"content":" int index \u003d 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Hwww23"},"content":" for (Task task : this.items) {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Hwww23"},"content":" String itemString \u003d String.format(\"%d. %s\\n\", index, task.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Hwww23"},"content":" stringBuilder.append(itemString);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Hwww23"},"content":" index++;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Hwww23"},"content":" return stringBuilder.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Hwww23"},"content":" public String markTask(int index) {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Hwww23"},"content":" if (index \u003c 1 || index \u003e this.items.size()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Hwww23"},"content":" return \"Number is outside length of list\";","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Hwww23"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Hwww23"},"content":" return \"Nice! I\u0027ve marked this task as done:\\n\" + this.items.get(index - 1).markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Hwww23"},"content":" public String delete(int index) {","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Hwww23"},"content":" if (index \u003c 1 || index \u003e this.items.size()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Hwww23"},"content":" return \"Number is outside length of list\";","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Hwww23"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Hwww23"},"content":" Task t \u003d this.items.remove(index - 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Hwww23"},"content":" return \"Noted. I\u0027ve removed this task:\\n\" + t.toString() + \"\\nNow you have \" + this.items.size() + \" tasks in the list.\";","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Hwww23"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Hwww23":44}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Hwww23"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Hwww23"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Hwww23"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Hwww23"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Hwww23"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Hwww23"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Hwww23"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Hwww23"},"content":" return this.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Hwww23"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Hwww23"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Hwww23"},"content":" public String markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"Hwww23"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Hwww23"},"content":" return this.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Hwww23"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Hwww23"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), this.getDescription());","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Hwww23"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Hwww23":26}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Hwww23"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Hwww23"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Hwww23"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Hwww23"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Hwww23"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Hwww23"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Hwww23"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Hwww23"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Hwww23"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Hwww23":10}},{"path":"src/main/java/data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Hwww23"},"content":"T | 1 | read book","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Hwww23"},"content":"D | 0 | return book | 2019-10-15 2300","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Hwww23"},"content":"E | 0 | project meeting | 2019-08-06 1400 | 2019-08-06 1600","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Hwww23"},"content":"T | 1 | join sports club","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Hwww23":4}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Hwww23"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Hwww23":1}}] diff --git a/Hwww23_ip_master/commits.json b/Hwww23_ip_master/commits.json index ce1b7631..529cc303 100644 --- a/Hwww23_ip_master/commits.json +++ b/Hwww23_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Hwww23":[{"date":"2024-01-24","commitResults":[{"hash":"a9fa3cf1947c51e209833d53a5f26b13a82905e5","isMergeCommit":false,"messageTitle":"add level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"08031551e2d654d0c9e8289d4d723be9893cc76c","isMergeCommit":false,"messageTitle":"add level 0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"4b230ecab26c12d7234a062add072dfbb19db01b","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1cfd9144677fd5655c05e0a2709ae3a3ec781c2e","isMergeCommit":false,"messageTitle":"add level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"d78df2ac12cc49b590c9995013bd38c896e071e8","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-25","commitResults":[{"hash":"2be1daa85858e61a912a2ded30ab9caaff96c467","isMergeCommit":false,"messageTitle":"add level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":5}}},{"hash":"6e786ff9df9a8cb14aa82d935106bb8e740c805f","isMergeCommit":false,"messageTitle":"add level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":5}}},{"hash":"c63f766b98cc48996acf52c4f928fd956949cc1c","isMergeCommit":false,"messageTitle":"add level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":7}}},{"hash":"98afa3bcb8a89e226ec765aeea187bb17e03702d","isMergeCommit":false,"messageTitle":"testing actual vs expected","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}}]},{"date":"2024-01-26","commitResults":[{"hash":"2e0b7a0c090b7aa553de88ecc97ad972acf796bf","isMergeCommit":false,"messageTitle":"add level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":14}}},{"hash":"0d8cd822c23d2772a72e14dd3c8b44e0955dafa5","isMergeCommit":false,"messageTitle":"add level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":3}}},{"hash":"23749534aeb41365013b87e8483b2e1154743e39","isMergeCommit":false,"messageTitle":"add enum","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":61}}}]},{"date":"2024-02-06","commitResults":[{"hash":"f316b851e54dfc544f03928b6ed791fc2977e300","isMergeCommit":false,"messageTitle":"Add duke.txt Update Duke.java Update Event.java Update Todo.java","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":53,"deletions":2}}},{"hash":"d4888e82bbabeef4f8f46612148543075e3e6468","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Hwww23":{"java":284,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"Hwww23":3998.2002},"authorDisplayNameMap":{"Hwww23":"CS2103-F15-2 TANG.. WEN"}} +{"authorDailyContributionsMap":{"Hwww23":[{"date":"2024-01-24","commitResults":[{"hash":"a9fa3cf1947c51e209833d53a5f26b13a82905e5","isMergeCommit":false,"messageTitle":"add level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"08031551e2d654d0c9e8289d4d723be9893cc76c","isMergeCommit":false,"messageTitle":"add level 0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"4b230ecab26c12d7234a062add072dfbb19db01b","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1cfd9144677fd5655c05e0a2709ae3a3ec781c2e","isMergeCommit":false,"messageTitle":"add level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"d78df2ac12cc49b590c9995013bd38c896e071e8","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-25","commitResults":[{"hash":"2be1daa85858e61a912a2ded30ab9caaff96c467","isMergeCommit":false,"messageTitle":"add level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":5}}},{"hash":"6e786ff9df9a8cb14aa82d935106bb8e740c805f","isMergeCommit":false,"messageTitle":"add level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":5}}},{"hash":"c63f766b98cc48996acf52c4f928fd956949cc1c","isMergeCommit":false,"messageTitle":"add level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":7}}},{"hash":"98afa3bcb8a89e226ec765aeea187bb17e03702d","isMergeCommit":false,"messageTitle":"testing actual vs expected","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0}}}]},{"date":"2024-01-26","commitResults":[{"hash":"2e0b7a0c090b7aa553de88ecc97ad972acf796bf","isMergeCommit":false,"messageTitle":"add level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":14}}},{"hash":"0d8cd822c23d2772a72e14dd3c8b44e0955dafa5","isMergeCommit":false,"messageTitle":"add level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":3}}},{"hash":"23749534aeb41365013b87e8483b2e1154743e39","isMergeCommit":false,"messageTitle":"add enum","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":91,"deletions":61}}}]},{"date":"2024-02-06","commitResults":[{"hash":"f316b851e54dfc544f03928b6ed791fc2977e300","isMergeCommit":false,"messageTitle":"Add duke.txt Update Duke.java Update Event.java Update Todo.java","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":53,"deletions":2}}},{"hash":"d4888e82bbabeef4f8f46612148543075e3e6468","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-07","commitResults":[{"hash":"390708565954247f779edc0574d2761c70da513d","isMergeCommit":false,"messageTitle":"Update Duke.java Update Deadline.java Update Event.java Update duke.txt","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":104,"deletions":33}}},{"hash":"0407bb0994c17ac805381743786e4bed785a5887","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Hwww23":{"java":355,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"Hwww23":4427.626},"authorDisplayNameMap":{"Hwww23":"CS2103-F15-2 TANG.. WEN"}} diff --git a/JerryWang0000_ip_master/authorship.json b/JerryWang0000_ip_master/authorship.json index a2310d42..7a931bb3 100644 --- a/JerryWang0000_ip_master/authorship.json +++ b/JerryWang0000_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/BotManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JerryWang0000"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"JerryWang0000"},"content":"public class BotManager {","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"JerryWang0000"},"content":" private final String name;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"JerryWang0000"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"JerryWang0000"},"content":" BotManager(String name) {","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"JerryWang0000"},"content":" this.name \u003d name;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"JerryWang0000"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"JerryWang0000"},"content":" void greeting() {","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Hello! I\u0027m \" + name);","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" What can I do for you?\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"JerryWang0000"},"content":" void exit() {","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Bye. Hope to see you again soon!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"JerryWang0000"},"content":" private Task createTask(String prompt) throws DukeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"JerryWang0000"},"content":" String[] order \u003d prompt.split(\" \", 2);","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"JerryWang0000"},"content":" String taskType \u003d order[0];","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"JerryWang0000"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"JerryWang0000"},"content":" case \"todo\":","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"JerryWang0000"},"content":" if (order.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Not sure about the description of the todo!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"JerryWang0000"},"content":" } else if (order[1].trim().isEmpty()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Not sure about the description of the todo!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"JerryWang0000"},"content":" return new Todo(order[1]);","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"JerryWang0000"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"JerryWang0000"},"content":" String[] deadline \u003d order[1].split(\" /by \");","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"JerryWang0000"},"content":" if (deadline.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Incorrect format!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"JerryWang0000"},"content":" } else if (deadline[0].trim().isEmpty()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Not sure about the description of the deadline!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"JerryWang0000"},"content":" } else if (deadline[1].trim().isEmpty()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Not sure about the deadline!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"JerryWang0000"},"content":" return new Deadline(deadline[0], deadline[1]);","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"JerryWang0000"},"content":" case \"event\":","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"JerryWang0000"},"content":" String[] startTime \u003d order[1].split(\" /from \");","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"JerryWang0000"},"content":" if (startTime.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Incorrect format!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"JerryWang0000"},"content":" } else if (startTime[0].trim().isEmpty()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Not sure about the description of the event!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"JerryWang0000"},"content":" } else if (startTime[1].split(\" /to \")[0].trim().isEmpty()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Not sure about the starting time!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"JerryWang0000"},"content":" String[] endTime \u003d order[1].split(\" /to \");","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"JerryWang0000"},"content":" if (endTime.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Incorrect format!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"JerryWang0000"},"content":" } else if (endTime[1].trim().isEmpty()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Not sure about the ending time!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"JerryWang0000"},"content":" return new Event(startTime[0], startTime[1].split(\" /to \")[0], endTime[1]);","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"JerryWang0000"},"content":" default:","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Sorry! I don\u0027t see what you mean...\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"JerryWang0000"},"content":" private void addTask(String prompt) throws DukeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"JerryWang0000"},"content":" Task task \u003d createTask(prompt);","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"JerryWang0000"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"JerryWang0000"},"content":" if (tasks.size() \u003d\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Now you have 1 task in the list\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"JerryWang0000"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"JerryWang0000"},"content":" System.out.printf(\" Now you have %d tasks in the list\\n%n\", tasks.size());","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"JerryWang0000"},"content":" private void deleteTask(int num) throws DukeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"JerryWang0000"},"content":" if (num \u003c 0 || num \u003e tasks.size()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" OOPS! Invalid Index!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"JerryWang0000"},"content":" Task task \u003d tasks.remove(num - 1);","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"JerryWang0000"},"content":" if (tasks.size() \u003d\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Now you have 1 task in the list\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"JerryWang0000"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"JerryWang0000"},"content":" System.out.printf(\" Now you have %d tasks in the list\\n%n\", tasks.size());","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"JerryWang0000"},"content":" private void list() {","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"JerryWang0000"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" No tasks yet...\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"JerryWang0000"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"JerryWang0000"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" \" + (i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"JerryWang0000"},"content":" System.out.println();","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":99,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":100,"author":{"gitId":"JerryWang0000"},"content":" private void mark(int num) throws DukeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":101,"author":{"gitId":"JerryWang0000"},"content":" if (num \u003c\u003d 0 || num \u003e tasks.size()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":102,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" OOPS! Invalid Index!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"JerryWang0000"},"content":" Task task \u003d tasks.get(num - 1);","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"JerryWang0000"},"content":" if (task.isDone()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Already done. No need to mark again.\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":107,"author":{"gitId":"JerryWang0000"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":108,"author":{"gitId":"JerryWang0000"},"content":" task.mark();","lastModifiedDate":"2024-02-01"},{"lineNumber":109,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-02-01"},{"lineNumber":110,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" \" + task + \u0027\\n\u0027);","lastModifiedDate":"2024-02-01"},{"lineNumber":111,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":112,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":113,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":114,"author":{"gitId":"JerryWang0000"},"content":" private void unmark(int num) throws DukeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":115,"author":{"gitId":"JerryWang0000"},"content":" if (num \u003c\u003d 0 || num \u003e tasks.size()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":116,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\"OOPS! Invalid Index!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":117,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":118,"author":{"gitId":"JerryWang0000"},"content":" Task task \u003d tasks.get(num - 1);","lastModifiedDate":"2024-02-01"},{"lineNumber":119,"author":{"gitId":"JerryWang0000"},"content":" if (!task.isDone()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":120,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Not done in the first place. No need to unmark.\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":121,"author":{"gitId":"JerryWang0000"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":122,"author":{"gitId":"JerryWang0000"},"content":" task.unmark();","lastModifiedDate":"2024-02-01"},{"lineNumber":123,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-02-01"},{"lineNumber":124,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" \" + task + \u0027\\n\u0027);","lastModifiedDate":"2024-02-01"},{"lineNumber":125,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":126,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":127,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":128,"author":{"gitId":"JerryWang0000"},"content":" void answer(String prompt) {","lastModifiedDate":"2024-02-01"},{"lineNumber":129,"author":{"gitId":"JerryWang0000"},"content":" String[] order \u003d prompt.split(\" \");","lastModifiedDate":"2024-02-01"},{"lineNumber":130,"author":{"gitId":"JerryWang0000"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":131,"author":{"gitId":"JerryWang0000"},"content":" switch (order[0]) {","lastModifiedDate":"2024-02-01"},{"lineNumber":132,"author":{"gitId":"JerryWang0000"},"content":" case \"list\":","lastModifiedDate":"2024-02-01"},{"lineNumber":133,"author":{"gitId":"JerryWang0000"},"content":" list();","lastModifiedDate":"2024-02-01"},{"lineNumber":134,"author":{"gitId":"JerryWang0000"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":135,"author":{"gitId":"JerryWang0000"},"content":" case \"mark\":","lastModifiedDate":"2024-02-01"},{"lineNumber":136,"author":{"gitId":"JerryWang0000"},"content":" mark(Integer.parseInt(order[1]));","lastModifiedDate":"2024-02-01"},{"lineNumber":137,"author":{"gitId":"JerryWang0000"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":138,"author":{"gitId":"JerryWang0000"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-01"},{"lineNumber":139,"author":{"gitId":"JerryWang0000"},"content":" unmark(Integer.parseInt(order[1]));","lastModifiedDate":"2024-02-01"},{"lineNumber":140,"author":{"gitId":"JerryWang0000"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":141,"author":{"gitId":"JerryWang0000"},"content":" case \"delete\":","lastModifiedDate":"2024-02-01"},{"lineNumber":142,"author":{"gitId":"JerryWang0000"},"content":" deleteTask(Integer.parseInt(order[1]));","lastModifiedDate":"2024-02-01"},{"lineNumber":143,"author":{"gitId":"JerryWang0000"},"content":" default:","lastModifiedDate":"2024-02-01"},{"lineNumber":144,"author":{"gitId":"JerryWang0000"},"content":" addTask(prompt);","lastModifiedDate":"2024-02-01"},{"lineNumber":145,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":146,"author":{"gitId":"JerryWang0000"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":147,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(e);","lastModifiedDate":"2024-02-01"},{"lineNumber":148,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":149,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":150,"author":{"gitId":"JerryWang0000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"JerryWang0000":150}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JerryWang0000"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"JerryWang0000"},"content":" private String deadline;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"JerryWang0000"},"content":" Deadline(String name, String deadline) {","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"JerryWang0000"},"content":" super(name);","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"JerryWang0000"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"JerryWang0000"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"JerryWang0000"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"JerryWang0000"},"content":" return \"[D]\" + super.toString() + String.format(\" (by: %s) \", deadline);","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"JerryWang0000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"JerryWang0000":13}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JerryWang0000"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"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":"JerryWang0000"},"content":" BotManager manager \u003d new BotManager(\"Jerry\");","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"JerryWang0000"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"JerryWang0000"},"content":" manager.greeting();","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"JerryWang0000"},"content":" while (true) {","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"JerryWang0000"},"content":" String prompt \u003d sc.nextLine();","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"JerryWang0000"},"content":" if (prompt.equals(\"bye\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"JerryWang0000"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"JerryWang0000"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"JerryWang0000"},"content":" manager.answer(prompt);","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"JerryWang0000"},"content":" manager.exit();","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"JerryWang0000"},"content":" sc.close();","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"JerryWang0000":15,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JerryWang0000"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"JerryWang0000"},"content":" private final String errorMessage;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"JerryWang0000"},"content":" DukeException(String errorMessage) {","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"JerryWang0000"},"content":" this.errorMessage \u003d errorMessage;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"JerryWang0000"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"JerryWang0000"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"JerryWang0000"},"content":" return errorMessage;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"JerryWang0000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"JerryWang0000":12}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JerryWang0000"},"content":"public class Event extends Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"JerryWang0000"},"content":" private String startTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"JerryWang0000"},"content":" private String endTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"JerryWang0000"},"content":" Event(String name, String startTime, String endTime) {","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"JerryWang0000"},"content":" super(name);","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"JerryWang0000"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"JerryWang0000"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"JerryWang0000"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"JerryWang0000"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"JerryWang0000"},"content":" return \"[E]\" + super.toString() + String.format(\" (from: %s to: %s) \", startTime, endTime);","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"JerryWang0000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"JerryWang0000":15}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JerryWang0000"},"content":"abstract public class Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"JerryWang0000"},"content":" private final String name;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"JerryWang0000"},"content":" private boolean done;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"JerryWang0000"},"content":" Task(String name) {","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"JerryWang0000"},"content":" this.name \u003d name;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"JerryWang0000"},"content":" this.done \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"JerryWang0000"},"content":" boolean isDone() {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"JerryWang0000"},"content":" return done;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"JerryWang0000"},"content":" void mark() {","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"JerryWang0000"},"content":" this.done \u003d true;","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"JerryWang0000"},"content":" void unmark() {","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"JerryWang0000"},"content":" this.done \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"JerryWang0000"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"JerryWang0000"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"JerryWang0000"},"content":" if (done) {","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"JerryWang0000"},"content":" return \"[X] \" + name;","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"JerryWang0000"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"JerryWang0000"},"content":" return \"[ ] \" + name;","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"JerryWang0000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"JerryWang0000":30}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JerryWang0000"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"JerryWang0000"},"content":" Todo(String name) {","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"JerryWang0000"},"content":" super(name);","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"JerryWang0000"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"JerryWang0000"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"JerryWang0000"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"JerryWang0000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"JerryWang0000":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"JerryWang0000"},"content":"todo borrow book","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"JerryWang0000"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"JerryWang0000"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"JerryWang0000"},"content":"list","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"JerryWang0000"},"content":"mark 2","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"JerryWang0000"},"content":"mark 1","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"JerryWang0000"},"content":"unmark 2","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"JerryWang0000"},"content":"list","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"JerryWang0000"},"content":"bye","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"JerryWang0000":9}}] +[{"path":"src/main/java/BotManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JerryWang0000"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"JerryWang0000"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"JerryWang0000"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"JerryWang0000"},"content":"import java.io.File;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"JerryWang0000"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"JerryWang0000"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"JerryWang0000"},"content":"public class BotManager {","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"JerryWang0000"},"content":" private final String name;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"JerryWang0000"},"content":" private final ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"JerryWang0000"},"content":" private final File file;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"JerryWang0000"},"content":" BotManager(String fileFolder, String fileName, String name) {","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"JerryWang0000"},"content":" this.name \u003d name;","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"JerryWang0000"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"JerryWang0000"},"content":" File directory \u003d new File(fileFolder);","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"JerryWang0000"},"content":" if (!directory.exists()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"JerryWang0000"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"JerryWang0000"},"content":" boolean isDirMade \u003d directory.mkdirs();","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"JerryWang0000"},"content":" if (!isDirMade) {","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Something is wrong with directory creation!\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"JerryWang0000"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(e);","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"JerryWang0000"},"content":" file \u003d new File(fileFolder + \"/\" + fileName);","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"JerryWang0000"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"JerryWang0000"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"JerryWang0000"},"content":" boolean isCreated \u003d file.createNewFile();","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"JerryWang0000"},"content":" if (!isCreated) {","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Something is wrong with file creation!\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"JerryWang0000"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Oops! Unable to create a file for storage!\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"JerryWang0000"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(e);","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"JerryWang0000"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"JerryWang0000"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"JerryWang0000"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"JerryWang0000"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"JerryWang0000"},"content":" String line \u003d sc.nextLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"JerryWang0000"},"content":" tasks.add(Task.lineToTask(line));","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"JerryWang0000"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Oops! Unable to find the file!\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"JerryWang0000"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(e);","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"JerryWang0000"},"content":" void greeting() {","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Hello! I\u0027m \" + name);","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" What can I do for you?\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"JerryWang0000"},"content":" void exit() {","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Bye. Hope to see you again soon!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"JerryWang0000"},"content":" private Task createTask(String prompt) throws DukeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"JerryWang0000"},"content":" String[] order \u003d prompt.split(\" \", 2);","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"JerryWang0000"},"content":" String taskType \u003d order[0];","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"JerryWang0000"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"JerryWang0000"},"content":" case \"todo\":","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"JerryWang0000"},"content":" if (order.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Not sure about the description of the todo!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"JerryWang0000"},"content":" } else if (order[1].trim().isEmpty()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Not sure about the description of the todo!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"JerryWang0000"},"content":" return new Todo(order[1]);","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"JerryWang0000"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"JerryWang0000"},"content":" String[] deadline \u003d order[1].split(\" /by \");","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"JerryWang0000"},"content":" if (deadline.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Incorrect format!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"JerryWang0000"},"content":" } else if (deadline[0].trim().isEmpty()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Not sure about the description of the deadline!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"JerryWang0000"},"content":" } else if (deadline[1].trim().isEmpty()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Not sure about the deadline!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"JerryWang0000"},"content":" return new Deadline(deadline[0], deadline[1]);","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"JerryWang0000"},"content":" case \"event\":","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"JerryWang0000"},"content":" String[] startTime \u003d order[1].split(\" /from \");","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"JerryWang0000"},"content":" if (startTime.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Incorrect format!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"JerryWang0000"},"content":" } else if (startTime[0].trim().isEmpty()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Not sure about the description of the event!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"JerryWang0000"},"content":" } else if (startTime[1].split(\" /to \")[0].trim().isEmpty()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Not sure about the starting time!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"JerryWang0000"},"content":" String[] endTime \u003d order[1].split(\" /to \");","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"JerryWang0000"},"content":" if (endTime.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Incorrect format!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"JerryWang0000"},"content":" } else if (endTime[1].trim().isEmpty()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! Not sure about the ending time!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":99,"author":{"gitId":"JerryWang0000"},"content":" return new Event(startTime[0], startTime[1].split(\" /to \")[0], endTime[1]);","lastModifiedDate":"2024-02-01"},{"lineNumber":100,"author":{"gitId":"JerryWang0000"},"content":" default:","lastModifiedDate":"2024-02-01"},{"lineNumber":101,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Sorry! I don\u0027t see what you mean...\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":102,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"JerryWang0000"},"content":" private void addTask(String prompt) throws DukeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"JerryWang0000"},"content":" Task task \u003d createTask(prompt);","lastModifiedDate":"2024-02-01"},{"lineNumber":107,"author":{"gitId":"JerryWang0000"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":108,"author":{"gitId":"JerryWang0000"},"content":" FileWriter fw \u003d new FileWriter(file, true);","lastModifiedDate":"2024-02-07"},{"lineNumber":109,"author":{"gitId":"JerryWang0000"},"content":" fw.write(task.taskToLine() + \"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":110,"author":{"gitId":"JerryWang0000"},"content":" fw.close();","lastModifiedDate":"2024-02-07"},{"lineNumber":111,"author":{"gitId":"JerryWang0000"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":112,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Oops! unable to write to the file!\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":113,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":114,"author":{"gitId":"JerryWang0000"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":115,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-02-01"},{"lineNumber":116,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-02-01"},{"lineNumber":117,"author":{"gitId":"JerryWang0000"},"content":" if (tasks.size() \u003d\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":118,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Now you have 1 task in the list\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":119,"author":{"gitId":"JerryWang0000"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":120,"author":{"gitId":"JerryWang0000"},"content":" System.out.printf(\" Now you have %d tasks in the list\\n%n\", tasks.size());","lastModifiedDate":"2024-02-01"},{"lineNumber":121,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":122,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":123,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":124,"author":{"gitId":"JerryWang0000"},"content":" private void deleteTask(int num) throws DukeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":125,"author":{"gitId":"JerryWang0000"},"content":" if (num \u003c 0 || num \u003e tasks.size()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":126,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" OOPS! Invalid Index!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":127,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":128,"author":{"gitId":"JerryWang0000"},"content":" Task task \u003d tasks.remove(num - 1);","lastModifiedDate":"2024-02-01"},{"lineNumber":129,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-02-01"},{"lineNumber":130,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-02-01"},{"lineNumber":131,"author":{"gitId":"JerryWang0000"},"content":" if (tasks.size() \u003d\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":132,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Now you have 1 task in the list\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":133,"author":{"gitId":"JerryWang0000"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":134,"author":{"gitId":"JerryWang0000"},"content":" System.out.printf(\" Now you have %d tasks in the list\\n\", tasks.size());","lastModifiedDate":"2024-02-07"},{"lineNumber":135,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":136,"author":{"gitId":"JerryWang0000"},"content":" deleteLineInFile(num);","lastModifiedDate":"2024-02-07"},{"lineNumber":137,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":138,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":139,"author":{"gitId":"JerryWang0000"},"content":" private void list() {","lastModifiedDate":"2024-02-01"},{"lineNumber":140,"author":{"gitId":"JerryWang0000"},"content":" if (tasks.isEmpty()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":141,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" No tasks yet...\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":142,"author":{"gitId":"JerryWang0000"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":143,"author":{"gitId":"JerryWang0000"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-01"},{"lineNumber":144,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" \" + (i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2024-02-01"},{"lineNumber":145,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":146,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":147,"author":{"gitId":"JerryWang0000"},"content":" System.out.println();","lastModifiedDate":"2024-02-01"},{"lineNumber":148,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":149,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":150,"author":{"gitId":"JerryWang0000"},"content":" private void mark(int num) throws DukeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":151,"author":{"gitId":"JerryWang0000"},"content":" if (num \u003c\u003d 0 || num \u003e tasks.size()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":152,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" OOPS! Invalid Index!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":153,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":154,"author":{"gitId":"JerryWang0000"},"content":" Task task \u003d tasks.get(num - 1);","lastModifiedDate":"2024-02-01"},{"lineNumber":155,"author":{"gitId":"JerryWang0000"},"content":" if (task.isDone()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":156,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Already done. No need to mark again.\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":157,"author":{"gitId":"JerryWang0000"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":158,"author":{"gitId":"JerryWang0000"},"content":" task.mark();","lastModifiedDate":"2024-02-01"},{"lineNumber":159,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-02-01"},{"lineNumber":160,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" \" + task + \u0027\\n\u0027);","lastModifiedDate":"2024-02-01"},{"lineNumber":161,"author":{"gitId":"JerryWang0000"},"content":" editLineInFile(num, task);","lastModifiedDate":"2024-02-07"},{"lineNumber":162,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":163,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":164,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":165,"author":{"gitId":"JerryWang0000"},"content":" private void unmark(int num) throws DukeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":166,"author":{"gitId":"JerryWang0000"},"content":" if (num \u003c\u003d 0 || num \u003e tasks.size()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":167,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\"OOPS! Invalid Index!\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":168,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":169,"author":{"gitId":"JerryWang0000"},"content":" Task task \u003d tasks.get(num - 1);","lastModifiedDate":"2024-02-01"},{"lineNumber":170,"author":{"gitId":"JerryWang0000"},"content":" if (!task.isDone()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":171,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Not done in the first place. No need to unmark.\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":172,"author":{"gitId":"JerryWang0000"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":173,"author":{"gitId":"JerryWang0000"},"content":" task.unmark();","lastModifiedDate":"2024-02-01"},{"lineNumber":174,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-02-01"},{"lineNumber":175,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" \" + task + \u0027\\n\u0027);","lastModifiedDate":"2024-02-01"},{"lineNumber":176,"author":{"gitId":"JerryWang0000"},"content":" editLineInFile(num, task);","lastModifiedDate":"2024-02-07"},{"lineNumber":177,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":178,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":179,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":180,"author":{"gitId":"JerryWang0000"},"content":" private void deleteLineInFile(int num) {","lastModifiedDate":"2024-02-07"},{"lineNumber":181,"author":{"gitId":"JerryWang0000"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":182,"author":{"gitId":"JerryWang0000"},"content":" int i \u003d 1;","lastModifiedDate":"2024-02-07"},{"lineNumber":183,"author":{"gitId":"JerryWang0000"},"content":" ArrayList\u003cString\u003e lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-07"},{"lineNumber":184,"author":{"gitId":"JerryWang0000"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2024-02-07"},{"lineNumber":185,"author":{"gitId":"JerryWang0000"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":186,"author":{"gitId":"JerryWang0000"},"content":" String newLine \u003d sc.nextLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":187,"author":{"gitId":"JerryWang0000"},"content":" if (i !\u003d num) {","lastModifiedDate":"2024-02-07"},{"lineNumber":188,"author":{"gitId":"JerryWang0000"},"content":" lines.add(newLine);","lastModifiedDate":"2024-02-07"},{"lineNumber":189,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":190,"author":{"gitId":"JerryWang0000"},"content":" i++;","lastModifiedDate":"2024-02-07"},{"lineNumber":191,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":192,"author":{"gitId":"JerryWang0000"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-02-07"},{"lineNumber":193,"author":{"gitId":"JerryWang0000"},"content":" for (String line : lines) {","lastModifiedDate":"2024-02-07"},{"lineNumber":194,"author":{"gitId":"JerryWang0000"},"content":" fw.write(line + \"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":195,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":196,"author":{"gitId":"JerryWang0000"},"content":" fw.close();","lastModifiedDate":"2024-02-07"},{"lineNumber":197,"author":{"gitId":"JerryWang0000"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":198,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Oops! Something is wrong with the file management!\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":199,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":200,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":201,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":202,"author":{"gitId":"JerryWang0000"},"content":" private void editLineInFile(int num, Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":203,"author":{"gitId":"JerryWang0000"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":204,"author":{"gitId":"JerryWang0000"},"content":" int i \u003d 1;","lastModifiedDate":"2024-02-07"},{"lineNumber":205,"author":{"gitId":"JerryWang0000"},"content":" ArrayList\u003cString\u003e lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-07"},{"lineNumber":206,"author":{"gitId":"JerryWang0000"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2024-02-07"},{"lineNumber":207,"author":{"gitId":"JerryWang0000"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":208,"author":{"gitId":"JerryWang0000"},"content":" String newLine \u003d sc.nextLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":209,"author":{"gitId":"JerryWang0000"},"content":" if (i !\u003d num) {","lastModifiedDate":"2024-02-07"},{"lineNumber":210,"author":{"gitId":"JerryWang0000"},"content":" lines.add(newLine);","lastModifiedDate":"2024-02-07"},{"lineNumber":211,"author":{"gitId":"JerryWang0000"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":212,"author":{"gitId":"JerryWang0000"},"content":" lines.add(task.taskToLine());","lastModifiedDate":"2024-02-07"},{"lineNumber":213,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":214,"author":{"gitId":"JerryWang0000"},"content":" i++;","lastModifiedDate":"2024-02-07"},{"lineNumber":215,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":216,"author":{"gitId":"JerryWang0000"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-02-07"},{"lineNumber":217,"author":{"gitId":"JerryWang0000"},"content":" for (String line : lines) {","lastModifiedDate":"2024-02-07"},{"lineNumber":218,"author":{"gitId":"JerryWang0000"},"content":" fw.write(line + \"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":219,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":220,"author":{"gitId":"JerryWang0000"},"content":" fw.close();","lastModifiedDate":"2024-02-07"},{"lineNumber":221,"author":{"gitId":"JerryWang0000"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":222,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(\" Oops! Something is wrong with the file management!\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":223,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":224,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":225,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":226,"author":{"gitId":"JerryWang0000"},"content":" void answer(String prompt) {","lastModifiedDate":"2024-02-01"},{"lineNumber":227,"author":{"gitId":"JerryWang0000"},"content":" String[] order \u003d prompt.split(\" \");","lastModifiedDate":"2024-02-01"},{"lineNumber":228,"author":{"gitId":"JerryWang0000"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":229,"author":{"gitId":"JerryWang0000"},"content":" switch (order[0]) {","lastModifiedDate":"2024-02-01"},{"lineNumber":230,"author":{"gitId":"JerryWang0000"},"content":" case \"list\":","lastModifiedDate":"2024-02-01"},{"lineNumber":231,"author":{"gitId":"JerryWang0000"},"content":" list();","lastModifiedDate":"2024-02-01"},{"lineNumber":232,"author":{"gitId":"JerryWang0000"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":233,"author":{"gitId":"JerryWang0000"},"content":" case \"mark\":","lastModifiedDate":"2024-02-01"},{"lineNumber":234,"author":{"gitId":"JerryWang0000"},"content":" mark(Integer.parseInt(order[1]));","lastModifiedDate":"2024-02-01"},{"lineNumber":235,"author":{"gitId":"JerryWang0000"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":236,"author":{"gitId":"JerryWang0000"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-01"},{"lineNumber":237,"author":{"gitId":"JerryWang0000"},"content":" unmark(Integer.parseInt(order[1]));","lastModifiedDate":"2024-02-01"},{"lineNumber":238,"author":{"gitId":"JerryWang0000"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":239,"author":{"gitId":"JerryWang0000"},"content":" case \"delete\":","lastModifiedDate":"2024-02-01"},{"lineNumber":240,"author":{"gitId":"JerryWang0000"},"content":" deleteTask(Integer.parseInt(order[1]));","lastModifiedDate":"2024-02-01"},{"lineNumber":241,"author":{"gitId":"JerryWang0000"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":242,"author":{"gitId":"JerryWang0000"},"content":" default:","lastModifiedDate":"2024-02-01"},{"lineNumber":243,"author":{"gitId":"JerryWang0000"},"content":" addTask(prompt);","lastModifiedDate":"2024-02-01"},{"lineNumber":244,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":245,"author":{"gitId":"JerryWang0000"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":246,"author":{"gitId":"JerryWang0000"},"content":" System.out.println(e);","lastModifiedDate":"2024-02-01"},{"lineNumber":247,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":248,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":249,"author":{"gitId":"JerryWang0000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"JerryWang0000":249}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JerryWang0000"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"JerryWang0000"},"content":" private String deadline;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"JerryWang0000"},"content":" Deadline(String name, String deadline) {","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"JerryWang0000"},"content":" super(name);","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"JerryWang0000"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"JerryWang0000"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"JerryWang0000"},"content":" String taskToLine() {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"JerryWang0000"},"content":" return \"D | \" + super.taskToLine() + \" | \" + deadline;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"JerryWang0000"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"JerryWang0000"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"JerryWang0000"},"content":" return \"[D]\" + super.toString() + String.format(\" (by: %s) \", deadline);","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"JerryWang0000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"JerryWang0000":18}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JerryWang0000"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"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":"JerryWang0000"},"content":" BotManager manager \u003d new BotManager(\"./data\", \"duke.txt\", \"Jerry\");","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"JerryWang0000"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"JerryWang0000"},"content":" manager.greeting();","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"JerryWang0000"},"content":" while (true) {","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"JerryWang0000"},"content":" String prompt \u003d sc.nextLine();","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"JerryWang0000"},"content":" if (prompt.equals(\"bye\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"JerryWang0000"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"JerryWang0000"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"JerryWang0000"},"content":" manager.answer(prompt);","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"JerryWang0000"},"content":" manager.exit();","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"JerryWang0000"},"content":" sc.close();","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"JerryWang0000":15,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JerryWang0000"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"JerryWang0000"},"content":" private final String errorMessage;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"JerryWang0000"},"content":" DukeException(String errorMessage) {","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"JerryWang0000"},"content":" this.errorMessage \u003d errorMessage;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"JerryWang0000"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"JerryWang0000"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"JerryWang0000"},"content":" return errorMessage;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"JerryWang0000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"JerryWang0000":12}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JerryWang0000"},"content":"public class Event extends Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"JerryWang0000"},"content":" private String startTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"JerryWang0000"},"content":" private String endTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"JerryWang0000"},"content":" Event(String name, String startTime, String endTime) {","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"JerryWang0000"},"content":" super(name);","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"JerryWang0000"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"JerryWang0000"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"JerryWang0000"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"JerryWang0000"},"content":" String taskToLine() {","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"JerryWang0000"},"content":" return \"E | \" + super.taskToLine() + \" | \" + startTime + \" | \" + endTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"JerryWang0000"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"JerryWang0000"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"JerryWang0000"},"content":" return \"[E]\" + super.toString() + String.format(\" (from: %s to: %s) \", startTime, endTime);","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"JerryWang0000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"JerryWang0000":20}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JerryWang0000"},"content":"abstract public class Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"JerryWang0000"},"content":" private final String name;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"JerryWang0000"},"content":" private boolean done;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"JerryWang0000"},"content":" Task(String name) {","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"JerryWang0000"},"content":" this.name \u003d name;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"JerryWang0000"},"content":" this.done \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"JerryWang0000"},"content":" boolean isDone() {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"JerryWang0000"},"content":" return done;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"JerryWang0000"},"content":" void mark() {","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"JerryWang0000"},"content":" this.done \u003d true;","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"JerryWang0000"},"content":" void unmark() {","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"JerryWang0000"},"content":" this.done \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"JerryWang0000"},"content":" static Task lineToTask(String line) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"JerryWang0000"},"content":" String[] lineSplit \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"JerryWang0000"},"content":" switch (lineSplit[0]) {","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"JerryWang0000"},"content":" case \"T\":","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"JerryWang0000"},"content":" Task newTask \u003d new Todo(lineSplit[2]);","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"JerryWang0000"},"content":" if (lineSplit[1].equals(\"O\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"JerryWang0000"},"content":" newTask.mark();","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"JerryWang0000"},"content":" return newTask;","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"JerryWang0000"},"content":" case \"D\":","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"JerryWang0000"},"content":" if (lineSplit.length \u003c 4) {","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! The file format is wrong!\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"JerryWang0000"},"content":" newTask \u003d new Deadline(lineSplit[2], lineSplit[3]);","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"JerryWang0000"},"content":" if (lineSplit[1].equals(\"O\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"JerryWang0000"},"content":" newTask.mark();","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"JerryWang0000"},"content":" return newTask;","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"JerryWang0000"},"content":" case \"E\":","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"JerryWang0000"},"content":" if (lineSplit.length \u003c 5) {","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! The file format is wrong!\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"JerryWang0000"},"content":" newTask \u003d new Event(lineSplit[2], lineSplit[3], lineSplit[4]);","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"JerryWang0000"},"content":" if (lineSplit[1].equals(\"O\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"JerryWang0000"},"content":" newTask.mark();","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"JerryWang0000"},"content":" return newTask;","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"JerryWang0000"},"content":" default:","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"JerryWang0000"},"content":" throw new DukeException(\" Oops! The file format is wrong!\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"JerryWang0000"},"content":" String taskToLine() {","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"JerryWang0000"},"content":" String mark \u003d \"X\";","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"JerryWang0000"},"content":" if (done) {","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"JerryWang0000"},"content":" mark \u003d \"O\";","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"JerryWang0000"},"content":" return mark + \" | \" + name;","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"JerryWang0000"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"JerryWang0000"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"JerryWang0000"},"content":" if (done) {","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"JerryWang0000"},"content":" return \"[X] \" + name;","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"JerryWang0000"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"JerryWang0000"},"content":" return \"[ ] \" + name;","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"JerryWang0000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"JerryWang0000":70}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JerryWang0000"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"JerryWang0000"},"content":" Todo(String name) {","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"JerryWang0000"},"content":" super(name);","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"JerryWang0000"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"JerryWang0000"},"content":" String taskToLine() {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"JerryWang0000"},"content":" return \"T | \" + super.taskToLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"JerryWang0000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"JerryWang0000"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"JerryWang0000"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"JerryWang0000"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"JerryWang0000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"JerryWang0000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"JerryWang0000":15}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"JerryWang0000"},"content":"todo borrow book","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"JerryWang0000"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"JerryWang0000"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"JerryWang0000"},"content":"list","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"JerryWang0000"},"content":"mark 2","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"JerryWang0000"},"content":"mark 1","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"JerryWang0000"},"content":"unmark 2","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"JerryWang0000"},"content":"list","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"JerryWang0000"},"content":"bye","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"JerryWang0000":9}}] diff --git a/JerryWang0000_ip_master/commits.json b/JerryWang0000_ip_master/commits.json index e7aeb790..30d71403 100644 --- a/JerryWang0000_ip_master/commits.json +++ b/JerryWang0000_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"JerryWang0000":[{"date":"2024-02-01","commitResults":[{"hash":"25007105ca863f8c88376f6099a8315d4c59dff4","isMergeCommit":false,"messageTitle":"Change name of the bot and add greeting and exit words","messageBody":"Rewrite the src/main/java/Duke.java to allow for the changes mentioned in the subject line.\n","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"9755b0171148ff506c1f1dfd4a8b9aa9f689f8c5","isMergeCommit":false,"messageTitle":"Add BotManager.java and modify Duke.java","messageBody":"Create a BotManager class to take care of all reponses that will be generated by the bot. Some codes in the previous commit is moved to the BotManager class.\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":4}}},{"hash":"74e325de29f5d3eecd242c338b78e0b7a8a7ed54","isMergeCommit":false,"messageTitle":"Add \"add\" and \"list\" function to the bot","messageBody":"Modify the void answer(String prompt) function to allow the bot to add tasks and list all the tasks added.\n","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"cff5c47e7be80911c82befff5187f612b2c8b92a","isMergeCommit":false,"messageTitle":"Add task.java and modify BotManager.java","messageBody":"Create a new Task class to facilitate the increasingly complicated features, and make amendment to the BotManager in accordance.\n","tags":["Level-3","A-Collections","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":5}}},{"hash":"4f6c5e16acce5565b7d33360181a7a72ea6fcde9","isMergeCommit":false,"messageTitle":"Add 3 subclasses of Task","messageBody":"Add the subclasses as they present similar behavior. Rewrite some methods in BotManager for better clarity. Make Task class abstract as only the subclasses are dealt with.\n","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":19}}},{"hash":"23f1b6ef7e61d0fe37680c4aa4dedbafba06fbf1","isMergeCommit":false,"messageTitle":"Modify input.txt and EXPECTED.TXT","messageBody":"Modify the test files to facilitate the varying features of the bot. Make mild changes to the BotManager.java to adapt to the comparisons.\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":2,"deletions":2},"sh":{"insertions":0,"deletions":38}}},{"hash":"2d041523cf186e63c75dc8afb45265439efb9080","isMergeCommit":false,"messageTitle":"Add DukeException.java. Make abundant modification to BotManager.java","messageBody":"Add DukeException class that deals with invalid inputs. Change much in the implementation of BotManager to catch DukeException. Add an extra interface to Task class to consider marginal scenarios.\n\nThis version needs further improvement to be more punctual when dealing with task creation. Should make distinction between information missing and incorrect format.\n","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":36}}},{"hash":"bb9994bbacb1da1a8e7fbf71c0d982f172c9d24f","isMergeCommit":false,"messageTitle":"Change BotManager.java","messageBody":"Add a deleteTask function to allow for deleting tasks from the collection.\n","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"JerryWang0000":{"java":245,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"JerryWang0000":12493.0},"authorDisplayNameMap":{"JerryWang0000":"CS2103-F08-3 WANG..HUAI"}} +{"authorDailyContributionsMap":{"JerryWang0000":[{"date":"2024-02-01","commitResults":[{"hash":"25007105ca863f8c88376f6099a8315d4c59dff4","isMergeCommit":false,"messageTitle":"Change name of the bot and add greeting and exit words","messageBody":"Rewrite the src/main/java/Duke.java to allow for the changes mentioned in the subject line.\n","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"9755b0171148ff506c1f1dfd4a8b9aa9f689f8c5","isMergeCommit":false,"messageTitle":"Add BotManager.java and modify Duke.java","messageBody":"Create a BotManager class to take care of all reponses that will be generated by the bot. Some codes in the previous commit is moved to the BotManager class.\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":4}}},{"hash":"74e325de29f5d3eecd242c338b78e0b7a8a7ed54","isMergeCommit":false,"messageTitle":"Add \"add\" and \"list\" function to the bot","messageBody":"Modify the void answer(String prompt) function to allow the bot to add tasks and list all the tasks added.\n","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"cff5c47e7be80911c82befff5187f612b2c8b92a","isMergeCommit":false,"messageTitle":"Add task.java and modify BotManager.java","messageBody":"Create a new Task class to facilitate the increasingly complicated features, and make amendment to the BotManager in accordance.\n","tags":["Level-3","A-Collections","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":5}}},{"hash":"4f6c5e16acce5565b7d33360181a7a72ea6fcde9","isMergeCommit":false,"messageTitle":"Add 3 subclasses of Task","messageBody":"Add the subclasses as they present similar behavior. Rewrite some methods in BotManager for better clarity. Make Task class abstract as only the subclasses are dealt with.\n","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":19}}},{"hash":"23f1b6ef7e61d0fe37680c4aa4dedbafba06fbf1","isMergeCommit":false,"messageTitle":"Modify input.txt and EXPECTED.TXT","messageBody":"Modify the test files to facilitate the varying features of the bot. Make mild changes to the BotManager.java to adapt to the comparisons.\n","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":2,"deletions":2},"sh":{"insertions":0,"deletions":38}}},{"hash":"2d041523cf186e63c75dc8afb45265439efb9080","isMergeCommit":false,"messageTitle":"Add DukeException.java. Make abundant modification to BotManager.java","messageBody":"Add DukeException class that deals with invalid inputs. Change much in the implementation of BotManager to catch DukeException. Add an extra interface to Task class to consider marginal scenarios.\n\nThis version needs further improvement to be more punctual when dealing with task creation. Should make distinction between information missing and incorrect format.\n","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":36}}},{"hash":"bb9994bbacb1da1a8e7fbf71c0d982f172c9d24f","isMergeCommit":false,"messageTitle":"Change BotManager.java","messageBody":"Add a deleteTask function to allow for deleting tasks from the collection.\n","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}}]},{"date":"2024-02-07","commitResults":[{"hash":"ba564ae935d082411332bc1df52b7943bc2590bb","isMergeCommit":false,"messageTitle":"Add File attribute to the BotManager","messageBody":"Make mass modification to the code in BotManager.java to adapt to the new attributes. Any change of the current tasks invokes change in the file. Use the file to store tasks given a certain format.\n\nIgnore the temporarily generated duke.txt file.\n","fileTypesAndContributionMap":{"java":{"insertions":159,"deletions":5}}},{"hash":"8b8b0bb79d0224c1582823e447091c8654e4a717","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"JerryWang0000":{"java":399,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"JerryWang0000":9868.592},"authorDisplayNameMap":{"JerryWang0000":"CS2103-F08-3 WANG..HUAI"}} diff --git a/JiaXinEu_ip_master/authorship.json b/JiaXinEu_ip_master/authorship.json index f5ce4505..e58132c3 100644 --- a/JiaXinEu_ip_master/authorship.json +++ b/JiaXinEu_ip_master/authorship.json @@ -1 +1 @@ -[{"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":"JiaXinEu"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-05"},{"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":"JiaXinEu"},"content":" mainClass.set(\"duke.Duke\")","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":"JiaXinEu"},"content":"checkstyle {","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-05"},{"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":"JiaXinEu"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"JiaXinEu":5,"-":43}},{"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":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" * Represents a ChatBot.","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"public class Duke {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" * Constructs a new Duke instance to run.","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" * Reads from file to set up chatbot.","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" * @param file Name of file to save data and read from.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" * @param fileParent Parent directory of file.","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" * @param name Name of chatbot.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" * @param logo Logo of chatbot.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" public Duke(String file, String fileParent, String name, String logo) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" ui \u003d new Ui(name, logo, System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" storage \u003d new Storage(file, fileParent);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" tasks \u003d new TaskList(storage.readFromFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" tasks \u003d new TaskList();","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":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" * Starts up the chatbot with welcome message and start taking in commands until bye command is inputted.","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" Command c \u003d Parser.parseCommand(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" } finally {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" }","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"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" * Starts Duke chatbot. Entry point of application.","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" * @param args Not used.","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" String logo \u003d \"\\t ____ __ _ _ __ ___ ___ ____ ___ ____\\n\\t\"","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" + \" (_ _) /__\\\\( \\\\/ )/__\\\\ / __)/ __)(_ _)/ __)(_ _)\\n\\t\"","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" + \" .-_)( /(__)\\\\\\\\ //(__)\\\\ \\\\__ \\\\\\\\__ \\\\ _)(_ \\\\__ \\\\ )(\\n\\t\"","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" + \"\\\\____)(__)(__)\\\\/(__)(__)(___/(___/(____)(___/ (__)\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" new Duke(\"Duke.txt\", \"./data\", \"JavAssist\", logo).run();","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":74}},{"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":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" * Represents a basic Command.","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"public interface Command {","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":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":15}},{"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 java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" * Represents a command to add new deadline.","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"public class DeadlineCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" public DeadlineCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","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-31"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" * Creates a new Deadline based on description and date time extracted from input and adds to TaskList.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds the tasks added.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" * @param ui Displays messages about executed operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" * @param storage Handles IO storage operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException If date time format is not valid.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" String[] task \u003d input.split(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d new Deadline(task[0].substring(9).trim(), task[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" ui.showAdded(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" }","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":" @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":" DeadlineCommand dc \u003d (DeadlineCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" return this.input.equals(dc.input);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":53}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" * Represents a command to delete specified task.","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"public class DeleteCommand 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 DeleteCommand(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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" * Removes task in TaskList where index is indicated in input.","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds the existing tasks including task to be removed.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" * @param ui Displays messages about executed operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" * @param storage Handles IO storage operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException If index is not n range.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" String[] s \u003d input.split(\"\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" int num \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" if (num \u003c\u003d list.getSize() \u0026\u0026 num \u003e\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d list.delete(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" ui.showDeleted(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Task (\" + num + \") not found.\\n\" + list.print());","lastModifiedDate":"2024-01-30"},{"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":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" DeleteCommand dc \u003d (DeleteCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" return this.input.equals(dc.input);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":50}},{"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 java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" * Represents a command to add new event.","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"public class EventCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" public EventCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" * Creates a new Event based on description, start and end date time extracted from input and adds to TaskList.","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds the tasks added.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" * @param ui Display messages about executed operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" * @param storage Handles IO storage operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException If date time format is not valid.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" String[] task \u003d input.split(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" String[] time \u003d task[1].split(\"/to\");","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"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":37,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" ui.showAdded(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(e.getMessage());","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":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" EventCommand ec \u003d (EventCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" return this.input.equals(ec.input);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":56}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" * Represents a command to exit the program.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"public class ExitCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" * Displays exit message.","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds the tasks added.","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" * @param ui Display messages about executed operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" * @param storage Handles IO storage operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException No thrown.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"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":" ui.showGoodbye();","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":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":29}},{"path":"src/main/java/duke/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" * Represents a command to find keyword.","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"public class FindCommand implements Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" public FindCommand(String input) {","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" * Searches through the list of tasks for matching keyword given in input.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds all tasks added.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" * @param ui Displays message of operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" * @param storage Handles IO operations.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException No thrown.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" String[] s \u003d input.split(\"\\\\s\");","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" String keyword \u003d s[1];","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" for (Task t : list.getList()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" if (t.getTask().contains(keyword)) {","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" ui.showMatchedTasks(new TaskList(arr));","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" FindCommand fc \u003d (FindCommand) a;","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" return this.input.equals(fc.input);","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"JiaXinEu":53}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" * Represents a command to list all tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"public class ListCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" * Displays all tasks in TaskList.","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds the tasks added.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" * @param ui Displays the tasks listed.","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" * @param storage Not used.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException If no task in TaskList.","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" if (list.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"No task in list.\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t You may add task with keywords: todo, deadline, event.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" ui.showTasks(list);","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":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":35}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" * Represents a command to mark specified task as done.","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"public class MarkCommand 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":" private boolean toMark;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" * Constructs a MarkCommand object.","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" * @param input User input.","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" * @param toMark Indicates mark command if true, unmark if false.","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" public MarkCommand(String input, boolean toMark) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" this.toMark \u003d toMark;","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-31"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" * Sets task in TaskList as done or not done depending on boolean value of toMark,","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" * where index is indicated in input.","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds the tasks added.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" * @param ui Displays messages about executed operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" * @param storage Handles IO storage operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException If index given is not within range.","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" String[] s \u003d input.split(\"\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" int num \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" if (num \u003c\u003d list.getSize() \u0026\u0026 num \u003e\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d list.getTask(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" if (this.toMark) {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" t.done();","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" ui.showMarked(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" t.undo();","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" ui.showUnmarked(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Task (\" + num + \") not found.\\n\" + list.print());","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":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" MarkCommand mc \u003d (MarkCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" return (this.toMark \u003d\u003d mc.toMark) \u0026\u0026 (this.input.equals(mc.input));","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":66}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" * Represents a command to add new Todo.","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"public class TodoCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" public TodoCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" * Creates a new Todo based on description extracted from input and adds to TaskList.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds the tasks added.","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" * @param ui Display messages about executed operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" * @param storage Handles IO storage operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException Not thrown.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" public void execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d new Todo(input.substring(5));","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" ui.showAdded(t, list);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","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":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" TodoCommand tc \u003d (TodoCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" return this.input.equals(tc.input);","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":47}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" * Represents a command that does not match any valid command.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"public class UnknownCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" * Throws a DukeException to indicate invalid command and suggests possible working commands.","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" * @param list Not used.","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" * @param ui Not used.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" * @param storage Not used.","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException Indicates invalid command.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"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":" throw new DukeException(\"Sorry I don\u0027t know what that means.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t Try keywords: todo, deadline, event, list, mark, unmark, delete.\");","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/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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" * Represents the exception that arises when running Duke.","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":10}},{"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":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" * Represents a deadline object.","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" private LocalDateTime date;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" * Constructs a Deadline object.","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" * @param task Description of task.","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" * @param date Deadline of task.","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" public Deadline(String task, String date) {","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" super(task);","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" this.date \u003d setDate(date);","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" * Assigns value of LocalDateTime from String.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" * @param s String specifying date and time in format \u0027dd-MM-yyyy HH:mm\"\u0027.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" * @return LocalDateTime from parsed String s.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" * @throws DateTimeParseException if s is in invalid format or specifies an invalid date time value.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" public LocalDateTime setDate(String s) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" LocalDateTime date \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" date \u003d LocalDateTime.parse(s, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" throw new DateTimeParseException(\"Invalid start/end date. Specify date in format \u0027dd-MM-yyyy HH:mm\u0027.\",","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" e.getParsedString(), e.getErrorIndex());","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" return date;","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" * @return String with type of task, description of deadline, and time to do by.","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" return \"[D]\" + super.printTask() + \" (by: \" + printDate() + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"D | %s | %s\", super.toString(),","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" this.date.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")));","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" * Returns date in format \u0027MMM dd yyyy, HH:mm\u0027.","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" * @return String of formatted localDateTime.","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" public String printDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" return this.date.format(formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":68}},{"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":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" * Represents an Event.","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" * Constructs an event object.","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" * @param task Description of task.","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" * @param start Start date of event.","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" * @param end End date of event.","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" public Event(String task, String start, String end) {","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" super(task);","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" this.start \u003d setDate(start);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" this.end \u003d setDate(end);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" * Assigns value of LocalDateTime from String.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" * @param s String specifying date and time in format \u0027dd-MM-yyyy HH:mm\"\u0027.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" * @return LocalDateTime from parsed String s.","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" * @throws DateTimeParseException if s is in invalid format or specifies an invalid date time value.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" public LocalDateTime setDate(String s) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" LocalDateTime date \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" date \u003d LocalDateTime.parse(s, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" throw new DateTimeParseException(\"Invalid start/end date. Specify date in format \u0027dd-MM-yyyy HH:mm\u0027.\",","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" e.getParsedString(), e.getErrorIndex());","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" return date;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" * @return String with type of task, description of event, start and end date time.","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" return \"[E]\" + super.printTask() + \" (from: \" + printDate(this.start) + \" to: \" + printDate(this.end) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"E | %s | %s | %s\", super.toString(),","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" this.start.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")),","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" this.end.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")));","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" * Returns date in format \u0027MMM dd yyyy, HH:mm\u0027.","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" * @param date LocalDateTime to be formatted.","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" * @return String of formatted localDateTime.","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" public String printDate(LocalDateTime date) {","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" return date.format(formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":73}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" * Represents a general task.","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" private String task;","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" * Constructs a task object.","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" * @param task Description of task.","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" public Task(String task) {","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" this.isDone \u003d false;","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" * Returns the details of a Task.","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" * @return String with description of the Task for display.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"[\" + (this.isDone ? \"X\" : \" \") + \"] \" + 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"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" * Marks isDone as true.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" public void done() {","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" * Marks isDone as false.","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" public void undo() {","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"%d | %s\", (this.isDone ? 1 : 0), this.task);","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" public String getTask() {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" return this.task;","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":51}},{"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":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" * Represents a todo.","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" public Todo(String task) {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" super(task);","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" * @return String with type of task and description of todo.","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" return \"[T]\" + super.printTask();","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"T | %s\", super.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":25}},{"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 java.util.regex.Pattern;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.Command;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.DeadlineCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.EventCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.ExitCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.FindCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.ListCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.TodoCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.UnknownCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" * Represents a parser to process and parse command.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" * Sets the possible types of input.","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" public enum InputType {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" LIST,","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" MARK,","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" UNMARK,","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" DELETE,","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" BYE,","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" TODO,","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" DEADLINE,","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" EVENT,","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" FIND,","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" 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-31"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" * Returns the type of command by checking the keyword used at start of input.","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" * @param input Command input by user.","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" * @return Corresponding enum value of command.","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" public static InputType getCommandType(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" return InputType.LIST;","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" return InputType.MARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" return InputType.UNMARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" return InputType.DELETE;","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" return InputType.BYE;","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" return InputType.TODO;","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" return InputType.DEADLINE;","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" return InputType.EVENT;","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"find\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" return InputType.FIND;","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" return InputType.UNKNOWN;","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":"","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" * Checks if input matches the regex pattern.","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" * @param input Command entered by user.","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" * @param pattern Regex pattern of a valid command format.","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" * @return True if matches, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" public static boolean matchPattern(String input, String pattern) {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" Pattern regexPattern \u003d Pattern.compile(pattern);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" return regexPattern.matcher(input).matches();","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-31"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" * Returns the corresponding Command for command given by user.","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" * @param input Command entered by user.","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":" * @return Subclass of Command based on keyword and format of command.","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException If command is not in the correct format.","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":" public static Command parseCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":" InputType commandType \u003d getCommandType(lowerInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" case LIST:","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":" case MARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"JiaXinEu"},"content":" return parseMarkCommand(input, true);","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 UNMARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" return parseMarkCommand(input, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"JiaXinEu"},"content":" case DELETE:","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"JiaXinEu"},"content":" return parseDeleteCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":" case TODO:","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"JiaXinEu"},"content":" return parseTodoCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"JiaXinEu"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"JiaXinEu"},"content":" return parseDeadlineCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"JiaXinEu"},"content":" case EVENT:","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"JiaXinEu"},"content":" return parseEventCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"JiaXinEu"},"content":" case FIND:","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"JiaXinEu"},"content":" return parseFindCommand(input);","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"JiaXinEu"},"content":" case BYE:","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"JiaXinEu"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"JiaXinEu"},"content":" case UNKNOWN:","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"JiaXinEu"},"content":" return new UnknownCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"JiaXinEu"},"content":" default:","lastModifiedDate":"2024-02-05"},{"lineNumber":140,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"JiaXinEu"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseMarkCommand(String input, boolean toMark) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"JiaXinEu"},"content":" if (matchPattern(lowerInput, \"mark\\\\s\\\\d+|unmark\\\\s\\\\d+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"JiaXinEu"},"content":" return new MarkCommand(input, toMark);","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"JiaXinEu"},"content":" if (toMark) {","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Your mark instruction is unclear.\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":151,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t Try \u0027mark [task number to mark as done]\u0027.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":152,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Your unmark instruction is unclear.\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":154,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t Try \u0027unmark [task number to mark as not done]\u0027.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":155,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseDeleteCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"delete\\\\s\\\\d+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":162,"author":{"gitId":"JiaXinEu"},"content":" return new DeleteCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Your delete instruction is unclear.\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":165,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t Try \u0027delete [task number to be deleted]\u0027.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":166,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseTodoCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":171,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"todo\\\\s.+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"JiaXinEu"},"content":" return new TodoCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":175,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t Try \u0027todo [task description]\u0027.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":176,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":177,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":178,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":179,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseDeadlineCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":181,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"deadline\\\\s.+\\\\s/by\\\\s.+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"JiaXinEu"},"content":" return new DeadlineCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"The description and due of a deadline cannot be empty.\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":185,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t Try \u0027deadline [task description] /by [dd-MM-yyyy HH:mm]\u0027.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":186,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":189,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseEventCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":190,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":191,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"event\\\\s.+\\\\s/from\\\\s.+\\\\s/to\\\\s.+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":192,"author":{"gitId":"JiaXinEu"},"content":" return new EventCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":193,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":194,"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":195,"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":196,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":197,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":198,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":199,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":200,"author":{"gitId":"JiaXinEu"},"content":" * Returns FindCommand if input is valid.","lastModifiedDate":"2024-01-31"},{"lineNumber":201,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":202,"author":{"gitId":"JiaXinEu"},"content":" * @param input Command entered by user.","lastModifiedDate":"2024-01-31"},{"lineNumber":203,"author":{"gitId":"JiaXinEu"},"content":" * @return FindCommand with input given.","lastModifiedDate":"2024-01-31"},{"lineNumber":204,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException If input is in invalid format.","lastModifiedDate":"2024-01-31"},{"lineNumber":205,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":206,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseFindCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":207,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-31"},{"lineNumber":208,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"find\\\\s\\\\S+\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":209,"author":{"gitId":"JiaXinEu"},"content":" return new FindCommand(input);","lastModifiedDate":"2024-01-31"},{"lineNumber":210,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":211,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Specify a keyword to search.\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":212,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t Try \u0027find [keyword]\u0027.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":213,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":214,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":215,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":216,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":216}},{"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 java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Event;","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" * Represents a storage mechanism.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" private File f;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" private FileWriter fw;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" private Scanner s;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" * Constructor to create an instance that perform IO operations on file in parent.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" * @param file Name of file to write to.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" * @param parent Parent directory of the file.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" public Storage(String file, String parent) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" this.f \u003d new File(parent + \"/\" + file);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" File parentDir \u003d new File(parent);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" if (!parentDir.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" parentDir.mkdirs();","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":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" * Writes String of tasks to file.","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" * @param list List of tasks to be written.","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" public void writeToFile(TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" this.fw \u003d new FileWriter(f);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" String data \u003d write(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" this.fw.write(data);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" this.fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" }","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" * Returns list of Tasks in readable format.","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" * @param taskList Holds the list of tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" * @return Structured String of all Tasks in taskList.","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" private String write(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e list \u003d taskList.getList();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" sb.append(list.get(i).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" if (i \u003c list.size() - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" sb.append(\"\\n\");","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":" return sb.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" * Returns ArrayList of tasks read from file.","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" * @return ArrayList of Task.","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException If file not found due to no existing data saved.","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" public ArrayList\u003cTask\u003e readFromFile() throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" if (f.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":" this.s \u003d new Scanner(this.f);","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":" while (this.s.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" list.add(read(this.s.nextLine()));","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" return list;","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"JiaXinEu"},"content":" * Converts String into corresponding instances of Task.","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"JiaXinEu"},"content":" * @param s Describes a Task.","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":" * @return Task instance created based on s.","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" private Task read(String s) {","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" String[] cols \u003d s.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":" if (cols.length \u003d\u003d 3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"JiaXinEu"},"content":" t \u003d new Todo(cols[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"JiaXinEu"},"content":" } else if (cols.length \u003d\u003d 4) {","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"JiaXinEu"},"content":" t \u003d new Deadline(cols[2], cols[3]);","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":" } else if (cols.length \u003d\u003d 5) {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":" t \u003d new Event(cols[2], cols[3], cols[4]);","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":" if (cols[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":" t.done();","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"JiaXinEu"},"content":" t.undo();","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"JiaXinEu"},"content":" return t;","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"}],"authorContributionMap":{"JiaXinEu":120}},{"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 java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" * Represents a list to hold all added tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" * Constructs a TaskList instance by providing the ArrayList.","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" * @param list Array to hold Tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" public TaskList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" this.list \u003d list;","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-31"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" * Constructs a TaskList instance by assigning a new ArrayList.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" this.list \u003d new ArrayList\u003cTask\u003e();","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" * Adds task to list.","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" * @param t Task to be added.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" public void add(Task t) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" this.list.add(t);","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" * Returns number of Tasks in list.","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" * @return Size of ArrayList.","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" public int getSize() {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" return this.list.size();","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" * Returns if list is empty.","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" * @return True if empty, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" return this.list.isEmpty();","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" * Removes Task at index num from list.","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" * @param num Index of Task to be deleted.","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" * @return Task that is removed from list.","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" public Task delete(int num) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" return this.list.remove(num);","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" * Returns header followed by index and the corresponding Tasks in list.","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" * If no item in list, returns a different message.","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" * @return String of all Tasks in list.","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" public String print() {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" if (this.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" return \"\\t No task in list.\";","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" StringBuilder sb \u003d new StringBuilder(\"\\t Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"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":80,"author":{"gitId":"JiaXinEu"},"content":" count++;","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" return sb.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" public void setList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":" this.list \u003d list;","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" * Returns Task at index specified.","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":" * @param index Index of Task to retrieve.","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":" * @return Task at index in list.","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"JiaXinEu"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"JiaXinEu"},"content":" return this.list.get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" return this.list;","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"JiaXinEu"},"content":" * Returns a String of found tasks to be displayed.","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"JiaXinEu"},"content":" * @return String of all tasks in list.","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":" public String printFound() {","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":" StringBuilder sb \u003d new StringBuilder(\"\\t Here are the matching tasks in your list:\\n\");","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":" sb.append(\"\\t\\t \" + count + \".\" + list.get(i).printTask() + (i \u003d\u003d list.size() - 1 ? \"\" : \"\\n\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"JiaXinEu"},"content":" count++;","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"JiaXinEu"},"content":" return sb.toString();","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":117}},{"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 java.io.InputStream;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" * Represents the mechanism of a user interface.","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" private static final String LINE \u003d \"\\t________________________________________________________________\";","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" private String logo;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" * Constructs a UI object.","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" * @param name","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" * @param logo","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" * @param inputStream","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" public Ui(String name, String logo, InputStream inputStream) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" this.logo \u003d logo;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" this.scanner \u003d new Scanner(inputStream);","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" * Displays welcome message.","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(logo);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Hello! I\u0027m \" + this.name + \".\");","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t What can I do for you?\\n\" + LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" * Reads command using Scanner.","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" * @return String read from InputStream.","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" System.out.println();","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" return scanner.nextLine();","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" * Displays line.","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" public void showLine() {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(LINE);","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" * Displays error message.","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" * @param errorMessage Details about the error to be displayed.","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t OOPS!!! \" + errorMessage);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" * Displays error message due to reading from file.","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t OOPS!!! Error loading tasks from file.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" * Displays notification on successful mark operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" * @param task Task that was marked as done.","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" public void showMarked(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t\\t \" + task.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":" * Displays notification on successful unmark operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":" * @param task Task that was marked as not done.","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" public void showUnmarked(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Ok, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t\\t \" + task.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"JiaXinEu"},"content":" * Displays notification on successful add operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":" * @param t Task that was added.","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds all tasks added.","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" public void showAdded(Task t, TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":" int size \u003d list.getSize();","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"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":104,"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":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-31"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":" * Displays all tasks in list.","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":" * Outputs message if list is empty.","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds all tasks added","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"JiaXinEu"},"content":" public void showTasks(TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"JiaXinEu"},"content":" if (list.getSize() \u003d\u003d 0) {","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t OOPS!!! No task in list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t You may add task with keywords: todo, deadline, event.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(list.print());","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"JiaXinEu"},"content":" * Displays notification on successful delete operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":125,"author":{"gitId":"JiaXinEu"},"content":" * @param t Task that was deleted.","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds all tasks remaining.","lastModifiedDate":"2024-01-31"},{"lineNumber":127,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"JiaXinEu"},"content":" public void showDeleted(Task t, TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Noted I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t\\t \" + t.printTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Now you have \" + list.getSize() + (list.getSize() \u003e 1 ? \" tasks\" : \" task\")","lastModifiedDate":"2024-02-05"},{"lineNumber":132,"author":{"gitId":"JiaXinEu"},"content":" + \" in the list.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":133,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":136,"author":{"gitId":"JiaXinEu"},"content":" * Displays exit message.","lastModifiedDate":"2024-01-31"},{"lineNumber":137,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":138,"author":{"gitId":"JiaXinEu"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":142,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":143,"author":{"gitId":"JiaXinEu"},"content":" * Displays all tasks in list.","lastModifiedDate":"2024-01-31"},{"lineNumber":144,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":145,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds all tasks that matches search.","lastModifiedDate":"2024-01-31"},{"lineNumber":146,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":147,"author":{"gitId":"JiaXinEu"},"content":" public void showMatchedTasks(TaskList list) {","lastModifiedDate":"2024-01-31"},{"lineNumber":148,"author":{"gitId":"JiaXinEu"},"content":" if (list.getSize() \u003d\u003d 0) {","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(\"\\t OOPS!!! No task matches you search.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":150,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":151,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(list.printFound());","lastModifiedDate":"2024-01-31"},{"lineNumber":152,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":153,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":154,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":154}},{"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 static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.StorageStub;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"public class DeadlineCommandTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" public void execute_deadlineFormat_deadline() {","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" DeadlineCommand dc \u003d new DeadlineCommand(\"deadline return book /by 20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"D | 0 | return book | 20-12-2020 10:01\", list.getTask(0).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" public void execute_deadlineWrongDateFormat_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" DeadlineCommand dc \u003d new DeadlineCommand(\"deadline return book /by 20/12/2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"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":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":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":41}},{"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 static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.StorageStub;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" public void execute_deleteFormat_deleted() {","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" DeleteCommand dc \u003d new DeleteCommand(\"delete 1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","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":" arr.add(dl);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(true, list.getList().isEmpty());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" }","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 execute_deleteNegativeIndex_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" DeleteCommand dc \u003d new DeleteCommand(\"delete -1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" arr.add(dl);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Task (-1) not found.\\n\" + \"\\t Here are the tasks in your list:\\n\\t\\t 1.\"","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" + dl.printTask(), e.getMessage());","lastModifiedDate":"2024-02-05"},{"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_deleteFromEmptyList_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" DeleteCommand dc \u003d new DeleteCommand(\"delete 1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Task (1) not found.\\n\\t No task in list.\", e.getMessage());","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"}],"authorContributionMap":{"JiaXinEu":65}},{"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 static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.StorageStub;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"public class MarkCommandTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" public void execute_mark_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" MarkCommand mc \u003d new MarkCommand(\"mark 2\", true);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read book\");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" arr.add(dl);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" mc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"D | 1 | return book | 20-12-2020 10:01\", list.getTask(1).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" fail();","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":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" public void execute_unmark_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" MarkCommand mc \u003d new MarkCommand(\"mark 2\", false);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" dl.done();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read book\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" arr.add(dl);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" mc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"D | 0 | return book | 20-12-2020 10:01\", list.getTask(1).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" fail();","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":"","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" public void execute_markNegative_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" MarkCommand mc \u003d new MarkCommand(\"mark -2\", true);","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read book\");","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" mc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Task (-2) not found.\\n\\t Here are the tasks in your list:\\n\\t\\t 1.\" + t.printTask(),","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":71}},{"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 static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"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 duke.command.DeadlineCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.EventCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.FindCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.TodoCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" public void matchPattern_matching_true() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(true, Parser.matchPattern(\"mark 1\", \"mark\\\\s\\\\d+\"));","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 matchPattern_nonMatching_false() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(false, Parser.matchPattern(\"mark 1 1\", \"mark\\\\s\\\\d+\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_list_inputTypeList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.LIST, Parser.getCommandType(\"list\"));","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":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_listWithSpace_inputTypeUnknown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.UNKNOWN, Parser.getCommandType(\"list \"));","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_eventWithSpace_inputTypeEvent() {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.EVENT, Parser.getCommandType(\"event \"));","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":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_bye_inputTypeUnknown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.BYE, Parser.getCommandType(\"bye\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_byee_inputTypeUnknown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.UNKNOWN, Parser.getCommandType(\"byee\"));","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":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_mark_markCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"Mark 1\";","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new MarkCommand(input, true), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" }","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":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_unmark_markCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"unmark 1\";","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new MarkCommand(input, false), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" fail();","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":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_delete_deleteCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"delete 1000\";","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new DeleteCommand(input), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_deleted_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"deleted 1000\";","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"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":92,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":" }","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":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_todo_todoCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"todo read book\";","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new TodoCommand(input), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":" }","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 parseCommand_todoNoDescription_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"todo \";","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"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":114,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"JiaXinEu"},"content":" }","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_deadline_deadlineCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":120,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"deadline return book /by 20-12-2023 17:10\";","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new DeadlineCommand(input), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_deadlineMissingDate_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":129,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"deadline return book /by \";","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"The description and due of a deadline cannot be empty.\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t Try \u0027deadline [task description] /by [dd-MM-yyyy HH:mm]\u0027.\", e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":136,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_deadlineMissingDescription_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":141,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"deadline /by 20-12-2023 17:10\";","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"The description and due of a deadline cannot be empty.\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":147,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t Try \u0027deadline [task description] /by [dd-MM-yyyy HH:mm]\u0027.\", e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":148,"author":{"gitId":"JiaXinEu"},"content":" }","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":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_event_eventCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":153,"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":154,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new EventCommand(input), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_eventMissingStart_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":163,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"event meeting /to 20-12-2023 17:10\";","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"The description, start and end time of an event cannot be empty.\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":169,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t Try \u0027event [task description] /from [dd-MM-yyyy HH:mm] /to [dd-MM-yyyy HH:mm]\u0027.\",","lastModifiedDate":"2024-02-05"},{"lineNumber":170,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":171,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_eventSwapStartEnd_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":176,"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":177,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"The description, start and end time of an event cannot be empty.\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":182,"author":{"gitId":"JiaXinEu"},"content":" + \"\\t Try \u0027event [task description] /from [dd-MM-yyyy HH:mm] /to [dd-MM-yyyy HH:mm]\u0027.\",","lastModifiedDate":"2024-02-05"},{"lineNumber":183,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":184,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":187,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":188,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_find_findCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":189,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"find meeting\";","lastModifiedDate":"2024-01-31"},{"lineNumber":190,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":191,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new FindCommand(input), Parser.parseCommand(input));","lastModifiedDate":"2024-01-31"},{"lineNumber":192,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":193,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-31"},{"lineNumber":194,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":195,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":196,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":197,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":198,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_findNoKeyword_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":199,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"find \";","lastModifiedDate":"2024-01-31"},{"lineNumber":200,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":201,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-31"},{"lineNumber":202,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-31"},{"lineNumber":203,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":204,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Specify a keyword to search.\\n\\t Try \u0027find [keyword]\u0027.\", e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":205,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":206,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":207,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":208,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":209,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_findTwoKeywords_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":210,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"find meeting two\";","lastModifiedDate":"2024-01-31"},{"lineNumber":211,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":212,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-31"},{"lineNumber":213,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-31"},{"lineNumber":214,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":215,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Specify a keyword to search.\\n\\t Try \u0027find [keyword]\u0027.\", e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":216,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":217,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":218,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":218}},{"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 java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" * Represents a stub class for Storage.","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"public class StorageStub extends Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" public StorageStub(String file, String parent) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" super(file, parent);","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":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" public void writeToFile(TaskList list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" return;","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":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" public ArrayList\u003cTask\u003e readFromFile() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":25}},{"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 static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-05"},{"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":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Event;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"public class TaskListTest {","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 add_todo_listWithTodo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(arr, list.getList());","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 add_todoAndEvent_listWithTasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"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":32,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" arr.add(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" list.add(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(arr, list.getList());","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":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" public void getSize_emptyConstructor_zero() {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(0, list.getSize());","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":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" public void getSize_newArrayList_zero() {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(0, list.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" public void delete_zeroIndexed_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(t, list.delete(0));","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" public void delete_oneIndexed_fail() {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" list.delete(1);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Index 1 out of bounds for length 1\", e.getMessage());","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":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" public void getTask_zeroIndexed_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(t, list.getTask(0));","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" public void getTask_oneIndexed_fail() {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" list.getTask(1);","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Index 1 out of bounds for length 1\", e.getMessage());","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":"","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":" public void print_todoInList_printHeadingAndTodo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"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":105,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":" public void print_emptyList_printHeading() {","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"\\t No task in list.\", list.print());","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":112}},{"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}}] +[{"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":"JiaXinEu"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-05"},{"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":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" mainClass.set(\"duke.Launcher\")","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":"checkstyle {","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"JiaXinEu":20,"-":43}},{"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":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" * Represents a ChatBot.","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"public class Duke {","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" private Ui ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" private boolean isExit \u003d false;","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" * Constructs a new Duke instance to run.","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" * Reads from file to set up chatbot.","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" * @param file Name of file to save data and read from.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" * @param fileParent Parent directory of file.","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" * @param name Name of chatbot.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" * @param logo Logo of chatbot.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" public Duke(String file, String fileParent, String name, String logo) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" ui \u003d new Ui(name, logo, System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" storage \u003d new Storage(file, fileParent);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" tasks \u003d new TaskList(storage.readFromFile());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" tasks \u003d new TaskList();","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":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" * Starts up the chatbot with welcome message and start taking in commands until bye command is inputted.","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" public void run() {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" Command c \u003d Parser.parseCommand(fullCommand);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" } finally {","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" ui.showLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" }","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"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" * Returns response corresponding to input.","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" * @param input User input.","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" * @return Message from chatbot.","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" public String getResponse(String input) {","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" Command c \u003d Parser.parseCommand(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" return c.execute(tasks, ui, storage);","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" return ui.showError(e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" * Returns true if current command is bye.","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" * @return Value of isExit.","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" return isExit;","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" public String getLogo() {","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":" return ui.showWelcome();","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" * Starts Duke chatbot on command line. Entry point of application.","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":" * @param args Not used.","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"JiaXinEu"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"JiaXinEu"},"content":" String logo \u003d \"\\t ____ __ _ _ __ ___ ___ ____ ___ ____\\n\\t\"","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"JiaXinEu"},"content":" + \" (_ _) /__\\\\( \\\\/ )/__\\\\ / __)/ __)(_ _)/ __)(_ _)\\n\\t\"","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"JiaXinEu"},"content":" + \" .-_)( /(__)\\\\\\\\ //(__)\\\\ \\\\__ \\\\\\\\__ \\\\ _)(_ \\\\__ \\\\ )(\\n\\t\"","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":" + \"\\\\____)(__)(__)\\\\/(__)(__)(___/(___/(____)(___/ (__)\\n\";","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" new Duke(\"Duke.txt\", \"./data\", \"JavAssist\", logo).run();","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":102}},{"path":"src/main/java/duke/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"public class Launcher {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(e.getCause());","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"JiaXinEu":17}},{"path":"src/main/java/duke/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.MainWindow;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" private String logo \u003d \" ____ __ _ _ __ ___ ___ ____ ___ ____\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" + \" (_ _) /__\\\\( \\\\/ )/__\\\\ / __)/ __)(_ _)/ __)(_ _)\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" + \" .-_)( /(__)\\\\\\\\ //(__)\\\\ \\\\__ \\\\\\\\__ \\\\ _)(_ \\\\__ \\\\ )(\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" + \"\\\\____)(__)(__)\\\\/(__)(__)(___/(___/(____)(___/ (__)\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" private Duke duke \u003d new Duke(\"Duke.txt\", \"./data\", \"JavAssist\", logo);","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/views/MainWindow.fxml\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" stage.setTitle(\"JavAssist\");","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" stage.show();","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().welcome();","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"JiaXinEu":40}},{"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":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" * Represents a basic Command.","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"public interface Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" public String execute(TaskList list, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":15}},{"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 java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" * Represents a command to add new deadline.","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"public class DeadlineCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" public DeadlineCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","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-31"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" * Creates a new Deadline based on description and date time extracted from input and adds to TaskList.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds the tasks added.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" * @param ui Displays messages about executed operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" * @param storage Handles IO storage operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" * @return String of response of chatbot.","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException If date time format is not valid.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" public String execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" String[] task \u003d input.split(\"/by\");","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d new Deadline(task[0].substring(9).trim(), task[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" return ui.showAdded(t, list);","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(e.getMessage());","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":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" DeadlineCommand dc \u003d (DeadlineCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" return this.input.equals(dc.input);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":54}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" * Represents a command to delete specified task.","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"public class DeleteCommand 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 DeleteCommand(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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" * Removes task in TaskList where index is indicated in input.","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds the existing tasks including task to be removed.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" * @param ui Displays messages about executed operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" * @param storage Handles IO storage operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" * @return String of response of chatbot.","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException If index is not n range.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" public String execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" String[] s \u003d input.split(\"\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" int num \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" if (num \u003c\u003d list.getSize() \u0026\u0026 num \u003e\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d list.delete(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" return ui.showDeleted(t, list);","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Task (\" + num + \") not found.\\n\" + list.print());","lastModifiedDate":"2024-01-30"},{"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":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" DeleteCommand dc \u003d (DeleteCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" return this.input.equals(dc.input);","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":51}},{"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 java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" * Represents a command to add new event.","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"public class EventCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" public EventCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" * Creates a new Event based on description, start and end date time extracted from input and adds to TaskList.","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds the tasks added.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" * @param ui Display messages about executed operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" * @param storage Handles IO storage operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" * @return String of response of chatbot.","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException If date time format is not valid.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" public String execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" String[] task \u003d input.split(\"/from\");","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" String[] time \u003d task[1].split(\"/to\");","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"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":38,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" return ui.showAdded(t, list);","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(e.getMessage());","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":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" EventCommand ec \u003d (EventCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" return this.input.equals(ec.input);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":57}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" * Represents a command to exit the program.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"public class ExitCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" * Displays exit message.","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds the tasks added.","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" * @param ui Display messages about executed operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" * @param storage Handles IO storage operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" * @return String of response of chatbot.","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException No thrown.","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" public String execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" return ui.showGoodbye();","lastModifiedDate":"2024-02-07"},{"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 true;","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/duke/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.command;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" * Represents a command to find keyword.","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"public class FindCommand implements Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" private String[] keywords;","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" public FindCommand(String... input) {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" this.keywords \u003d input;","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" * Searches through the list of tasks for matching keyword given in input.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds all tasks added.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" * @param ui Displays message of operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" * @param storage Handles IO operations.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" * @return String of response of chatbot.","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException No thrown.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" public String execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d findTasks(list, keywords);","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" return ui.showMatchedTasks(new TaskList(arr));","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" private ArrayList\u003cTask\u003e findTasks(TaskList list, String... keywords) {","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" for (String keyword : keywords) {","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" for (Task t : list.getList()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" if (t.getTask().contains(keyword)) {","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" if (!arr.contains(t)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" return arr;","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" FindCommand fc \u003d (FindCommand) a;","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" if (fc.keywords.length !\u003d this.keywords.length) {","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" for (int i \u003d 1; i \u003c fc.keywords.length; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" if (!this.keywords[i].equals(fc.keywords[i])) {","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" return true;","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"JiaXinEu":69}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" * Represents a command to list all tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"public class ListCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" * Displays all tasks in TaskList.","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds the tasks added.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" * @param ui Displays the tasks listed.","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" * @param storage Not used.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" * @return String of response of chatbot.","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException If no task in TaskList.","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" public String execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" if (list.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"No task in list.\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" + \"You may add task with keywords: todo, deadline, event.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" return ui.showTasks(list);","lastModifiedDate":"2024-02-07"},{"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-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":36}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" * Represents a command to mark specified task as done.","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"public class MarkCommand 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":" private boolean toMark;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" * Constructs a MarkCommand object.","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" * @param input User input.","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" * @param toMark Indicates mark command if true, unmark if false.","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" public MarkCommand(String input, boolean toMark) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" this.toMark \u003d toMark;","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-31"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" * Sets task in TaskList as done or not done depending on boolean value of toMark,","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" * where index is indicated in input.","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds the tasks added.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" * @param ui Displays messages about executed operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" * @param storage Handles IO storage operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" * @return String of response of chatbot.","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException If index given is not within range.","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" public String execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" String[] s \u003d input.split(\"\\\\s\");","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" int num \u003d Integer.parseInt(s[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" if (num \u003c\u003d list.getSize() \u0026\u0026 num \u003e\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d list.getTask(num - 1);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" if (this.toMark) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" t.done();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" return ui.showMarked(t);","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" t.undo();","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" return ui.showUnmarked(t);","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Task (\" + num + \") not found.\\n\" + list.print());","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":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" public boolean equals(Object a) {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" MarkCommand mc \u003d (MarkCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" return (this.toMark \u003d\u003d mc.toMark) \u0026\u0026 (this.input.equals(mc.input));","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":68}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" * Represents a command to add new Todo.","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"public class TodoCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" private String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" public TodoCommand(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" this.input \u003d input;","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" * Creates a new Todo based on description extracted from input and adds to TaskList.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds the tasks added.","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" * @param ui Display messages about executed operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" * @param storage Handles IO storage operation.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" * @return String of response of chatbot.","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException Not thrown.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" public String execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d new Todo(input.substring(5));","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" storage.writeToFile(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" return ui.showAdded(t, list);","lastModifiedDate":"2024-02-07"},{"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":" TodoCommand tc \u003d (TodoCommand) a;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" return this.input.equals(tc.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/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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" * Represents a command that does not match any valid command.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"public class UnknownCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" * Throws a DukeException to indicate invalid command and suggests possible working commands.","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" * @param list Not used.","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" * @param ui Not used.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" * @param storage Not used.","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" * @return String of response of chatbot.","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException Indicates invalid command.","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" public String execute(TaskList list, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Sorry I don\u0027t know what that means.\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" + \"Try keywords: todo, deadline, event, list, mark, unmark, delete, find.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":31}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" * Represents the exception that arises when running Duke.","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":10}},{"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":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" * Represents a deadline object.","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" private LocalDateTime date;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" * Constructs a Deadline object.","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" * @param task Description of task.","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" * @param date Deadline of task.","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" public Deadline(String task, String date) {","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" super(task);","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" this.date \u003d setDate(date);","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" * Assigns value of LocalDateTime from String.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" * @param s String specifying date and time in format \u0027dd-MM-yyyy HH:mm\"\u0027.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" * @return LocalDateTime from parsed String s.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" * @throws DateTimeParseException if s is in invalid format or specifies an invalid date time value.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" public LocalDateTime setDate(String s) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" LocalDateTime date \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" date \u003d LocalDateTime.parse(s, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" throw new DateTimeParseException(\"Invalid start/end date. Specify date in format \u0027dd-MM-yyyy HH:mm\u0027.\",","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" e.getParsedString(), e.getErrorIndex());","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" return date;","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" * @return String with type of task, description of deadline, and time to do by.","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" return \"[D]\" + super.printTask() + \" (by: \" + printDate() + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"D | %s | %s\", super.toString(),","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" this.date.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")));","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" * Returns date in format \u0027MMM dd yyyy, HH:mm\u0027.","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" * @return String of formatted localDateTime.","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" public String printDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" return this.date.format(formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":68}},{"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":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" * Represents an Event.","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" * Constructs an event object.","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" * @param task Description of task.","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" * @param start Start date of event.","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" * @param end End date of event.","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" public Event(String task, String start, String end) {","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" super(task);","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" this.start \u003d setDate(start);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" this.end \u003d setDate(end);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" * Assigns value of LocalDateTime from String.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" * @param s String specifying date and time in format \u0027dd-MM-yyyy HH:mm\"\u0027.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" * @return LocalDateTime from parsed String s.","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" * @throws DateTimeParseException if s is in invalid format or specifies an invalid date time value.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" public LocalDateTime setDate(String s) throws DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" LocalDateTime date \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" date \u003d LocalDateTime.parse(s, formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" throw new DateTimeParseException(\"Invalid start/end date. Specify date in format \u0027dd-MM-yyyy HH:mm\u0027.\",","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" e.getParsedString(), e.getErrorIndex());","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" return date;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" * @return String with type of task, description of event, start and end date time.","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" return \"[E]\" + super.printTask() + \" (from: \" + printDate(this.start) + \" to: \" + printDate(this.end) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"E | %s | %s | %s\", super.toString(),","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" this.start.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")),","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" this.end.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy HH:mm\")));","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" * Returns date in format \u0027MMM dd yyyy, HH:mm\u0027.","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" * @param date LocalDateTime to be formatted.","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" * @return String of formatted localDateTime.","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" public String printDate(LocalDateTime date) {","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" return date.format(formatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":73}},{"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":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" * Represents a general task.","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" private String task;","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" * Constructs a task object.","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" * @param task Description of task.","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" public Task(String task) {","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" this.isDone \u003d false;","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" * Returns the details of a Task.","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" * @return String with description of the Task for display.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"[\" + (this.isDone ? \"X\" : \" \") + \"] \" + 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"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" * Marks isDone as true.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" public void done() {","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" * Marks isDone as false.","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" public void undo() {","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"%d | %s\", (this.isDone ? 1 : 0), this.task);","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" public String getTask() {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" return this.task;","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":51}},{"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":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":" * Represents a todo.","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":" public Todo(String task) {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" super(task);","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" * {@inheritDoc}","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" * @return String with type of task and description of todo.","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" public String printTask() {","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" return \"[T]\" + super.printTask();","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" return String.format(\"T | %s\", super.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"JiaXinEu":25}},{"path":"src/main/java/duke/util/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.util;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"import javafx.scene.paint.ImagePattern;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"import javafx.scene.paint.Paint;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"import javafx.scene.shape.Circle;","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"import javafx.scene.text.Font;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"import javafx.scene.text.Text;","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":"import javafx.scene.text.TextFlow;","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" * Represents a dialog box.","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" private TextFlow txt;","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" private Circle displayPicture;","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/views/DialogBox.fxml\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" Text t \u003d new Text(text);","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" t.setFont(Font.font(\"Maiandra GD\", 14));","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" t.setFill(Paint.valueOf(\"#321f43\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" txt.getChildren().add(t);","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" displayPicture.setFill(new ImagePattern(img));","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" private void flip() {","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" db.flip();","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" return db;","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"JiaXinEu":63}},{"path":"src/main/java/duke/util/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"package duke.util;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"import duke.Duke;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" * Represents the main window of the chatbot.","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" private Duke duke;","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/user.jpg\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/duke.jpg\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" * Initializes the scene.","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" public void initialize() {","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" userInput.requestFocus();","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" duke \u003d d;","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" );","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" userInput.clear();","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" if (duke.isExit()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" Stage stage \u003d (Stage) dialogContainer.getScene().getWindow();","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" stage.close();","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" * Displays welcome message.","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" public void welcome() {","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" String response \u003d duke.getLogo();","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" );","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" userInput.clear();","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"JiaXinEu":70}},{"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 java.util.regex.Pattern;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.Command;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.DeadlineCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.EventCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.ExitCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.FindCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.ListCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.TodoCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.UnknownCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" * Represents a parser to process and parse command.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" * Sets the possible types of input.","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" public enum InputType {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" LIST,","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" MARK,","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" UNMARK,","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" DELETE,","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" BYE,","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" TODO,","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" DEADLINE,","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" EVENT,","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" FIND,","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" 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-31"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" * Returns the type of command by checking the keyword used at start of input.","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" * @param input Command input by user.","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" * @return Corresponding enum value of command.","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" public static InputType getCommandType(String input) {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" return InputType.LIST;","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" return InputType.MARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" return InputType.UNMARK;","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" return InputType.DELETE;","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" return InputType.BYE;","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" return InputType.TODO;","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" return InputType.DEADLINE;","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" return InputType.EVENT;","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" } else if (input.startsWith(\"find\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" return InputType.FIND;","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" return InputType.UNKNOWN;","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":"","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" * Checks if input matches the regex pattern.","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" * @param input Command entered by user.","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" * @param pattern Regex pattern of a valid command format.","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" * @return True if matches, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" public static boolean matchPattern(String input, String pattern) {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" Pattern regexPattern \u003d Pattern.compile(pattern);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" return regexPattern.matcher(input).matches();","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-31"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" * Returns the corresponding Command for command given by user.","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" * @param input Command entered by user.","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":" * @return Subclass of Command based on keyword and format of command.","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException If command is not in the correct format.","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":" public static Command parseCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":" InputType commandType \u003d getCommandType(lowerInput);","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" case LIST:","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":" case MARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"JiaXinEu"},"content":" return parseMarkCommand(input, true);","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 UNMARK:","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" return parseMarkCommand(input, false);","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"JiaXinEu"},"content":" case DELETE:","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"JiaXinEu"},"content":" return parseDeleteCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":" case TODO:","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"JiaXinEu"},"content":" return parseTodoCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"JiaXinEu"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"JiaXinEu"},"content":" return parseDeadlineCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"JiaXinEu"},"content":" case EVENT:","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"JiaXinEu"},"content":" return parseEventCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"JiaXinEu"},"content":" case FIND:","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"JiaXinEu"},"content":" return parseFindCommand(input);","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"JiaXinEu"},"content":" throw e;","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"JiaXinEu"},"content":" case BYE:","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"JiaXinEu"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"JiaXinEu"},"content":" case UNKNOWN:","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"JiaXinEu"},"content":" return new UnknownCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"JiaXinEu"},"content":" default:","lastModifiedDate":"2024-02-05"},{"lineNumber":140,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"JiaXinEu"},"content":" return null;","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseMarkCommand(String input, boolean toMark) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"JiaXinEu"},"content":" if (matchPattern(lowerInput, \"mark\\\\s\\\\d+|unmark\\\\s\\\\d+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"JiaXinEu"},"content":" return new MarkCommand(input, toMark);","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"JiaXinEu"},"content":" if (toMark) {","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Your mark instruction is unclear.\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":151,"author":{"gitId":"JiaXinEu"},"content":" + \"Try \u0027mark [task number to mark as done]\u0027.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":152,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Your unmark instruction is unclear.\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":154,"author":{"gitId":"JiaXinEu"},"content":" + \"Try \u0027unmark [task number to mark as not done]\u0027.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":155,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseDeleteCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"delete\\\\s\\\\d+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":162,"author":{"gitId":"JiaXinEu"},"content":" return new DeleteCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Your delete instruction is unclear.\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":165,"author":{"gitId":"JiaXinEu"},"content":" + \"Try \u0027delete [task number to be deleted]\u0027.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":166,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseTodoCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":171,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"todo\\\\s.+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"JiaXinEu"},"content":" return new TodoCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"The description of a todo cannot be empty.\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":175,"author":{"gitId":"JiaXinEu"},"content":" + \"Try \u0027todo [task description]\u0027.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":176,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":177,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":178,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":179,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseDeadlineCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":181,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"deadline\\\\s.+\\\\s/by\\\\s.+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"JiaXinEu"},"content":" return new DeadlineCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"The description and due of a deadline cannot be empty.\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":185,"author":{"gitId":"JiaXinEu"},"content":" + \"Try \u0027deadline [task description] /by [dd-MM-yyyy HH:mm]\u0027.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":186,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":189,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseEventCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":190,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":191,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"event\\\\s.+\\\\s/from\\\\s.+\\\\s/to\\\\s.+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":192,"author":{"gitId":"JiaXinEu"},"content":" return new EventCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":193,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":194,"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":195,"author":{"gitId":"JiaXinEu"},"content":" + \"Try \u0027event [task description] /from [dd-MM-yyyy HH:mm] /to [dd-MM-yyyy HH:mm]\u0027.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":196,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":197,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":198,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":199,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":200,"author":{"gitId":"JiaXinEu"},"content":" * Returns FindCommand if input is valid.","lastModifiedDate":"2024-01-31"},{"lineNumber":201,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":202,"author":{"gitId":"JiaXinEu"},"content":" * @param input Command entered by user.","lastModifiedDate":"2024-01-31"},{"lineNumber":203,"author":{"gitId":"JiaXinEu"},"content":" * @return FindCommand with input given.","lastModifiedDate":"2024-01-31"},{"lineNumber":204,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException If input is in invalid format.","lastModifiedDate":"2024-01-31"},{"lineNumber":205,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":206,"author":{"gitId":"JiaXinEu"},"content":" private static Command parseFindCommand(String input) throws DukeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":207,"author":{"gitId":"JiaXinEu"},"content":" String lowerInput \u003d input.trim().toLowerCase();","lastModifiedDate":"2024-01-31"},{"lineNumber":208,"author":{"gitId":"JiaXinEu"},"content":" if (Parser.matchPattern(lowerInput, \"find\\\\s.+\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":209,"author":{"gitId":"JiaXinEu"},"content":" String[] keywords \u003d input.substring(4).trim().split(\"\\\\s\");","lastModifiedDate":"2024-02-07"},{"lineNumber":210,"author":{"gitId":"JiaXinEu"},"content":" return new FindCommand(keywords);","lastModifiedDate":"2024-02-07"},{"lineNumber":211,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":212,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(\"Specify 1 or more keyword/s to search.\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":213,"author":{"gitId":"JiaXinEu"},"content":" + \"Try \u0027find [keywords]\u0027.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":214,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":215,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":216,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":217,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":217}},{"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 java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Event;","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" * Represents a storage mechanism.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" private File f;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" private FileWriter fw;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" private Scanner s;","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" * Constructor to create an instance that perform IO operations on file in parent.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" * @param file Name of file to write to.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" * @param parent Parent directory of the file.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" public Storage(String file, String parent) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" this.f \u003d new File(parent + \"/\" + file);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" File parentDir \u003d new File(parent);","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" if (!parentDir.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" parentDir.mkdirs();","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":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" * Writes String of tasks to file.","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" * @param list List of tasks to be written.","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" public void writeToFile(TaskList list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" this.fw \u003d new FileWriter(f);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" String data \u003d write(list);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" this.fw.write(data);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" this.fw.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" }","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" * Returns list of Tasks in readable format.","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" * @param taskList Holds the list of tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" * @return Structured String of all Tasks in taskList.","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" private String write(TaskList taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e list \u003d taskList.getList();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" sb.append(list.get(i).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" if (i \u003c list.size() - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" sb.append(\"\\n\");","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":" return sb.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" * Returns ArrayList of tasks read from file.","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" * @return ArrayList of Task.","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" * @throws DukeException If file not found due to no existing data saved.","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" public ArrayList\u003cTask\u003e readFromFile() throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" if (f.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":" this.s \u003d new Scanner(this.f);","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":" while (this.s.hasNext()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" list.add(read(this.s.nextLine()));","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":" throw new DukeException(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" return list;","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"JiaXinEu"},"content":" * Converts String into corresponding instances of Task.","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"JiaXinEu"},"content":" * @param s Describes a Task.","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":" * @return Task instance created based on s.","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" private Task read(String s) {","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" String[] cols \u003d s.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":" Task t \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":" if (cols.length \u003d\u003d 3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"JiaXinEu"},"content":" t \u003d new Todo(cols[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"JiaXinEu"},"content":" } else if (cols.length \u003d\u003d 4) {","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"JiaXinEu"},"content":" t \u003d new Deadline(cols[2], cols[3]);","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":" } else if (cols.length \u003d\u003d 5) {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":" t \u003d new Event(cols[2], cols[3], cols[4]);","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":" if (cols[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":" t.done();","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"JiaXinEu"},"content":" t.undo();","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"JiaXinEu"},"content":" return t;","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"}],"authorContributionMap":{"JiaXinEu":120}},{"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 java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":" * Represents a list to hold all added tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" * Constructs a TaskList instance by providing the ArrayList.","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" * @param list Array to hold Tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" public TaskList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" this.list \u003d list;","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-31"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" * Constructs a TaskList instance by assigning a new ArrayList.","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" public TaskList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" this.list \u003d new ArrayList\u003cTask\u003e();","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" * Adds task to list.","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" * @param t Task to be added.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" public void add(Task t) {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" this.list.add(t);","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" * Returns number of Tasks in list.","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" * @return Size of ArrayList.","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" public int getSize() {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" return this.list.size();","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" * Returns if list is empty.","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" * @return True if empty, false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" return this.list.isEmpty();","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" * Removes Task at index num from list.","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" * @param num Index of Task to be deleted.","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" * @return Task that is removed from list.","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" public Task delete(int num) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" return this.list.remove(num);","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" * Returns header followed by index and the corresponding Tasks in list.","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" * If no item in list, returns a different message.","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" * @return String of all Tasks in list.","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" public String print() {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" if (this.isEmpty()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" return \"No task in list.\";","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" StringBuilder sb \u003d new StringBuilder(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" sb.append(count + \".\" + list.get(i).printTask() + (i \u003d\u003d list.size() - 1 ? \"\" : \"\\n\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" count++;","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" return sb.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" public void setList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":" this.list \u003d list;","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" * Returns Task at index specified.","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":" * @param index Index of Task to retrieve.","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":" * @return Task at index in list.","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"JiaXinEu"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"JiaXinEu"},"content":" return this.list.get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" return this.list;","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"JiaXinEu"},"content":" * Returns a String of found tasks to be displayed.","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"JiaXinEu"},"content":" * @return String of all tasks in list.","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":" public String printFound() {","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":" int count \u003d 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":" StringBuilder sb \u003d new StringBuilder(\"Here are the matching tasks in your list:\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":" sb.append(count + \".\" + list.get(i).printTask() + (i \u003d\u003d list.size() - 1 ? \"\" : \"\\n\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":113,"author":{"gitId":"JiaXinEu"},"content":" count++;","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"JiaXinEu"},"content":" return sb.toString();","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":117}},{"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 java.io.InputStream;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" * Represents the mechanism of a user interface.","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" private static final String LINE \u003d \"\\t________________________________________________________________\";","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" private String name;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" private String logo;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" * Constructs a UI object.","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" * @param name","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" * @param logo","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" * @param inputStream","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" public Ui(String name, String logo, InputStream inputStream) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" this.logo \u003d logo;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" this.scanner \u003d new Scanner(inputStream);","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" * Returns welcome message.","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" * @return Welcome message.","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" public String showWelcome() {","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" return \"Hello! I\u0027m \" + this.name + \".\" + \"\\nWhat can I do for you?\";","lastModifiedDate":"2024-02-07"},{"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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" * Reads command using Scanner.","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" * @return String read from InputStream.","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" System.out.println();","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" return scanner.nextLine();","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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" * Displays line.","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" public void showLine() {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" * Returns error message.","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" * @param errorMessage Details about the error to be displayed.","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" * @return Error message.","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" public String showError(String errorMessage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" return \"OOPS!!! \" + errorMessage;","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" * Returns error message due to reading from file.","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" * @return Error message.","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"JiaXinEu"},"content":" public String showLoadingError() {","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"JiaXinEu"},"content":" return \"OOPS!!! Error loading tasks from file.\";","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" * Returns notification on successful mark operation.","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" * @param task Task that was marked as done.","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" * @return Success message.","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":" public String showMarked(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":" return \"Nice! I\u0027ve marked this task as done:\" + \"\\n\\t\" + task.printTask();","lastModifiedDate":"2024-02-07"},{"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-31"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":" * Returns notification on successful unmark operation.","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" * @param task Task that was marked as not done.","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" * @return Success message.","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":" public String showUnmarked(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"JiaXinEu"},"content":" return \"Ok, I\u0027ve marked this task as not done yet:\" + \"\\n\\t\" + task.printTask();","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":" * Returns notification on successful add operation.","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" * @param t Task that was added.","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds all tasks added.","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":" * @return Success message.","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"JiaXinEu"},"content":" public String showAdded(Task t, TaskList list) {","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"JiaXinEu"},"content":" int size \u003d list.getSize();","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"JiaXinEu"},"content":" return \"Got it! I\u0027ve added this task:\\n\\t\" + t.printTask()","lastModifiedDate":"2024-02-07"},{"lineNumber":107,"author":{"gitId":"JiaXinEu"},"content":" + \"\\nNow you have \" + size + (size \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\";","lastModifiedDate":"2024-02-07"},{"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-31"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":" * Returns all tasks in list.","lastModifiedDate":"2024-02-07"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":" * Outputs message if list is empty.","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds all tasks added","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"JiaXinEu"},"content":" * @return String of tasks.","lastModifiedDate":"2024-02-07"},{"lineNumber":116,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"JiaXinEu"},"content":" public String showTasks(TaskList list) {","lastModifiedDate":"2024-02-07"},{"lineNumber":118,"author":{"gitId":"JiaXinEu"},"content":" if (list.getSize() \u003d\u003d 0) {","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"JiaXinEu"},"content":" return \"OOPS!!! No task in list.\" + \"\\nYou may add task with keywords: todo, deadline, event.\";","lastModifiedDate":"2024-02-07"},{"lineNumber":120,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"JiaXinEu"},"content":" return list.print();","lastModifiedDate":"2024-02-07"},{"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":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"JiaXinEu"},"content":" * Returns notification on successful delete operation.","lastModifiedDate":"2024-02-07"},{"lineNumber":127,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"JiaXinEu"},"content":" * @param t Task that was deleted.","lastModifiedDate":"2024-01-31"},{"lineNumber":129,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds all tasks remaining.","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"JiaXinEu"},"content":" * @return Success message.","lastModifiedDate":"2024-02-07"},{"lineNumber":131,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"JiaXinEu"},"content":" public String showDeleted(Task t, TaskList list) {","lastModifiedDate":"2024-02-07"},{"lineNumber":133,"author":{"gitId":"JiaXinEu"},"content":" return \"Noted I\u0027ve removed this task:\" + \"\\n\\t\" + t.printTask()","lastModifiedDate":"2024-02-07"},{"lineNumber":134,"author":{"gitId":"JiaXinEu"},"content":" + \"\\nNow you have \" + list.getSize() + (list.getSize() \u003e 1 ? \" tasks\" : \" task\") + \" in the list.\";","lastModifiedDate":"2024-02-07"},{"lineNumber":135,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":138,"author":{"gitId":"JiaXinEu"},"content":" * Returns exit message.","lastModifiedDate":"2024-02-07"},{"lineNumber":139,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":140,"author":{"gitId":"JiaXinEu"},"content":" * @return Exit message.","lastModifiedDate":"2024-02-07"},{"lineNumber":141,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":142,"author":{"gitId":"JiaXinEu"},"content":" public String showGoodbye() {","lastModifiedDate":"2024-02-07"},{"lineNumber":143,"author":{"gitId":"JiaXinEu"},"content":" return \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-02-07"},{"lineNumber":144,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":146,"author":{"gitId":"JiaXinEu"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":147,"author":{"gitId":"JiaXinEu"},"content":" * Returns all tasks in list.","lastModifiedDate":"2024-02-07"},{"lineNumber":148,"author":{"gitId":"JiaXinEu"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"JiaXinEu"},"content":" * @param list Holds all tasks that matches search.","lastModifiedDate":"2024-01-31"},{"lineNumber":150,"author":{"gitId":"JiaXinEu"},"content":" * @return String of tasks.","lastModifiedDate":"2024-02-07"},{"lineNumber":151,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":152,"author":{"gitId":"JiaXinEu"},"content":" public String showMatchedTasks(TaskList list) {","lastModifiedDate":"2024-02-07"},{"lineNumber":153,"author":{"gitId":"JiaXinEu"},"content":" if (list.getSize() \u003d\u003d 0) {","lastModifiedDate":"2024-01-31"},{"lineNumber":154,"author":{"gitId":"JiaXinEu"},"content":" return \"OOPS!!! No task matches you search.\";","lastModifiedDate":"2024-02-07"},{"lineNumber":155,"author":{"gitId":"JiaXinEu"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":156,"author":{"gitId":"JiaXinEu"},"content":" return list.printFound();","lastModifiedDate":"2024-02-07"},{"lineNumber":157,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":158,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":159,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"JiaXinEu":159}},{"path":"src/main/resources/views/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"\u003c?import javafx.scene.effect.DropShadow?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"\u003c?import javafx.scene.paint.Color?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"\u003c?import javafx.scene.shape.Circle?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"\u003c?import javafx.scene.text.TextFlow?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"Infinity\" maxWidth\u003d\"Infinity\" style\u003d\"-fx-border-color: #F5F3F8; -fx-border-width: 1; -fx-border-radius: 3; -fx-background-color: #E5D3EA;\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" \u003cTextFlow fx:id\u003d\"txt\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"350.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" \u003cCircle fx:id\u003d\"displayPicture\" fill\u003d\"WHITE\" radius\u003d\"45.0\" stroke\u003d\"WHITE\" strokeType\u003d\"INSIDE\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" \u003ceffect\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" \u003cDropShadow blurType\u003d\"TWO_PASS_BOX\" height\u003d\"10.0\" radius\u003d\"4.5\" width\u003d\"10.0\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" \u003ccolor\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" \u003cColor red\u003d\"0.7685185074806213\" green\u003d\"0.9266975522041321\" blue\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" \u003c/color\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" \u003c/DropShadow\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" \u003c/effect\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" \u003cInsets left\u003d\"5.0\" right\u003d\"10.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" \u003c/Circle\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"10.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"JiaXinEu":29}},{"path":"src/main/resources/views/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"JiaXinEu"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"JiaXinEu"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"\u003c?import javafx.scene.Cursor?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"\u003cAnchorPane prefHeight\u003d\"600.0\" prefWidth\u003d\"500.0\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.util.MainWindow\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":" \u003cButton fx:id\u003d\"sendButton\" mnemonicParsing\u003d\"false\" onMouseClicked\u003d\"#handleUserInput\" style\u003d\"-fx-background-color: #FBDCE7; -fx-border-color: #302931; -fx-border-radius: 5;\" text\u003d\"Send\" textAlignment\u003d\"CENTER\" AnchorPane.bottomAnchor\u003d\"0.0\" AnchorPane.leftAnchor\u003d\"430.0\" AnchorPane.rightAnchor\u003d\"0.0\" AnchorPane.topAnchor\u003d\"565.0\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":" \u003cfont\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":" \u003cFont name\u003d\"Yu Gothic Bold\" size\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" \u003c/font\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" \u003ccursor\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" \u003cCursor fx:constant\u003d\"HAND\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" \u003c/cursor\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" \u003c/Button\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutX\u003d\"64.0\" layoutY\u003d\"565.0\" onAction\u003d\"#handleUserInput\" promptText\u003d\"Enter message\" style\u003d\"-fx-border-color: #EEEEEE;\" AnchorPane.bottomAnchor\u003d\"0.0\" AnchorPane.leftAnchor\u003d\"0.0\" AnchorPane.rightAnchor\u003d\"70.0\" AnchorPane.topAnchor\u003d\"565.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" layoutX\u003d\"107.0\" layoutY\u003d\"100.0\" style\u003d\"-fx-background-color: #D7E9F9;\" AnchorPane.bottomAnchor\u003d\"35.0\" AnchorPane.leftAnchor\u003d\"0.0\" AnchorPane.rightAnchor\u003d\"0.0\" AnchorPane.topAnchor\u003d\"0.0\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" minWidth\u003d\"490.0\" prefHeight\u003d\"555.0\" spacing\u003d\"3.0\" style\u003d\"-fx-background-color: #D0E7F9;\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" \u003cInsets bottom\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" \u003cInsets left\u003d\"1.0\" right\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" \u003c/padding\u003e\u003c/VBox\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"JiaXinEu":35}},{"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 static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.StorageStub;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"public class DeadlineCommandTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" public void execute_deadlineFormat_deadline() {","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" DeadlineCommand dc \u003d new DeadlineCommand(\"deadline return book /by 20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"D | 0 | return book | 20-12-2020 10:01\", list.getTask(0).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" public void execute_deadlineWrongDateFormat_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" DeadlineCommand dc \u003d new DeadlineCommand(\"deadline return book /by 20/12/2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"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":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":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":41}},{"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 static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.StorageStub;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" public void execute_deleteFormat_deleted() {","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" DeleteCommand dc \u003d new DeleteCommand(\"delete 1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","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":" arr.add(dl);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(true, list.getList().isEmpty());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" }","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 execute_deleteNegativeIndex_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" DeleteCommand dc \u003d new DeleteCommand(\"delete -1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" arr.add(dl);","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Task (-1) not found.\\n\" + \"Here are the tasks in your list:\\n1.\"","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" + dl.printTask(), e.getMessage());","lastModifiedDate":"2024-02-05"},{"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_deleteFromEmptyList_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" DeleteCommand dc \u003d new DeleteCommand(\"delete 1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" dc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Task (1) not found.\\nNo task in list.\", e.getMessage());","lastModifiedDate":"2024-02-07"},{"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"}],"authorContributionMap":{"JiaXinEu":65}},{"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 static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.StorageStub;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.TaskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"import duke.util.Ui;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":"public class MarkCommandTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" public void execute_mark_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" MarkCommand mc \u003d new MarkCommand(\"mark 2\", true);","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read book\");","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" arr.add(dl);","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" mc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"D | 1 | return book | 20-12-2020 10:01\", list.getTask(1).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" fail();","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":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" public void execute_unmark_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" MarkCommand mc \u003d new MarkCommand(\"mark 2\", false);","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" Deadline dl \u003d new Deadline(\"return book\", \"20-12-2020 10:01\");","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"JiaXinEu"},"content":" dl.done();","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read book\");","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" arr.add(dl);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" mc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"D | 0 | return book | 20-12-2020 10:01\", list.getTask(1).toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" fail();","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":"","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" public void execute_markNegative_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" MarkCommand mc \u003d new MarkCommand(\"mark -2\", true);","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read book\");","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" mc.execute(list, new Ui(\"JavAssist\", \"\", System.in), new StorageStub(\"\", \"\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Task (-2) not found.\\nHere are the tasks in your list:\\n1.\" + t.printTask(),","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":71}},{"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 static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"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 duke.command.DeadlineCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.EventCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.FindCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"import duke.command.TodoCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" public void matchPattern_matching_true() {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(true, Parser.matchPattern(\"mark 1\", \"mark\\\\s\\\\d+\"));","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 matchPattern_nonMatching_false() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(false, Parser.matchPattern(\"mark 1 1\", \"mark\\\\s\\\\d+\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_list_inputTypeList() {","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.LIST, Parser.getCommandType(\"list\"));","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":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_listWithSpace_inputTypeUnknown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.UNKNOWN, Parser.getCommandType(\"list \"));","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_eventWithSpace_inputTypeEvent() {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.EVENT, Parser.getCommandType(\"event \"));","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":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_bye_inputTypeUnknown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.BYE, Parser.getCommandType(\"bye\"));","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":" public void getCommandType_byee_inputTypeUnknown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(Parser.InputType.UNKNOWN, Parser.getCommandType(\"byee\"));","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":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_mark_markCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"Mark 1\";","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new MarkCommand(input, true), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" }","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":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_unmark_markCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"unmark 1\";","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new MarkCommand(input, false), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" fail();","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":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_delete_deleteCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"delete 1000\";","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new DeleteCommand(input), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_deleted_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"deleted 1000\";","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Your delete instruction is unclear.\\nTry \u0027delete [task number to be deleted]\u0027.\",","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":" }","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":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_todo_todoCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"todo read book\";","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new TodoCommand(input), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":" }","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 parseCommand_todoNoDescription_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"todo \";","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"The description of a todo cannot be empty.\\nTry \u0027todo [task description]\u0027.\",","lastModifiedDate":"2024-02-07"},{"lineNumber":114,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"JiaXinEu"},"content":" }","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_deadline_deadlineCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":120,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"deadline return book /by 20-12-2023 17:10\";","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new DeadlineCommand(input), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_deadlineMissingDate_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":129,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"deadline return book /by \";","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":131,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":132,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"The description and due of a deadline cannot be empty.\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"JiaXinEu"},"content":" + \"Try \u0027deadline [task description] /by [dd-MM-yyyy HH:mm]\u0027.\", e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":136,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":137,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_deadlineMissingDescription_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":141,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"deadline /by 20-12-2023 17:10\";","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"The description and due of a deadline cannot be empty.\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":147,"author":{"gitId":"JiaXinEu"},"content":" + \"Try \u0027deadline [task description] /by [dd-MM-yyyy HH:mm]\u0027.\", e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":148,"author":{"gitId":"JiaXinEu"},"content":" }","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":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":152,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_event_eventCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":153,"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":154,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new EventCommand(input), Parser.parseCommand(input));","lastModifiedDate":"2024-01-30"},{"lineNumber":156,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_eventMissingStart_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":163,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"event meeting /to 20-12-2023 17:10\";","lastModifiedDate":"2024-01-30"},{"lineNumber":164,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":165,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":166,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":167,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":168,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"The description, start and end time of an event cannot be empty.\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":169,"author":{"gitId":"JiaXinEu"},"content":" + \"Try \u0027event [task description] /from [dd-MM-yyyy HH:mm] /to [dd-MM-yyyy HH:mm]\u0027.\",","lastModifiedDate":"2024-02-07"},{"lineNumber":170,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":171,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":173,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":174,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_eventSwapStartEnd_dukeException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":176,"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":177,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-30"},{"lineNumber":179,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"The description, start and end time of an event cannot be empty.\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":182,"author":{"gitId":"JiaXinEu"},"content":" + \"Try \u0027event [task description] /from [dd-MM-yyyy HH:mm] /to [dd-MM-yyyy HH:mm]\u0027.\",","lastModifiedDate":"2024-02-07"},{"lineNumber":183,"author":{"gitId":"JiaXinEu"},"content":" e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":184,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":186,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":187,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":188,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_find_findCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":189,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"find meeting\";","lastModifiedDate":"2024-01-31"},{"lineNumber":190,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":191,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new FindCommand(input), Parser.parseCommand(input));","lastModifiedDate":"2024-01-31"},{"lineNumber":192,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":193,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-31"},{"lineNumber":194,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":195,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":196,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":197,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":198,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_findMultipleKeywords_findCommand() {","lastModifiedDate":"2024-02-07"},{"lineNumber":199,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"find meeting read do\";","lastModifiedDate":"2024-02-07"},{"lineNumber":200,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":201,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(new FindCommand(\"meeting\", \"read\", \"do\"), Parser.parseCommand(input));","lastModifiedDate":"2024-02-07"},{"lineNumber":202,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":203,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-02-07"},{"lineNumber":204,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":205,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":206,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":207,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":208,"author":{"gitId":"JiaXinEu"},"content":" public void parseCommand_findNoKeyword_dukeException() {","lastModifiedDate":"2024-02-07"},{"lineNumber":209,"author":{"gitId":"JiaXinEu"},"content":" String input \u003d \"find \";","lastModifiedDate":"2024-02-07"},{"lineNumber":210,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":211,"author":{"gitId":"JiaXinEu"},"content":" Parser.parseCommand(input);","lastModifiedDate":"2024-01-31"},{"lineNumber":212,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-31"},{"lineNumber":213,"author":{"gitId":"JiaXinEu"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":214,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Specify 1 or more keyword/s to search.\\nTry \u0027find [keywords]\u0027.\", e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":215,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":216,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":217,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":217}},{"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 java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"JiaXinEu"},"content":"import duke.exception.DukeException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"JiaXinEu"},"content":"/**","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":" * Represents a stub class for Storage.","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"public class StorageStub extends Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":" public StorageStub(String file, String parent) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":" super(file, parent);","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":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"JiaXinEu"},"content":" public void writeToFile(TaskList list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" return;","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":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" public ArrayList\u003cTask\u003e readFromFile() throws DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" return null;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":25}},{"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 static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"JiaXinEu"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-05"},{"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":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Event;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"JiaXinEu"},"content":"import duke.task.Todo;","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"JiaXinEu"},"content":"public class TaskListTest {","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 add_todo_listWithTodo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(arr, list.getList());","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 add_todoAndEvent_listWithTasks() {","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"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":32,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"JiaXinEu"},"content":" arr.add(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"JiaXinEu"},"content":" list.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"JiaXinEu"},"content":" list.add(e);","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(arr, list.getList());","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":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"JiaXinEu"},"content":" public void getSize_emptyConstructor_zero() {","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(0, list.getSize());","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":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"JiaXinEu"},"content":" public void getSize_newArrayList_zero() {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(0, list.getSize());","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"JiaXinEu"},"content":" public void delete_zeroIndexed_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(t, list.delete(0));","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"JiaXinEu"},"content":" public void delete_oneIndexed_fail() {","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"JiaXinEu"},"content":" list.delete(1);","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"JiaXinEu"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Index 1 out of bounds for length 1\", e.getMessage());","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":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"JiaXinEu"},"content":" public void getTask_zeroIndexed_success() {","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(t, list.getTask(0));","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"JiaXinEu"},"content":" public void getTask_oneIndexed_fail() {","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"JiaXinEu"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"JiaXinEu"},"content":" list.getTask(1);","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"JiaXinEu"},"content":" fail();","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"JiaXinEu"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Index 1 out of bounds for length 1\", e.getMessage());","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":"","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"JiaXinEu"},"content":" public void print_todoInList_printHeadingAndTodo() {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"JiaXinEu"},"content":" ArrayList\u003cTask\u003e arr \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"JiaXinEu"},"content":" Todo t \u003d new Todo(\"read\");","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"JiaXinEu"},"content":" arr.add(t);","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList(arr);","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"Here are the tasks in your list:\\n1.\" + t.printTask(), list.print());","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"JiaXinEu"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"JiaXinEu"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"JiaXinEu"},"content":" public void print_emptyList_printHeading() {","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"JiaXinEu"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"JiaXinEu"},"content":" assertEquals(\"No task in list.\", list.print());","lastModifiedDate":"2024-02-07"},{"lineNumber":111,"author":{"gitId":"JiaXinEu"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"JiaXinEu"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"JiaXinEu":112}},{"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 3dda9515..8204ba9b 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}}}]},{"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":{}}]},{"date":"2024-01-31","commitResults":[{"hash":"5ac66f23cb357b51b4cf5edcf9bb845789846e7e","isMergeCommit":false,"messageTitle":"Add JavaDoc comments to classes and methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":317,"deletions":0}}},{"hash":"6a1e0fa4a1ee11da1745c11ca2d374182427a7a5","isMergeCommit":false,"messageTitle":"Modify code to follow coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":15}}},{"hash":"808601992d162d77f8a6c9e03a6a334f30b2ec7c","isMergeCommit":false,"messageTitle":"Add search task by keyword feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":146,"deletions":9}}},{"hash":"768942ee43c5f87815da2cc2e8e4e7e11f0debd0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"9e3a924e3d2ef173f24397a60eaaa7b5df2b5ded","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"b9fd63ea1e30eb8b894c4a15b7d8713876217b0e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-05","commitResults":[{"hash":"e84f905846fa50e6a41cb5a199127f3ebf3efec4","isMergeCommit":false,"messageTitle":"Set up checkStyle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":168,"deletions":87}}},{"hash":"b7e4e1b84dbc143d81a1ffadc6a18b4ae4b369d9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CheckStyle\u0027","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"JiaXinEu":{"java":1874,"md":1,"fxml":0,"sh":0,"bat":6,"gradle":5,"txt":16}},"authorContributionVariance":{"JiaXinEu":94174.99},"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":{}}]},{"date":"2024-01-31","commitResults":[{"hash":"5ac66f23cb357b51b4cf5edcf9bb845789846e7e","isMergeCommit":false,"messageTitle":"Add JavaDoc comments to classes and methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":317,"deletions":0}}},{"hash":"6a1e0fa4a1ee11da1745c11ca2d374182427a7a5","isMergeCommit":false,"messageTitle":"Modify code to follow coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":15}}},{"hash":"808601992d162d77f8a6c9e03a6a334f30b2ec7c","isMergeCommit":false,"messageTitle":"Add search task by keyword feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":146,"deletions":9}}},{"hash":"768942ee43c5f87815da2cc2e8e4e7e11f0debd0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"9e3a924e3d2ef173f24397a60eaaa7b5df2b5ded","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"b9fd63ea1e30eb8b894c4a15b7d8713876217b0e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-05","commitResults":[{"hash":"e84f905846fa50e6a41cb5a199127f3ebf3efec4","isMergeCommit":false,"messageTitle":"Set up checkStyle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":168,"deletions":87}}},{"hash":"b7e4e1b84dbc143d81a1ffadc6a18b4ae4b369d9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CheckStyle\u0027","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-07","commitResults":[{"hash":"55d8dba31c80a624a1da87b41e9ed5ad6bb99c3a","isMergeCommit":false,"messageTitle":"Add GUI to chatbot","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":16,"deletions":1},"fxml":{"insertions":64,"deletions":0},"java":{"insertions":324,"deletions":91}}},{"hash":"277416814b796d2bdd8ab4a7d83c2b1b4085095d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}},{"hash":"6d5a3f8e938a3d7162f1c08271e62bc82cbc7d86","isMergeCommit":false,"messageTitle":"Modify find command to use Java varargs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":22}}},{"hash":"a3b076d345f2c74d10594d17395ce2032f2de454","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Varargs\u0027","messageBody":"","tags":["A-Varargs"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"JiaXinEu":{"java":2122,"md":1,"fxml":64,"sh":0,"bat":6,"gradle":20,"txt":16}},"authorContributionVariance":{"JiaXinEu":92962.12},"authorDisplayNameMap":{"JiaXinEu":"CS2103T-T09-1 EU J.. XIN"}} diff --git a/Kaya3842_ip_master/authorship.json b/Kaya3842_ip_master/authorship.json index 944fbd32..55327452 100644 --- a/Kaya3842_ip_master/authorship.json +++ b/Kaya3842_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/liv.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"[T] | [ ] | 1233","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"[D] | [ ] | 455 | by 81","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"[D] | [ ] | 8989 | by ds","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"[E] | [ ] | close | from 123 to asds","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"[T] | [ ] | fcmvksvn","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"Kaya3842":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":" private static final String OUTPUT_PATTERN \u003d \"MMM dd yyyy HH:mm\";","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" public String getDisplayedString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" return \"[D]\" + getStatusIcon() + \" \" + getDescription()","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" + \" (by: \" + by.format(DateTimeFormatter.ofPattern(OUTPUT_PATTERN)) + \")\";","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" public String serializeTask() {","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" return \"[D] | \" + getStatusIcon() + \" | \" + getDescription() + \" | \" + by;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Kaya3842":21}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":" private static final String OUTPUT_PATTERN \u003d \"MMM dd yyyy HH:mm\";","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" public String getDisplayedString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" return \"[E]\" + getStatusIcon() + \" \" + getDescription() + \" (from: \"","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" + from.format(DateTimeFormatter.ofPattern(OUTPUT_PATTERN)) + \" to: \"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" + to.format(DateTimeFormatter.ofPattern(OUTPUT_PATTERN)) + \")\";","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" public String serializeTask() {","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" return \"[E] | \" + getStatusIcon() + \" | \" + getDescription() + \" | \" + from + \" \" + to;","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Kaya3842":28}},{"path":"src/main/java/Liv.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import java.io.File;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"public class Liv {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" private static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" private static boolean hasChanged \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" private static void displayBar() {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" private static void handleGreetCommand() {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"Liv, under your instructions!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"What is your command?\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" private static void handleByeCommand() {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"Farewell, see you next time!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" private static int parseNumberInCommand(String command) throws LivException {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" // Expect input.txt in this form: \"\u003ccommand\u003e \u003cnumber\u003e\"","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" int spaceIndex \u003d command.indexOf(\u0027 \u0027);","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" if (spaceIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Please state the mission number!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" String numberString \u003d command.substring(spaceIndex + 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" if (!numberString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Please enter a number as the mission number!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" return Integer.parseInt(numberString);","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" private static void handleListCommand() {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" // display task","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"Here are the missions you added:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" int displayedIndex \u003d i + 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" System.out.println(displayedIndex + \". \" + task.getDisplayedString());","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" //System.out.printf(\"%d. %s %s\\n\", displayedIndex, task.getStatusIcon(), task.getDescription());","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"Total: \" + tasks.size() + \" mission(s)\");","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" private static void handleMarkOrUnmarkCommand(String command, boolean state) throws LivException {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" int index \u003d parseNumberInCommand(command);","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" int trueIndex \u003d index - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" if ((trueIndex \u003c 0) || (trueIndex \u003e\u003d tasks.size())) {","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"That mission number does not exist in the list!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" Task task \u003d tasks.get(trueIndex);","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" boolean currentState \u003d task.getStatus();","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" if (currentState \u003d\u003d state) {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" if (currentState) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Mission already marked!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Mission already unmarked!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" if (state) {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":" hasChanged \u003d true;","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":" private static void handleDeleteCommand(String command) throws LivException {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"Kaya3842"},"content":" int index \u003d parseNumberInCommand(command);","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":" int trueIndex \u003d index - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" if ((trueIndex \u003c 0) || (trueIndex \u003e\u003d tasks.size())) {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"That mission number does not exist in the list!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":" Task removed \u003d tasks.remove(trueIndex);","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"Mission deleted from list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" System.out.println(removed.getDisplayedString());","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"You have \" + tasks.size() + \" mission(s) on the list\");","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" hasChanged \u003d true;","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" private static void handleTodoTask(String command) throws LivException {","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":" int spaceIndex \u003d command.indexOf(\u0027 \u0027);","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"Kaya3842"},"content":" if (spaceIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Description cannot be empty!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"Kaya3842"},"content":" String description \u003d command.substring(spaceIndex + 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"Kaya3842"},"content":" TodoTask newTodoTask \u003d new TodoTask(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" tasks.add(newTodoTask);","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"Task added:\");","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"Kaya3842"},"content":" System.out.println(newTodoTask.getDisplayedString());","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"You have \" + tasks.size() + \" mission(s) on the list\");","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" private static final DateTimeFormatter INPUT_PATTERN \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":" private static void handleDeadlineTask(String command) throws LivException {","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"Kaya3842"},"content":" // deadline \u003cdescription\u003e /by \u003ctime\u003e","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"Kaya3842"},"content":" int spaceIndex \u003d command.indexOf(\u0027 \u0027);","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":" if (spaceIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Description cannot be empty!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"Kaya3842"},"content":" int timeIndex \u003d command.indexOf(\u0027/\u0027);","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"Kaya3842"},"content":" if (timeIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Time cannot be empty!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"Kaya3842"},"content":" String description \u003d command.substring(spaceIndex + 1, timeIndex - 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"Kaya3842"},"content":" String time \u003d command.substring(timeIndex + 4);","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"Kaya3842"},"content":" LocalDateTime by \u003d LocalDateTime.parse(time, INPUT_PATTERN);","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"Kaya3842"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"Kaya3842"},"content":" tasks.add(newDeadline);","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"Deadline added:\");","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"Kaya3842"},"content":" System.out.println(newDeadline.getDisplayedString());","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"You have \" + tasks.size() + \" mission(s) on the list\");","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"Kaya3842"},"content":" private static void handleEventTask(String command) throws LivException {","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"Kaya3842"},"content":" int spaceIndex \u003d command.indexOf(\u0027 \u0027);","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"Kaya3842"},"content":" if (spaceIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Description cannot be empty!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"Kaya3842"},"content":" int timeIntervalIndex \u003d command.indexOf(\u0027/\u0027);","lastModifiedDate":"2024-01-26"},{"lineNumber":129,"author":{"gitId":"Kaya3842"},"content":" if (timeIntervalIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Time cannot be empty!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":131,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"Kaya3842"},"content":" String description \u003d command.substring(spaceIndex + 1, timeIntervalIndex - 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":133,"author":{"gitId":"Kaya3842"},"content":" String timeInterval \u003d command.substring(timeIntervalIndex + 6);","lastModifiedDate":"2024-01-26"},{"lineNumber":134,"author":{"gitId":"Kaya3842"},"content":" int splitterIndex \u003d timeInterval.indexOf(\u0027/\u0027);","lastModifiedDate":"2024-01-26"},{"lineNumber":135,"author":{"gitId":"Kaya3842"},"content":" if (splitterIndex \u003d\u003d -1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Please enter the correct format for time!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":138,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"Kaya3842"},"content":" String time1 \u003d timeInterval.substring(0, splitterIndex - 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":140,"author":{"gitId":"Kaya3842"},"content":" String time2 \u003d timeInterval.substring(splitterIndex + 4);","lastModifiedDate":"2024-02-06"},{"lineNumber":141,"author":{"gitId":"Kaya3842"},"content":" LocalDateTime from \u003d LocalDateTime.parse(time1, INPUT_PATTERN);","lastModifiedDate":"2024-02-06"},{"lineNumber":142,"author":{"gitId":"Kaya3842"},"content":" LocalDateTime to \u003d LocalDateTime.parse(time2, INPUT_PATTERN);","lastModifiedDate":"2024-02-06"},{"lineNumber":143,"author":{"gitId":"Kaya3842"},"content":" Event newEvent \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-26"},{"lineNumber":144,"author":{"gitId":"Kaya3842"},"content":" tasks.add(newEvent);","lastModifiedDate":"2024-02-06"},{"lineNumber":145,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"Event added:\");","lastModifiedDate":"2024-01-26"},{"lineNumber":146,"author":{"gitId":"Kaya3842"},"content":" System.out.println(newEvent.getDisplayedString());","lastModifiedDate":"2024-01-26"},{"lineNumber":147,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"You have \" + tasks.size() + \" mission(s) on the list\");","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":149,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":150,"author":{"gitId":"Kaya3842"},"content":" private static void handleNewTask(String command) throws LivException {","lastModifiedDate":"2024-01-27"},{"lineNumber":151,"author":{"gitId":"Kaya3842"},"content":" if (command.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":152,"author":{"gitId":"Kaya3842"},"content":" handleTodoTask(command);","lastModifiedDate":"2024-01-26"},{"lineNumber":153,"author":{"gitId":"Kaya3842"},"content":" } else if (command.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":154,"author":{"gitId":"Kaya3842"},"content":" handleDeadlineTask(command);","lastModifiedDate":"2024-01-26"},{"lineNumber":155,"author":{"gitId":"Kaya3842"},"content":" } else if (command.startsWith(\"event\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":156,"author":{"gitId":"Kaya3842"},"content":" handleEventTask(command);","lastModifiedDate":"2024-01-26"},{"lineNumber":157,"author":{"gitId":"Kaya3842"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":158,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Invalid command\");","lastModifiedDate":"2024-01-27"},{"lineNumber":159,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":160,"author":{"gitId":"Kaya3842"},"content":" hasChanged \u003d true;","lastModifiedDate":"2024-02-01"},{"lineNumber":161,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":162,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":163,"author":{"gitId":"Kaya3842"},"content":" private static final String DATA_PATH \u003d \"./data/liv.txt\";","lastModifiedDate":"2024-02-01"},{"lineNumber":164,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":165,"author":{"gitId":"Kaya3842"},"content":" private static void handleLineFromDataFile(String line) {","lastModifiedDate":"2024-02-01"},{"lineNumber":166,"author":{"gitId":"Kaya3842"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-02-01"},{"lineNumber":167,"author":{"gitId":"Kaya3842"},"content":" String taskType \u003d parts[0];","lastModifiedDate":"2024-02-01"},{"lineNumber":168,"author":{"gitId":"Kaya3842"},"content":" boolean isDone \u003d parts[1].equals(\"[X]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":169,"author":{"gitId":"Kaya3842"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-02-01"},{"lineNumber":170,"author":{"gitId":"Kaya3842"},"content":" Task task;","lastModifiedDate":"2024-02-01"},{"lineNumber":171,"author":{"gitId":"Kaya3842"},"content":" if (taskType.equals(\"[T]\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":172,"author":{"gitId":"Kaya3842"},"content":" task \u003d new TodoTask(description);","lastModifiedDate":"2024-02-01"},{"lineNumber":173,"author":{"gitId":"Kaya3842"},"content":" } else if (taskType.equals(\"[D]\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":174,"author":{"gitId":"Kaya3842"},"content":" String time \u003d parts[3];","lastModifiedDate":"2024-02-01"},{"lineNumber":175,"author":{"gitId":"Kaya3842"},"content":" task \u003d new Deadline(description, LocalDateTime.parse(time));","lastModifiedDate":"2024-02-06"},{"lineNumber":176,"author":{"gitId":"Kaya3842"},"content":" } else if (taskType.equals(\"[E]\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":177,"author":{"gitId":"Kaya3842"},"content":" String time \u003d parts[3];","lastModifiedDate":"2024-02-01"},{"lineNumber":178,"author":{"gitId":"Kaya3842"},"content":" int splitterIndex \u003d time.indexOf(\u0027 \u0027);","lastModifiedDate":"2024-02-06"},{"lineNumber":179,"author":{"gitId":"Kaya3842"},"content":" String from \u003d time.substring(0, splitterIndex);","lastModifiedDate":"2024-02-06"},{"lineNumber":180,"author":{"gitId":"Kaya3842"},"content":" String to \u003d time.substring(splitterIndex + 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":181,"author":{"gitId":"Kaya3842"},"content":" task \u003d new Event(description, LocalDateTime.parse(from), LocalDateTime.parse(to));","lastModifiedDate":"2024-02-06"},{"lineNumber":182,"author":{"gitId":"Kaya3842"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":183,"author":{"gitId":"Kaya3842"},"content":" throw new RuntimeException(\"Unknown format: \" + line);","lastModifiedDate":"2024-02-01"},{"lineNumber":184,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":185,"author":{"gitId":"Kaya3842"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":186,"author":{"gitId":"Kaya3842"},"content":" if (isDone)","lastModifiedDate":"2024-02-01"},{"lineNumber":187,"author":{"gitId":"Kaya3842"},"content":" task.changeStatus();","lastModifiedDate":"2024-02-01"},{"lineNumber":188,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":189,"author":{"gitId":"Kaya3842"},"content":" private static void loadDataFile() {","lastModifiedDate":"2024-02-01"},{"lineNumber":190,"author":{"gitId":"Kaya3842"},"content":" // Data format: [\u003ctask type\u003e] | [\u003cisDone\u003e] | \u003cdescription\u003e | \u003ctime\u003e","lastModifiedDate":"2024-02-01"},{"lineNumber":191,"author":{"gitId":"Kaya3842"},"content":" File file \u003d new File(DATA_PATH);","lastModifiedDate":"2024-02-01"},{"lineNumber":192,"author":{"gitId":"Kaya3842"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":193,"author":{"gitId":"Kaya3842"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":194,"author":{"gitId":"Kaya3842"},"content":" file.createNewFile();","lastModifiedDate":"2024-02-01"},{"lineNumber":195,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":196,"author":{"gitId":"Kaya3842"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":197,"author":{"gitId":"Kaya3842"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-01"},{"lineNumber":198,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":199,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":200,"author":{"gitId":"Kaya3842"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(file))) {","lastModifiedDate":"2024-02-01"},{"lineNumber":201,"author":{"gitId":"Kaya3842"},"content":" reader.lines()","lastModifiedDate":"2024-02-01"},{"lineNumber":202,"author":{"gitId":"Kaya3842"},"content":" .forEach(line -\u003e handleLineFromDataFile(line));","lastModifiedDate":"2024-02-01"},{"lineNumber":203,"author":{"gitId":"Kaya3842"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":204,"author":{"gitId":"Kaya3842"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-01"},{"lineNumber":205,"author":{"gitId":"Kaya3842"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-02-01"},{"lineNumber":206,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":207,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":208,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":209,"author":{"gitId":"Kaya3842"},"content":" private static void saveTaskToFile() {","lastModifiedDate":"2024-02-01"},{"lineNumber":210,"author":{"gitId":"Kaya3842"},"content":" // Data format: [\u003ctask type\u003e] | [\u003cisDone\u003e] | \u003cdescription\u003e | \u003ctime\u003e","lastModifiedDate":"2024-02-01"},{"lineNumber":211,"author":{"gitId":"Kaya3842"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":212,"author":{"gitId":"Kaya3842"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(DATA_PATH));","lastModifiedDate":"2024-02-01"},{"lineNumber":213,"author":{"gitId":"Kaya3842"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-01"},{"lineNumber":214,"author":{"gitId":"Kaya3842"},"content":" writer.write(tasks.get(i).serializeTask() + \"\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":215,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":216,"author":{"gitId":"Kaya3842"},"content":" writer.close();","lastModifiedDate":"2024-02-01"},{"lineNumber":217,"author":{"gitId":"Kaya3842"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":218,"author":{"gitId":"Kaya3842"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-01"},{"lineNumber":219,"author":{"gitId":"Kaya3842"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-02-01"},{"lineNumber":220,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":221,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":222,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":223,"author":{"gitId":"Kaya3842"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-25"},{"lineNumber":224,"author":{"gitId":"Kaya3842"},"content":" handleGreetCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":225,"author":{"gitId":"Kaya3842"},"content":" loadDataFile();","lastModifiedDate":"2024-02-01"},{"lineNumber":226,"author":{"gitId":"Kaya3842"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":227,"author":{"gitId":"Kaya3842"},"content":" while (true) {","lastModifiedDate":"2024-01-25"},{"lineNumber":228,"author":{"gitId":"Kaya3842"},"content":" hasChanged \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":229,"author":{"gitId":"Kaya3842"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":230,"author":{"gitId":"Kaya3842"},"content":" displayBar();","lastModifiedDate":"2024-01-25"},{"lineNumber":231,"author":{"gitId":"Kaya3842"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":232,"author":{"gitId":"Kaya3842"},"content":" if (input.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":233,"author":{"gitId":"Kaya3842"},"content":" handleByeCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":234,"author":{"gitId":"Kaya3842"},"content":" displayBar();","lastModifiedDate":"2024-01-25"},{"lineNumber":235,"author":{"gitId":"Kaya3842"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":236,"author":{"gitId":"Kaya3842"},"content":" } else if (input.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":237,"author":{"gitId":"Kaya3842"},"content":" handleListCommand();","lastModifiedDate":"2024-01-25"},{"lineNumber":238,"author":{"gitId":"Kaya3842"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":239,"author":{"gitId":"Kaya3842"},"content":" handleMarkOrUnmarkCommand(input, true);","lastModifiedDate":"2024-01-25"},{"lineNumber":240,"author":{"gitId":"Kaya3842"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":241,"author":{"gitId":"Kaya3842"},"content":" handleMarkOrUnmarkCommand(input, false);","lastModifiedDate":"2024-01-25"},{"lineNumber":242,"author":{"gitId":"Kaya3842"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":243,"author":{"gitId":"Kaya3842"},"content":" handleDeleteCommand(input);","lastModifiedDate":"2024-01-29"},{"lineNumber":244,"author":{"gitId":"Kaya3842"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":245,"author":{"gitId":"Kaya3842"},"content":" handleNewTask(input);","lastModifiedDate":"2024-01-26"},{"lineNumber":246,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":247,"author":{"gitId":"Kaya3842"},"content":" } catch (LivException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":248,"author":{"gitId":"Kaya3842"},"content":" //e.printStackTrace();","lastModifiedDate":"2024-01-27"},{"lineNumber":249,"author":{"gitId":"Kaya3842"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":250,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":251,"author":{"gitId":"Kaya3842"},"content":" if (hasChanged) {","lastModifiedDate":"2024-02-01"},{"lineNumber":252,"author":{"gitId":"Kaya3842"},"content":" saveTaskToFile();","lastModifiedDate":"2024-02-01"},{"lineNumber":253,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":254,"author":{"gitId":"Kaya3842"},"content":" displayBar();","lastModifiedDate":"2024-01-25"},{"lineNumber":255,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":256,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":257,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Kaya3842":257}},{"path":"src/main/java/LivException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"public class LivException extends Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":" public LivException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":" super(message);","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"Kaya3842":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" return description;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" return isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" public void changeStatus() {","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" isDone \u003d !isDone;","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" return (isDone ? \"[X]\" : \"[ ]\"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" public String getDisplayedString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" return getStatusIcon() + \" \" + getDescription();","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"Mission completed:\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\" \" + this.getStatusIcon() + \" \" + this.getDescription());","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"Mission pending:\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\" \" + this.getStatusIcon() + \" \" + this.getDescription());","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" public String serializeTask() {","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" return null;","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Kaya3842":44}},{"path":"src/main/java/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"public class TodoTask extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":" public TodoTask(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"// private static TodoTask parseTodoCommand(String input.txt) {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"// int spaceIndex \u003d command.indexOf(\u0027 \u0027);","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"// String description \u003d command.substring(spaceIndex + 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"// return new TodoTask(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"// }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" public String getDisplayedString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" return \"[T]\" + getStatusIcon() + \" \" + getDescription();","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" public String serializeTask() {","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" return \"[T] | \" + getStatusIcon() + \" | \" + getDescription();","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Kaya3842":20}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"abc","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"123","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"a1s2d3","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"todo 132","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"todo ccc","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"dealine okokok /by Sun","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"deadline okkoko /by Sun","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"deadline a332s /by dsd","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"event newEvent/from 123 /to 456","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"event iii /from zxc1 /to yh hy","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"mark 2","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"mark 3","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"mark 7","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"mark 8","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"unmark 3","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"unmark 7","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"mark 10","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Kaya3842":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":"Kaya3842"},"content":"java -classpath ..\\bin Liv \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-26"},{"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":{"Kaya3842":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":"Kaya3842"},"content":"# run the program, feed commands from input.txt.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Kaya3842":1,"-":37}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" mainClass.set(\"liv.Liv\")","lastModifiedDate":"2024-02-07"},{"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":{"Kaya3842":1,"-":41}},{"path":"src/main/java/liv/Liv.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package liv;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import liv.processor.Command;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import liv.container.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import liv.exception.LivException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import liv.processor.Parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import liv.container.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import liv.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"public class Liv {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" private Storage storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" private Ui ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" public Liv(String filePath) {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" public void run() {","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" ui.displayGreetCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" storage.loadDataFile();","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" while (!isExit) {","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" String input \u003d ui.readCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" ui.displayBar(); // show the divider line (\"_______\")","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" Command c \u003d Parser.parse(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" c.execute(tasks, ui);","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" if (c.changedData()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" storage.saveTaskToFile();","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" } catch (LivException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" ui.displayErrorMessage(e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" } finally {","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" ui.displayBar();","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" new Liv(\"data/liv.Liv.txt\").run();","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Kaya3842":45}},{"path":"src/main/java/liv/container/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package liv.container;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import java.io.File;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import liv.task.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import liv.task.TodoTask;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import liv.task.Deadline;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import liv.task.Event;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"public class Storage {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" private String filePath;","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" private void handleLineFromDataFile(String line) {","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" String taskType \u003d parts[0];","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" boolean isDone \u003d parts[1].equals(\"[X]\");","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" Task task;","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" if (taskType.equals(\"[T]\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" task \u003d new TodoTask(description);","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" } else if (taskType.equals(\"[D]\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" String time \u003d parts[3];","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" task \u003d new Deadline(description, LocalDateTime.parse(time));","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" } else if (taskType.equals(\"[E]\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" String time \u003d parts[3];","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" int splitterIndex \u003d time.indexOf(\u0027 \u0027);","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" String from \u003d time.substring(0, splitterIndex);","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" String to \u003d time.substring(splitterIndex + 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" task \u003d new Event(description, LocalDateTime.parse(from), LocalDateTime.parse(to));","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" throw new RuntimeException(\"Unknown format: \" + line);","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" TaskList.addTask(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" if (isDone)","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" task.changeStatus();","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" public void loadDataFile() {","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" // Data format: [\u003ctask type\u003e] | [\u003cisDone\u003e] | \u003cdescription\u003e | \u003ctime\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" file.getParentFile().mkdir();","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" file.createNewFile();","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(file))) {","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" reader.lines()","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" .forEach(line -\u003e handleLineFromDataFile(line));","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskToFile() {","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" // Data format: [\u003ctask type\u003e] | [\u003cisDone\u003e] | \u003cdescription\u003e | \u003ctime\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(filePath));","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" for (int i \u003d 0; i \u003c TaskList.getListSize(); i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" writer.write(TaskList.getTask(i).serializeTask() + \"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":" writer.close();","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"Kaya3842"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Kaya3842":81}},{"path":"src/main/java/liv/container/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package liv.container;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import liv.task.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"public class TaskList {","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":" private static ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":" public TaskList() {","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" return tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" public static int getListSize() {","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" return tasks.size();","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" public static Task getTask(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" return tasks.get(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" public static void addTask(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" public Task deleteTask(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Kaya3842":30}},{"path":"src/main/java/liv/exception/LivException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package liv.exception;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"public class LivException extends Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":" public LivException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":" super(message);","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"Kaya3842":7}},{"path":"src/main/java/liv/processor/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package liv.processor;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import liv.exception.LivException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import liv.container.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import liv.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":" public void execute(TaskList tasks, Ui ui) throws LivException {","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":" Ui.displayByeCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" return true;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Kaya3842":17}},{"path":"src/main/java/liv/processor/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package liv.processor;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import liv.exception.LivException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import liv.container.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import liv.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"public abstract class Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":" public abstract void execute(TaskList tasks, Ui ui) throws LivException;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":" return false;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" public boolean changedData() {","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" return false;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Kaya3842":16}},{"path":"src/main/java/liv/processor/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package liv.processor;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import liv.task.Deadline;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import liv.container.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import liv.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":" private Deadline deadline;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":" public DeadlineCommand(Deadline deadline) {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" public void execute(TaskList tasks, Ui ui) {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" tasks.addTask(deadline);","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" Ui.displayDeadlineCommand(deadline);","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" public boolean changedData() {","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" return true;","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Kaya3842":24}},{"path":"src/main/java/liv/processor/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package liv.processor;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import liv.exception.LivException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import liv.task.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import liv.container.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import liv.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":" private final int index;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" public void execute(TaskList tasks, Ui ui) throws LivException {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" int trueIndex \u003d index - 1;","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" Task removed \u003d tasks.deleteTask(trueIndex);","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" Ui.displayDeleteCommand(removed);","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" public boolean changedData() {","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" return true;","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Kaya3842":25}},{"path":"src/main/java/liv/processor/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package liv.processor;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import liv.task.Event;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import liv.container.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import liv.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":" private Event event;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":" public EventCommand(Event event) {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" this.event \u003d event;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" public void execute(TaskList tasks, Ui ui) {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" tasks.addTask(event);","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" Ui.displayEventCommand(event);","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" public boolean changedData() {","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" return true;","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Kaya3842":24}},{"path":"src/main/java/liv/processor/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package liv.processor;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import liv.exception.LivException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import liv.container.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import liv.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":" public void execute(TaskList tasks, Ui ui) throws LivException {","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":" Ui.displayListCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Kaya3842":12}},{"path":"src/main/java/liv/processor/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package liv.processor;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import liv.exception.LivException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import liv.task.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import liv.container.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import liv.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":" private final int index;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" public void execute(TaskList tasks, Ui ui) throws LivException {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" int trueIndex \u003d index - 1;","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" Task task \u003d TaskList.getTask(trueIndex);","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" boolean currentState \u003d task.getStatus();","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" if (currentState) {","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Mission already marked!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" task.markAsDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" Ui.displayMarkCommand(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Kaya3842":25}},{"path":"src/main/java/liv/processor/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package liv.processor;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import liv.exception.LivException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import liv.task.Deadline;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import liv.task.Event;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import liv.container.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import liv.task.TodoTask;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"public class Parser {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" private static final DateTimeFormatter INPUT_PATTERN \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" public static Command parse(String input) throws LivException {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" if (input.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" return parseByeCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" } else if (input.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" return parseListCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" return parseMarkOrUnmarkCommand(input, true);","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" return parseMarkOrUnmarkCommand(input, false);","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" return parseDeleteCommand(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" return parseTodoCommand(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" return parseDeadlineCommand(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" return parseEventCommand(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Invalid input!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" public static Command parseByeCommand() {","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" return new ByeCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" private static int parseNumberInInput(String input) throws LivException {","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" // Expect input.txt in this form: \"\u003ccommand\u003e \u003cnumber\u003e\"","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" int spaceIndex \u003d input.indexOf(\u0027 \u0027);","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" if (spaceIndex \u003d\u003d -1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Please state the mission number!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" String numberString \u003d input.substring(spaceIndex + 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" if (!numberString.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Please enter a number as the mission number!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" return Integer.parseInt(numberString);","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" public static Command parseListCommand() {","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" public static Command parseMarkOrUnmarkCommand(String input, boolean state) throws LivException {","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" int index \u003d parseNumberInInput(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" int trueIndex \u003d index - 1;","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" if ((trueIndex \u003c 0) || (trueIndex \u003e\u003d TaskList.getListSize())) {","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"That mission number does not exist in the list!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" if (state) {","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" public static Command parseDeleteCommand(String input) throws LivException {","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" int index \u003d parseNumberInInput(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":" int trueIndex \u003d index - 1;","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" if ((trueIndex \u003c 0) || (trueIndex \u003e\u003d TaskList.getListSize())) {","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"That mission number does not exist in the list!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":" public static Command parseTodoCommand(String input) throws LivException {","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":" int spaceIndex \u003d input.indexOf(\u0027 \u0027);","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"Kaya3842"},"content":" if (spaceIndex \u003d\u003d -1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Description cannot be empty!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" String description \u003d input.substring(spaceIndex + 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" TodoTask newTodoTask \u003d new TodoTask(description);","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":" return new TodoCommand(newTodoTask);","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" public static Command parseDeadlineCommand(String input) throws LivException {","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" // deadline \u003cdescription\u003e /by \u003ctime\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" int spaceIndex \u003d input.indexOf(\u0027 \u0027);","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"Kaya3842"},"content":" if (spaceIndex \u003d\u003d -1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Description cannot be empty!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":" int timeIndex \u003d input.indexOf(\u0027/\u0027);","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"Kaya3842"},"content":" if (timeIndex \u003d\u003d -1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Time cannot be empty!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"Kaya3842"},"content":" String description \u003d input.substring(spaceIndex + 1, timeIndex - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"Kaya3842"},"content":" String time \u003d input.substring(timeIndex + 4);","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" LocalDateTime by \u003d LocalDateTime.parse(time, INPUT_PATTERN);","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"Kaya3842"},"content":" return new DeadlineCommand(newDeadline);","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" public static Command parseEventCommand(String input) throws LivException {","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":" int spaceIndex \u003d input.indexOf(\u0027 \u0027);","lastModifiedDate":"2024-02-07"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" if (spaceIndex \u003d\u003d -1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Description cannot be empty!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"Kaya3842"},"content":" int timeIntervalIndex \u003d input.indexOf(\u0027/\u0027);","lastModifiedDate":"2024-02-07"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":" if (timeIntervalIndex \u003d\u003d -1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Time cannot be empty!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":108,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":109,"author":{"gitId":"Kaya3842"},"content":" String description \u003d input.substring(spaceIndex + 1, timeIntervalIndex - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":110,"author":{"gitId":"Kaya3842"},"content":" String timeInterval \u003d input.substring(timeIntervalIndex + 6);","lastModifiedDate":"2024-02-07"},{"lineNumber":111,"author":{"gitId":"Kaya3842"},"content":" int splitterIndex \u003d timeInterval.indexOf(\u0027/\u0027);","lastModifiedDate":"2024-02-07"},{"lineNumber":112,"author":{"gitId":"Kaya3842"},"content":" if (splitterIndex \u003d\u003d -1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":113,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Please enter the correct format for time!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":114,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":115,"author":{"gitId":"Kaya3842"},"content":" String time1 \u003d timeInterval.substring(0, splitterIndex - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":116,"author":{"gitId":"Kaya3842"},"content":" String time2 \u003d timeInterval.substring(splitterIndex + 4);","lastModifiedDate":"2024-02-07"},{"lineNumber":117,"author":{"gitId":"Kaya3842"},"content":" LocalDateTime from \u003d LocalDateTime.parse(time1, INPUT_PATTERN);","lastModifiedDate":"2024-02-07"},{"lineNumber":118,"author":{"gitId":"Kaya3842"},"content":" LocalDateTime to \u003d LocalDateTime.parse(time2, INPUT_PATTERN);","lastModifiedDate":"2024-02-07"},{"lineNumber":119,"author":{"gitId":"Kaya3842"},"content":" Event newEvent \u003d new Event(description, from, to);","lastModifiedDate":"2024-02-07"},{"lineNumber":120,"author":{"gitId":"Kaya3842"},"content":" return new EventCommand(newEvent);","lastModifiedDate":"2024-02-07"},{"lineNumber":121,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":122,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Kaya3842":122}},{"path":"src/main/java/liv/processor/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package liv.processor;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import liv.container.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import liv.task.TodoTask;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import liv.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":" private TodoTask todo;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":" public TodoCommand(TodoTask todo) {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" this.todo \u003d todo;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" public void execute(TaskList tasks, Ui ui) {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" tasks.addTask(todo);","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" Ui.displayTodoCommand(todo);","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" public boolean changedData() {","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" return true;","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Kaya3842":24}},{"path":"src/main/java/liv/processor/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package liv.processor;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import liv.exception.LivException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import liv.task.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import liv.container.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import liv.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":" private final int index;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" public void execute(TaskList tasks, Ui ui) throws LivException {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" int trueIndex \u003d index - 1;","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" Task task \u003d TaskList.getTask(trueIndex);","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" boolean currentState \u003d task.getStatus();","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" if (!currentState) {","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" throw new LivException(\"Mission already unmarked!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" Ui.displayUnmarkCommand(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Kaya3842":25}},{"path":"src/main/java/liv/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package liv.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":" private static final String OUTPUT_PATTERN \u003d \"MMM dd yyyy HH:mm\";","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" public String getDisplayedString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" return \"[D]\" + getStatusIcon() + \" \" + getDescription()","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" + \" (by: \" + by.format(DateTimeFormatter.ofPattern(OUTPUT_PATTERN)) + \")\";","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" public String serializeTask() {","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" return \"[D] | \" + getStatusIcon() + \" | \" + getDescription() + \" | \" + by;","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Kaya3842":23}},{"path":"src/main/java/liv/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package liv.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":" private static final String OUTPUT_PATTERN \u003d \"MMM dd yyyy HH:mm\";","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" public String getDisplayedString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" return \"[E]\" + getStatusIcon() + \" \" + getDescription() + \" (from: \"","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" + from.format(DateTimeFormatter.ofPattern(OUTPUT_PATTERN)) + \" to: \"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" + to.format(DateTimeFormatter.ofPattern(OUTPUT_PATTERN)) + \")\";","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" public String serializeTask() {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" return \"[E] | \" + getStatusIcon() + \" | \" + getDescription() + \" | \" + from + \" \" + to;","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Kaya3842":30}},{"path":"src/main/java/liv/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package liv.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" return description;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" return isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" public void changeStatus() {","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" isDone \u003d !isDone;","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" return (isDone ? \"[X]\" : \"[ ]\"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" public String getDisplayedString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" return getStatusIcon() + \" \" + getDescription();","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" public String serializeTask() {","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" return null;","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"Kaya3842":42}},{"path":"src/main/java/liv/task/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package liv.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"public class TodoTask extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":" public TodoTask(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"// private static liv.task.TodoTask parseTodoCommand(String input.txt) {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"// int spaceIndex \u003d command.indexOf(\u0027 \u0027);","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"// String description \u003d command.substring(spaceIndex + 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"// return new liv.task.TodoTask(description);","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"// }","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" public String getDisplayedString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" return \"[T]\" + getStatusIcon() + \" \" + getDescription();","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" public String serializeTask() {","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" return \"[T] | \" + getStatusIcon() + \" | \" + getDescription();","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Kaya3842":22}},{"path":"src/main/java/liv/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package liv.ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import liv.container.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import liv.task.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import liv.task.TodoTask;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import liv.task.Deadline;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import liv.task.Event;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"public class Ui {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" private static final Scanner SCANNER \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" public void displayBar() {","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" public void displayGreetCommand() {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"liv.Liv, under your instructions!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"What is your command?\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" public String readCommand() {","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" return SCANNER.nextLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" public static void displayByeCommand() {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"Farewell, see you next time!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" public static void displayListCommand() {","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"Here are the missions you added:\");","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" for (int i \u003d 0; i \u003c TaskList.getListSize(); i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" Task task \u003d TaskList.getTask(i);","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" int displayedIndex \u003d i + 1;","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" System.out.println(displayedIndex + \". \" + task.getDisplayedString());","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" //System.out.printf(\"%d. %s %s\\n\", displayedIndex, task.getStatusIcon(), task.getDescription());","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"Total: \" + TaskList.getListSize() + \" mission(s)\");","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" public static void displayMarkCommand(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"Mission completed:\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\" \" + task.getStatusIcon() + \" \" + task.getDescription());","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" public static void displayUnmarkCommand(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"Mission pending:\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\" \" + task.getStatusIcon() + \" \" + task.getDescription());","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" public static void displayDeleteCommand(Task removed) {","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"Mission deleted from list:\");","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" System.out.println(removed.getDisplayedString());","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"You have \" + TaskList.getListSize() + \" mission(s) on the list\");","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" public static void displayTodoCommand(TodoTask todo) {","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"liv.task.Task added:\");","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" System.out.println(todo.getDisplayedString());","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"You have \" + TaskList.getListSize() + \" mission(s) on the list\");","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" public static void displayDeadlineCommand(Deadline deadline) {","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"liv.task.Deadline added:\");","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" System.out.println(deadline.getDisplayedString());","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"You have \" + TaskList.getListSize() + \" mission(s) on the list\");","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" public static void displayEventCommand(Event event) {","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"liv.task.Task added:\");","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" System.out.println(event.getDisplayedString());","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" System.out.println(\"You have \" + TaskList.getListSize() + \" mission(s) on the list\");","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" public void displayErrorMessage(String message) {","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" System.out.println(message);","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Kaya3842":73}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"abc","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"123","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"a1s2d3","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"todo 132","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"todo ccc","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"dealine okokok /by Sun","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"deadline okkoko /by Sun","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"deadline a332s /by dsd","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"event newEvent/from 123 /to 456","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"event iii /from zxc1 /to yh hy","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"mark 2","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"mark 3","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"mark 7","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"mark 8","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"unmark 3","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"unmark 7","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"mark 10","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Kaya3842":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":"Kaya3842"},"content":"java -classpath ..\\bin liv.Liv \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-07"},{"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":{"Kaya3842":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":"Kaya3842"},"content":"# run the program, feed commands from input.txt.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"Kaya3842":1,"-":37}}] diff --git a/Kaya3842_ip_master/commits.json b/Kaya3842_ip_master/commits.json index 3f9b284b..303360b5 100644 --- a/Kaya3842_ip_master/commits.json +++ b/Kaya3842_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Kaya3842":[{"date":"2024-01-25","commitResults":[{"hash":"f88764f9219be41dd18be6e083db1e660b0be28e","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":10}}},{"hash":"2cc79205044998d6be6671a864feff7ae80b9fe7","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"babb77580a345fa3be2e0b6d6fd42eba196d3895","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}},{"hash":"bc2a4fd4f8f9c5fb463f094333f567f572629df0","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"0ea9d3689a695a068c3ab57d40e153cc64f87449","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":19}}}]},{"date":"2024-01-26","commitResults":[{"hash":"01b2d67a6626fac3b87e08ae9402a624e303a944","isMergeCommit":false,"messageTitle":"Added type of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":9}}},{"hash":"e790019c03acbe22f8cfe862e035df2d77060895","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":22,"deletions":0},"java":{"insertions":2,"deletions":2},"bat":{"insertions":2,"deletions":2},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-27","commitResults":[{"hash":"9398963bbbe53ac6b420b710585fec9ba395cfb0","isMergeCommit":false,"messageTitle":"Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":23}}}]},{"date":"2024-01-29","commitResults":[{"hash":"1ad704c921c74a9cfe105f8cb25e9ba0d83e23a8","isMergeCommit":false,"messageTitle":"Add delete function + handle more errors","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":5}}}]},{"date":"2024-02-01","commitResults":[{"hash":"3557314bc43febded9b6def4f9b46805eab9ba51","isMergeCommit":false,"messageTitle":"Add Save function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":100,"deletions":4}}},{"hash":"979c86dc07c9168e77839bd5b6f7a63cdf9743c9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"786d432efeab26599e5f959df5581b6be8baa824","isMergeCommit":false,"messageTitle":"BREAKING CHANGE: now store time as a LocalDateTime object instead of a String object","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":18}}}]}]},"authorFileTypeContributionMap":{"Kaya3842":{"java":375,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":27}},"authorContributionVariance":{"Kaya3842":2603.0361},"authorDisplayNameMap":{"Kaya3842":"CS2103T-W13-4 DINH..HIEN"}} +{"authorDailyContributionsMap":{"Kaya3842":[{"date":"2024-01-25","commitResults":[{"hash":"f88764f9219be41dd18be6e083db1e660b0be28e","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":10}}},{"hash":"2cc79205044998d6be6671a864feff7ae80b9fe7","isMergeCommit":false,"messageTitle":"Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"babb77580a345fa3be2e0b6d6fd42eba196d3895","isMergeCommit":false,"messageTitle":"Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}},{"hash":"bc2a4fd4f8f9c5fb463f094333f567f572629df0","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"0ea9d3689a695a068c3ab57d40e153cc64f87449","isMergeCommit":false,"messageTitle":"Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":19}}}]},{"date":"2024-01-26","commitResults":[{"hash":"01b2d67a6626fac3b87e08ae9402a624e303a944","isMergeCommit":false,"messageTitle":"Added type of tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":9}}},{"hash":"e790019c03acbe22f8cfe862e035df2d77060895","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":22,"deletions":0},"java":{"insertions":2,"deletions":2},"bat":{"insertions":2,"deletions":2},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2024-01-27","commitResults":[{"hash":"9398963bbbe53ac6b420b710585fec9ba395cfb0","isMergeCommit":false,"messageTitle":"Handle Errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":23}}}]},{"date":"2024-01-29","commitResults":[{"hash":"1ad704c921c74a9cfe105f8cb25e9ba0d83e23a8","isMergeCommit":false,"messageTitle":"Add delete function + handle more errors","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":5}}}]},{"date":"2024-02-01","commitResults":[{"hash":"3557314bc43febded9b6def4f9b46805eab9ba51","isMergeCommit":false,"messageTitle":"Add Save function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":100,"deletions":4}}},{"hash":"979c86dc07c9168e77839bd5b6f7a63cdf9743c9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"786d432efeab26599e5f959df5581b6be8baa824","isMergeCommit":false,"messageTitle":"BREAKING CHANGE: now store time as a LocalDateTime object instead of a String object","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":18}}}]},{"date":"2024-02-07","commitResults":[{"hash":"a4fb9c03f3618e2de82b33ce2ad0bd6d2d21bcb3","isMergeCommit":false,"messageTitle":"Summary: Style: Change the class structure to add more OOP Description: Extract new classes such as Parser and Storage to separate the logic. Transfer some functions from Liv class to new classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":1}}},{"hash":"457e52d6af8d8c16984e5a12a27921da3a38cc3d","isMergeCommit":false,"messageTitle":"Add more classes to make more OOP","messageBody":"Completely separate the main class Liv into smaller classes.\n","fileTypesAndContributionMap":{"java":{"insertions":310,"deletions":36}}},{"hash":"a1394545962ef628bf8a205aa157a61ede774a11","isMergeCommit":false,"messageTitle":"Liv.java: Remove old logic and add new logic","messageBody":"Rewrite the main class Liv.java using the new classes for more OOP.\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":5},"java":{"insertions":73,"deletions":254}}},{"hash":"1fd6bdf65cb6c5168bf1fdc8b9016aaa7c2a2ffb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"* branch-A-MoreOOP:\n Liv.java: Remove old logic and add new logic\n Add more classes to make more OOP\n Summary: Style: Change the class structure to add more OOP Description: Extract new classes such as Parser and Storage to separate the logic. Transfer some functions from Liv class to new classes\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"5d72609e2b8d378d855db841599beae323601289","isMergeCommit":false,"messageTitle":"Organize into Packages","messageBody":"Divide the classes into suitable java packages.\n\nClasses that are closely related are divided into the same package.\n","fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":19},"bat":{"insertions":1,"deletions":1}}},{"hash":"ea01f13e5eb355c07253e17f52cfd574e15199e8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"* branch-A-Packages:\n Organize into Packages\n","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"4d4267ac9940418c3290d6b97da6fb3742acc17f","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":"0a1071a29011447e8bd982bbb5cf0faee2e2d99f","isMergeCommit":false,"messageTitle":"Add build.gradle","messageBody":"Add Gradle to use on the later tasks of the project.\n","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":0}}},{"hash":"002fc03f5318a9677fd050d5609e0dcc08895eba","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"* branch-A-Gradle:\n Add build.gradle\n","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Kaya3842":{"java":667,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":1,"txt":22}},"authorContributionVariance":{"Kaya3842":40119.887},"authorDisplayNameMap":{"Kaya3842":"CS2103T-W13-4 DINH..HIEN"}} diff --git a/LargeCrowd_ip_master/authorship.json b/LargeCrowd_ip_master/authorship.json index d1530ef0..867325b1 100644 --- a/LargeCrowd_ip_master/authorship.json +++ b/LargeCrowd_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":" * Deadline class","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":" protected LocalDate byDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":" protected String byString;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":" * Constructor for Deadline","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" * @param description","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":" * @param by","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":" * @throws DateTimeException","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"LargeCrowd"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"LargeCrowd"},"content":" super(description);","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"LargeCrowd"},"content":" this.byString \u003d by;","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"LargeCrowd"},"content":" this.byDate \u003d parseDate(by, f1, f2, f3, f4); // Parse the by string","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"LargeCrowd"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"LargeCrowd"},"content":" throw new DateTimeException(\"Error parsing date in Deadline: \" + e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"LargeCrowd"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"LargeCrowd"},"content":" protected String getTaskType() {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"LargeCrowd"},"content":" return \"D\";","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"LargeCrowd"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"LargeCrowd"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"LargeCrowd"},"content":" DateTimeFormatter displayFormatter \u003d DateTimeFormatter.ofPattern(\"d MMM yyyy\");","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"LargeCrowd"},"content":" return super.toString() + \" (by: \" + byDate.format(displayFormatter) + \")\";","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"LargeCrowd":40}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":" * Main class","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":"public class Duke {","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":" private Storage storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":" private ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":" private Parser parser;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":" private Ui ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":" public Duke() {","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":" this.storage \u003d new Storage(taskList);","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":" storage.loadTaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":" this.tasks \u003d new TaskList(storage, taskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"LargeCrowd"},"content":" this.parser \u003d new Parser(tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"LargeCrowd"},"content":" * Starts the program","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"LargeCrowd"},"content":" * @throws IndexOutOfBoundsException if index is out of bounds","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"LargeCrowd"},"content":" * @throws NumberFormatException if input is not a number","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"LargeCrowd"},"content":" * @throws StringIndexOutOfBoundsException if input is not a number","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"LargeCrowd"},"content":" public void start() {","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"LargeCrowd"},"content":" // storage.loadTaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"LargeCrowd"},"content":" ui.showGreeting();","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"LargeCrowd"},"content":" String input \u003d ui.getUserInput();","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"LargeCrowd"},"content":" while (true) {","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"LargeCrowd"},"content":" ui.printLine();","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"LargeCrowd"},"content":" if (!parser.executeUserInput(input)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"LargeCrowd"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"LargeCrowd"},"content":" input \u003d ui.getUserInput();","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"LargeCrowd"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"LargeCrowd"},"content":" ui.closeScanner();","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"LargeCrowd"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"LargeCrowd"},"content":" Duke mainApp \u003d new Duke();","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"LargeCrowd"},"content":" mainApp.start();","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"LargeCrowd"},"content":" } ","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"LargeCrowd":54}},{"path":"src/main/java/duke/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":" * Events class","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":"public class Events extends Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":" protected LocalDate fromDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":" protected LocalDate toDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":" protected String fromString;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" protected String toString;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" * Constructor for Events","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":" * @param description","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":" * @param from","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"LargeCrowd"},"content":" * @param to","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"LargeCrowd"},"content":" * @throws DateTimeException","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"LargeCrowd"},"content":" public Events(String description, String from, String to) {","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"LargeCrowd"},"content":" super(description);","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"LargeCrowd"},"content":" this.fromString \u003d from;","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"LargeCrowd"},"content":" this.toString \u003d to;","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"LargeCrowd"},"content":" this.fromDate \u003d parseDate(from, f1, f2, f3, f4); // Parse the from string","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"LargeCrowd"},"content":" this.toDate \u003d parseDate(to, f1, f2, f3, f4); // Parse the to string","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"LargeCrowd"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"LargeCrowd"},"content":" throw new DateTimeException(\"Error parsing date in Events: \" + e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"LargeCrowd"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"LargeCrowd"},"content":" protected String getTaskType() {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"LargeCrowd"},"content":" return \"E\";","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"LargeCrowd"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"LargeCrowd"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"LargeCrowd"},"content":" DateTimeFormatter displayFormatter \u003d DateTimeFormatter.ofPattern(\"d MMM yyyy\");","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"LargeCrowd"},"content":" return super.toString() + \" (from: \" + fromDate.format(displayFormatter) + \", to: \" + toDate.format(displayFormatter) + \")\";","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"LargeCrowd":45}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":" * This class is responsible for making sense of the user input","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":"public class Parser {","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":" private Ui ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":" private TaskList taskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":" public Parser(TaskList taskList) {","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":" public boolean executeUserInput(String input) {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":" return false;","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"LargeCrowd"},"content":" if (input.equals(\"list\")) { // show list","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"LargeCrowd"},"content":" taskList.printList();","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"LargeCrowd"},"content":" } else if (input.startsWith(\"mark done\")) { // mark as done","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"LargeCrowd"},"content":" int index \u003d Integer.parseInt(input.substring(9).trim()) - 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"LargeCrowd"},"content":" taskList.markDone(index);","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"LargeCrowd"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"LargeCrowd"},"content":" ui.printInvalidTaskIndex();","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"LargeCrowd"},"content":" } else if (input.startsWith(\"mark undone\")) { // mark as undone","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"LargeCrowd"},"content":" int index \u003d Integer.parseInt(input.substring(11).trim()) - 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"LargeCrowd"},"content":" taskList.markUndone(index);","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"LargeCrowd"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"LargeCrowd"},"content":" ui.printInvalidTaskIndex();","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"LargeCrowd"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"LargeCrowd"},"content":" taskList.addTask(input);","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"LargeCrowd"},"content":" return true;","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"LargeCrowd":41}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":"public class Storage {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":" private static final String FOLDER_PATH \u003d \"./tasklist\";","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" private static final String TASKLIST_PATH \u003d FOLDER_PATH + \"/tasklist.txt\";","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":" private Path taskListPath \u003d Paths.get(TASKLIST_PATH);","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":" private Path folderPath \u003d Paths.get(FOLDER_PATH);","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":" public Storage(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"LargeCrowd"},"content":" createTaskList();","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"LargeCrowd"},"content":" public void loadTaskList() {","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"LargeCrowd"},"content":" // Clear existing tasks before loading","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.clear();","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"LargeCrowd"},"content":" // Load tasks from file","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"LargeCrowd"},"content":" ArrayList\u003cString\u003e taskListFromFile \u003d new ArrayList\u003c\u003e(Files.readAllLines(taskListPath));","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"LargeCrowd"},"content":" // For each task in the file, add it to the taskList","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"LargeCrowd"},"content":" for (String task : taskListFromFile) {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"LargeCrowd"},"content":" String[] taskParts \u003d task.split(\" \\\\| \", 3);","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"LargeCrowd"},"content":" String taskType \u003d taskParts[0];","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"LargeCrowd"},"content":" String taskStatus \u003d taskParts[1];","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"LargeCrowd"},"content":" String taskDescription \u003d taskParts[2];","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"LargeCrowd"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"LargeCrowd"},"content":" case \"T\":","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"LargeCrowd"},"content":" Todo newTodo \u003d new Todo(taskDescription);","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"LargeCrowd"},"content":" if (taskStatus.equals(\"done\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"LargeCrowd"},"content":" newTodo.markDone();","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.add(newTodo);","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"LargeCrowd"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"LargeCrowd"},"content":" case \"D\":","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"LargeCrowd"},"content":" String[] deadlineParts \u003d taskDescription.split(\" \\\\(by: \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"LargeCrowd"},"content":" String deadlineDescription \u003d deadlineParts[0];","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"LargeCrowd"},"content":" String deadlineByDateTime \u003d deadlineParts[1].substring(0, deadlineParts[1].length() - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"LargeCrowd"},"content":" Deadline newDeadline \u003d new Deadline(deadlineDescription, deadlineByDateTime);","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"LargeCrowd"},"content":" if (taskStatus.equals(\"done\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"LargeCrowd"},"content":" newDeadline.markDone();","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.add(newDeadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"LargeCrowd"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"LargeCrowd"},"content":" case \"E\":","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"LargeCrowd"},"content":" String[] eventParts \u003d taskDescription.split(\" \\\\(from: \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"LargeCrowd"},"content":" String eventDescription \u003d eventParts[0];","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"LargeCrowd"},"content":" String eventAt \u003d eventParts[1].substring(0, eventParts[1].length() - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"LargeCrowd"},"content":" String[] eventAtParts \u003d eventAt.split(\", to: \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"LargeCrowd"},"content":" String eventFrom \u003d eventAtParts[0];","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"LargeCrowd"},"content":" String eventTo \u003d eventAtParts[1];","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"LargeCrowd"},"content":" Events newEvent \u003d new Events(eventDescription, eventFrom, eventTo);","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"LargeCrowd"},"content":" if (taskStatus.equals(\"done\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"LargeCrowd"},"content":" newEvent.markDone();","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.add(newEvent);","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"LargeCrowd"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"LargeCrowd"},"content":" default:","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"Unrecognized task type: \" + task);","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"LargeCrowd"},"content":" throw new IOException(\"Error loading data from file: unrecognized task type\");","lastModifiedDate":"2024-02-04"},{"lineNumber":77,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"LargeCrowd"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"Error loading data from file: \" + e.getMessage());","lastModifiedDate":"2024-02-04"},{"lineNumber":81,"author":{"gitId":"LargeCrowd"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"LargeCrowd"},"content":" public void saveTaskListToFile() {","lastModifiedDate":"2024-02-04"},{"lineNumber":86,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"LargeCrowd"},"content":" ArrayList\u003cString\u003e newTaskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"LargeCrowd"},"content":" for (Task task : this.taskList) {","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"LargeCrowd"},"content":" newTaskList.add(task.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"LargeCrowd"},"content":" Files.write(taskListPath, newTaskList);","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"LargeCrowd"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"Error saving data to file: \" + e.getMessage());","lastModifiedDate":"2024-02-04"},{"lineNumber":96,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":97,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":98,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":99,"author":{"gitId":"LargeCrowd"},"content":" private void createTaskList() {","lastModifiedDate":"2024-02-04"},{"lineNumber":100,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":101,"author":{"gitId":"LargeCrowd"},"content":" if (Files.notExists(folderPath)) {","lastModifiedDate":"2024-02-04"},{"lineNumber":102,"author":{"gitId":"LargeCrowd"},"content":" Files.createDirectories(folderPath);","lastModifiedDate":"2024-02-04"},{"lineNumber":103,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":104,"author":{"gitId":"LargeCrowd"},"content":" if (Files.notExists(taskListPath)) {","lastModifiedDate":"2024-02-04"},{"lineNumber":105,"author":{"gitId":"LargeCrowd"},"content":" Files.createFile(taskListPath);","lastModifiedDate":"2024-02-04"},{"lineNumber":106,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":107,"author":{"gitId":"LargeCrowd"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":108,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"Error creating tasklist: \" + e.getMessage());","lastModifiedDate":"2024-02-04"},{"lineNumber":109,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"LargeCrowd":111}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":"import java.util.Locale;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":" * Task class","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":"public class Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":" protected String task;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":" protected boolean isDone;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" protected DateTimeFormatter f1 \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy\", Locale.ENGLISH);","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":" protected DateTimeFormatter f2 \u003d DateTimeFormatter.ofPattern(\"yyyy-M-d\", Locale.ENGLISH);","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":" protected DateTimeFormatter f3 \u003d DateTimeFormatter.ofPattern(\"d MMM yyyy\", Locale.ENGLISH);","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" protected DateTimeFormatter f4 \u003d DateTimeFormatter.ofPattern(\"d-M-yyyy\", Locale.ENGLISH);","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":" * Constructor for Task","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"LargeCrowd"},"content":" * @param task","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"LargeCrowd"},"content":" public Task(String task) {","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"LargeCrowd"},"content":" this.task \u003d task;","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"LargeCrowd"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"LargeCrowd"},"content":" * Mark task as done","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"LargeCrowd"},"content":" public void markDone() {","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"LargeCrowd"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"LargeCrowd"},"content":" * Mark task as undone","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"LargeCrowd"},"content":" public void markUndone() {","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"LargeCrowd"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"LargeCrowd"},"content":" * Check if task is done","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"LargeCrowd"},"content":" * @return boolean","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"LargeCrowd"},"content":" public boolean isDone() {","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"LargeCrowd"},"content":" return this.isDone;","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"LargeCrowd"},"content":" * Returns task type","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"LargeCrowd"},"content":" protected String getTaskType() {","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"LargeCrowd"},"content":" return \"\";","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"LargeCrowd"},"content":" * Returns task status","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"LargeCrowd"},"content":" * @return String task status","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"LargeCrowd"},"content":" public String getTaskStatus() {","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"LargeCrowd"},"content":" return this.isDone ? \"done\" : \"not done\";","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"LargeCrowd"},"content":" * Parse the date string and return a LocalDate object","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"LargeCrowd"},"content":" * @param by","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"LargeCrowd"},"content":" * @param formatters","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"LargeCrowd"},"content":" * @return LocalDate","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"LargeCrowd"},"content":" * @throws IllegalArgumentException","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"LargeCrowd"},"content":" * @throws Exception","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"LargeCrowd"},"content":" protected static LocalDate parseDate(String by, DateTimeFormatter... formatters) {","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"LargeCrowd"},"content":" for (DateTimeFormatter formatter : formatters) {","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"LargeCrowd"},"content":" return LocalDate.parse(by, formatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"LargeCrowd"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"LargeCrowd"},"content":" // Try the next format","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"LargeCrowd"},"content":" // If none of the formats match, you may want to handle this case","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"LargeCrowd"},"content":" throw new IllegalArgumentException(\"Date could not be parsed with any of the provided formats\");","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"LargeCrowd"},"content":" * toString method for Task","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"LargeCrowd"},"content":" * @return String","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"LargeCrowd"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"LargeCrowd"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"LargeCrowd"},"content":" return getTaskType() + \" | \" + getTaskStatus() + \" | \" + this.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":99,"author":{"gitId":"LargeCrowd"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":100,"author":{"gitId":"LargeCrowd"},"content":" * TaskType enum","lastModifiedDate":"2024-02-01"},{"lineNumber":101,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":102,"author":{"gitId":"LargeCrowd"},"content":"enum TaskType {","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"LargeCrowd"},"content":" TODO,","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"LargeCrowd"},"content":" DEADLINE,","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"LargeCrowd"},"content":" EVENT,","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"LargeCrowd"},"content":" HELP,","lastModifiedDate":"2024-02-01"},{"lineNumber":107,"author":{"gitId":"LargeCrowd"},"content":" DELETE,","lastModifiedDate":"2024-02-01"},{"lineNumber":108,"author":{"gitId":"LargeCrowd"},"content":" UNKNOWN","lastModifiedDate":"2024-02-01"},{"lineNumber":109,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"LargeCrowd":109}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":"public class TaskList {","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":" private Ui ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":" private int taskIndex;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":" private Storage storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":" public TaskList(Storage storage, ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":" * Adds task to taskList","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":" * @param task task to be added","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"LargeCrowd"},"content":" public void addTask(String task) {","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"LargeCrowd"},"content":" TaskType taskType \u003d getTaskType(task);","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"LargeCrowd"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"LargeCrowd"},"content":" case TODO:","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"LargeCrowd"},"content":" addTodoTask(task);","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"LargeCrowd"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"LargeCrowd"},"content":" case DEADLINE:","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"LargeCrowd"},"content":" addDeadline(task);","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"LargeCrowd"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"LargeCrowd"},"content":" case EVENT:","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"LargeCrowd"},"content":" addEvent(task);","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"LargeCrowd"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"LargeCrowd"},"content":" case HELP:","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"LargeCrowd"},"content":" ui.showHelp();","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"LargeCrowd"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"LargeCrowd"},"content":" case DELETE:","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"LargeCrowd"},"content":" int index \u003d Integer.parseInt(task.substring(6).trim()) - 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"LargeCrowd"},"content":" deleteTask(index);","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"LargeCrowd"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Invalid input. Please enter a valid task index.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"LargeCrowd"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"LargeCrowd"},"content":" default:","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Sorry, that\u0027s not a command :( Enter \u0027help\u0027 for instructions.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"LargeCrowd"},"content":" ui.printLine();","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"LargeCrowd"},"content":" * Adds todoTask to taskList","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"LargeCrowd"},"content":" * @param task task to be added","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"LargeCrowd"},"content":" public void addTodoTask(String task) {","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"LargeCrowd"},"content":" String todoDescription \u003d task.substring(4).trim();","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"LargeCrowd"},"content":" if (todoDescription.isEmpty()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Invalid input. Please enter a valid todo task.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"LargeCrowd"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"LargeCrowd"},"content":" Todo newTodo \u003d new Todo (todoDescription);","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.add(newTodo);","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":65,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Added todo: \" + todoDescription);","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"LargeCrowd"},"content":" storage.saveTaskListToFile();","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"LargeCrowd"},"content":" * Adds deadline to taskList","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"LargeCrowd"},"content":" * @param task task to be added","lastModifiedDate":"2024-02-04"},{"lineNumber":74,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":75,"author":{"gitId":"LargeCrowd"},"content":" public void addDeadline(String task) {","lastModifiedDate":"2024-02-04"},{"lineNumber":76,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":77,"author":{"gitId":"LargeCrowd"},"content":" String[] deadlineDescription \u003d task.substring(8).trim().split(\"/by\", 2);","lastModifiedDate":"2024-02-04"},{"lineNumber":78,"author":{"gitId":"LargeCrowd"},"content":" if (deadlineDescription.length !\u003d 2 || deadlineDescription[0].trim().isEmpty() ","lastModifiedDate":"2024-02-04"},{"lineNumber":79,"author":{"gitId":"LargeCrowd"},"content":" || deadlineDescription[1].trim().isEmpty()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":80,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Invalid input. Enter \u0027deadline \u003ctask\u003e /by \u003cDEADLINE\u003e\u0027\");","lastModifiedDate":"2024-02-04"},{"lineNumber":81,"author":{"gitId":"LargeCrowd"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":82,"author":{"gitId":"LargeCrowd"},"content":" String description \u003d deadlineDescription[0].trim();","lastModifiedDate":"2024-02-04"},{"lineNumber":83,"author":{"gitId":"LargeCrowd"},"content":" String by \u003d deadlineDescription[1].trim();","lastModifiedDate":"2024-02-04"},{"lineNumber":84,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":85,"author":{"gitId":"LargeCrowd"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-02-04"},{"lineNumber":86,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.add(newDeadline);","lastModifiedDate":"2024-02-04"},{"lineNumber":87,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":88,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Added deadline: \" + newDeadline.toString());","lastModifiedDate":"2024-02-04"},{"lineNumber":89,"author":{"gitId":"LargeCrowd"},"content":" storage.saveTaskListToFile();","lastModifiedDate":"2024-02-04"},{"lineNumber":90,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":91,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":92,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":93,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-04"},{"lineNumber":94,"author":{"gitId":"LargeCrowd"},"content":" * Adds eventTask to taskList","lastModifiedDate":"2024-02-04"},{"lineNumber":95,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-04"},{"lineNumber":96,"author":{"gitId":"LargeCrowd"},"content":" * @param task task to be added","lastModifiedDate":"2024-02-04"},{"lineNumber":97,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":98,"author":{"gitId":"LargeCrowd"},"content":" public void addEvent(String task) {","lastModifiedDate":"2024-02-04"},{"lineNumber":99,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":100,"author":{"gitId":"LargeCrowd"},"content":" String[] eventParts \u003d task.substring(6).trim().split(\"/from\");","lastModifiedDate":"2024-02-04"},{"lineNumber":101,"author":{"gitId":"LargeCrowd"},"content":" if (eventParts.length \u003d\u003d 2) {","lastModifiedDate":"2024-02-04"},{"lineNumber":102,"author":{"gitId":"LargeCrowd"},"content":" String[] durationParts \u003d eventParts[1].trim().split(\"/to\");","lastModifiedDate":"2024-02-04"},{"lineNumber":103,"author":{"gitId":"LargeCrowd"},"content":" if (durationParts.length \u003d\u003d 2) {","lastModifiedDate":"2024-02-04"},{"lineNumber":104,"author":{"gitId":"LargeCrowd"},"content":" String desc \u003d eventParts[0].trim();","lastModifiedDate":"2024-02-04"},{"lineNumber":105,"author":{"gitId":"LargeCrowd"},"content":" String from \u003d durationParts[0].trim();","lastModifiedDate":"2024-02-04"},{"lineNumber":106,"author":{"gitId":"LargeCrowd"},"content":" String to \u003d durationParts[1].trim();","lastModifiedDate":"2024-02-04"},{"lineNumber":107,"author":{"gitId":"LargeCrowd"},"content":" Events newEvent \u003d new Events(desc, from, to);","lastModifiedDate":"2024-02-04"},{"lineNumber":108,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.add(newEvent);","lastModifiedDate":"2024-02-04"},{"lineNumber":109,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":110,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Added event: \" + desc + \" (from: \" + from + \", to: \" + to + \")\");","lastModifiedDate":"2024-02-04"},{"lineNumber":111,"author":{"gitId":"LargeCrowd"},"content":" storage.saveTaskListToFile();","lastModifiedDate":"2024-02-04"},{"lineNumber":112,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"LargeCrowd"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":114,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Invalid input for event. Please use the format: event \u003ctask\u003e /from \u003cstart time\u003e /to \u003cend time\u003e\");","lastModifiedDate":"2024-02-04"},{"lineNumber":115,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":116,"author":{"gitId":"LargeCrowd"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":117,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Invalid input for event. Please use the format: event \u003ctask\u003e /from \u003cstart time\u003e /to \u003cend time\u003e\");","lastModifiedDate":"2024-02-04"},{"lineNumber":118,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":119,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":120,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":121,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-04"},{"lineNumber":122,"author":{"gitId":"LargeCrowd"},"content":" * Deletes task from taskList","lastModifiedDate":"2024-02-04"},{"lineNumber":123,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-04"},{"lineNumber":124,"author":{"gitId":"LargeCrowd"},"content":" * @param index index of task to be deleted","lastModifiedDate":"2024-02-04"},{"lineNumber":125,"author":{"gitId":"LargeCrowd"},"content":" * @throws IndexOutOfBoundsException if index is out of bounds","lastModifiedDate":"2024-02-04"},{"lineNumber":126,"author":{"gitId":"LargeCrowd"},"content":" * @throws NumberFormatException if input is not a number","lastModifiedDate":"2024-02-04"},{"lineNumber":127,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":128,"author":{"gitId":"LargeCrowd"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-02-04"},{"lineNumber":129,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":130,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Noted. I\u0027ve removed this task:\" + \"\\n\" + \"\\t\" ","lastModifiedDate":"2024-02-04"},{"lineNumber":131,"author":{"gitId":"LargeCrowd"},"content":" + \"[ \" + this.taskList.get(index) + \" ]\");","lastModifiedDate":"2024-02-04"},{"lineNumber":132,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.remove(index);","lastModifiedDate":"2024-02-04"},{"lineNumber":133,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"There are \" + this.taskList.size() + \" tasks in your list.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":134,"author":{"gitId":"LargeCrowd"},"content":" storage.saveTaskListToFile();","lastModifiedDate":"2024-02-04"},{"lineNumber":135,"author":{"gitId":"LargeCrowd"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":136,"author":{"gitId":"LargeCrowd"},"content":" ui.printInvalidTaskIndex();","lastModifiedDate":"2024-02-04"},{"lineNumber":137,"author":{"gitId":"LargeCrowd"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":138,"author":{"gitId":"LargeCrowd"},"content":" ui.printInvalidTaskIndex();","lastModifiedDate":"2024-02-04"},{"lineNumber":139,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":140,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":141,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":142,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":143,"author":{"gitId":"LargeCrowd"},"content":" * Returns task type","lastModifiedDate":"2024-02-04"},{"lineNumber":144,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-04"},{"lineNumber":145,"author":{"gitId":"LargeCrowd"},"content":" * @param task task to be added","lastModifiedDate":"2024-02-04"},{"lineNumber":146,"author":{"gitId":"LargeCrowd"},"content":" * @return TaskType","lastModifiedDate":"2024-02-04"},{"lineNumber":147,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":148,"author":{"gitId":"LargeCrowd"},"content":" public TaskType getTaskType(String task) {","lastModifiedDate":"2024-02-04"},{"lineNumber":149,"author":{"gitId":"LargeCrowd"},"content":" if (task.startsWith(\"todo\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":150,"author":{"gitId":"LargeCrowd"},"content":" return TaskType.TODO;","lastModifiedDate":"2024-02-04"},{"lineNumber":151,"author":{"gitId":"LargeCrowd"},"content":" } else if (task.startsWith(\"deadline\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":152,"author":{"gitId":"LargeCrowd"},"content":" return TaskType.DEADLINE;","lastModifiedDate":"2024-02-04"},{"lineNumber":153,"author":{"gitId":"LargeCrowd"},"content":" } else if (task.startsWith(\"event\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":154,"author":{"gitId":"LargeCrowd"},"content":" return TaskType.EVENT;","lastModifiedDate":"2024-02-04"},{"lineNumber":155,"author":{"gitId":"LargeCrowd"},"content":" } else if (task.equals(\"help\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":156,"author":{"gitId":"LargeCrowd"},"content":" return TaskType.HELP;","lastModifiedDate":"2024-02-04"},{"lineNumber":157,"author":{"gitId":"LargeCrowd"},"content":" } else { // if (task.startsWith(\"delete\"))","lastModifiedDate":"2024-02-06"},{"lineNumber":158,"author":{"gitId":"LargeCrowd"},"content":" return TaskType.DELETE;","lastModifiedDate":"2024-02-04"},{"lineNumber":159,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":160,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":161,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":162,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-04"},{"lineNumber":163,"author":{"gitId":"LargeCrowd"},"content":" * Marks task as done","lastModifiedDate":"2024-02-04"},{"lineNumber":164,"author":{"gitId":"LargeCrowd"},"content":" * If task is already done, prints error message","lastModifiedDate":"2024-02-04"},{"lineNumber":165,"author":{"gitId":"LargeCrowd"},"content":" * If task is undone, marks as done","lastModifiedDate":"2024-02-04"},{"lineNumber":166,"author":{"gitId":"LargeCrowd"},"content":" * If task does not exist, prints error message","lastModifiedDate":"2024-02-04"},{"lineNumber":167,"author":{"gitId":"LargeCrowd"},"content":" * If input is not a number, prints error message","lastModifiedDate":"2024-02-04"},{"lineNumber":168,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-04"},{"lineNumber":169,"author":{"gitId":"LargeCrowd"},"content":" * @param index index of task to be marked as done","lastModifiedDate":"2024-02-04"},{"lineNumber":170,"author":{"gitId":"LargeCrowd"},"content":" * @throws IndexOutOfBoundsException if index is out of bounds","lastModifiedDate":"2024-02-04"},{"lineNumber":171,"author":{"gitId":"LargeCrowd"},"content":" * @throws NumberFormatException if input is not a number","lastModifiedDate":"2024-02-04"},{"lineNumber":172,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":173,"author":{"gitId":"LargeCrowd"},"content":" public void markDone(int index) {","lastModifiedDate":"2024-02-04"},{"lineNumber":174,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":175,"author":{"gitId":"LargeCrowd"},"content":" if (this.taskList.get(index).isDone()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":176,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"You completed this task already!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":177,"author":{"gitId":"LargeCrowd"},"content":" ui.printLine();","lastModifiedDate":"2024-02-04"},{"lineNumber":178,"author":{"gitId":"LargeCrowd"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":179,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.get(index).markDone();","lastModifiedDate":"2024-02-04"},{"lineNumber":180,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Good job completing the task!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":181,"author":{"gitId":"LargeCrowd"},"content":" storage.saveTaskListToFile();","lastModifiedDate":"2024-02-04"},{"lineNumber":182,"author":{"gitId":"LargeCrowd"},"content":" printList();","lastModifiedDate":"2024-02-04"},{"lineNumber":183,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":184,"author":{"gitId":"LargeCrowd"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":185,"author":{"gitId":"LargeCrowd"},"content":" ui.printInvalidTaskIndex();","lastModifiedDate":"2024-02-04"},{"lineNumber":186,"author":{"gitId":"LargeCrowd"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":187,"author":{"gitId":"LargeCrowd"},"content":" ui.printInvalidTaskIndex();","lastModifiedDate":"2024-02-04"},{"lineNumber":188,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":189,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":190,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":191,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-04"},{"lineNumber":192,"author":{"gitId":"LargeCrowd"},"content":" * Marks task as undone","lastModifiedDate":"2024-02-04"},{"lineNumber":193,"author":{"gitId":"LargeCrowd"},"content":" * If task is already undone, prints error message","lastModifiedDate":"2024-02-04"},{"lineNumber":194,"author":{"gitId":"LargeCrowd"},"content":" * If task is done, marks as undone","lastModifiedDate":"2024-02-04"},{"lineNumber":195,"author":{"gitId":"LargeCrowd"},"content":" * If task does not exist, prints error message","lastModifiedDate":"2024-02-04"},{"lineNumber":196,"author":{"gitId":"LargeCrowd"},"content":" * If input is not a number, prints error message","lastModifiedDate":"2024-02-04"},{"lineNumber":197,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-04"},{"lineNumber":198,"author":{"gitId":"LargeCrowd"},"content":" * @param index index of task to be marked as undone","lastModifiedDate":"2024-02-04"},{"lineNumber":199,"author":{"gitId":"LargeCrowd"},"content":" * @throws IndexOutOfBoundsException if index is out of bounds","lastModifiedDate":"2024-02-04"},{"lineNumber":200,"author":{"gitId":"LargeCrowd"},"content":" * @throws NumberFormatException if input is not a number","lastModifiedDate":"2024-02-04"},{"lineNumber":201,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":202,"author":{"gitId":"LargeCrowd"},"content":" public void markUndone(int index) {","lastModifiedDate":"2024-02-04"},{"lineNumber":203,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":204,"author":{"gitId":"LargeCrowd"},"content":" if (!this.taskList.get(index).isDone()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":205,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Oops! You still haven\u0027t done this task!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":206,"author":{"gitId":"LargeCrowd"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":207,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.get(index).markUndone();","lastModifiedDate":"2024-02-04"},{"lineNumber":208,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Better get to it soon!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":209,"author":{"gitId":"LargeCrowd"},"content":" storage.saveTaskListToFile();","lastModifiedDate":"2024-02-04"},{"lineNumber":210,"author":{"gitId":"LargeCrowd"},"content":" printList();","lastModifiedDate":"2024-02-04"},{"lineNumber":211,"author":{"gitId":"LargeCrowd"},"content":" ui.printLine();","lastModifiedDate":"2024-02-04"},{"lineNumber":212,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":213,"author":{"gitId":"LargeCrowd"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":214,"author":{"gitId":"LargeCrowd"},"content":" ui.printInvalidTaskIndex();","lastModifiedDate":"2024-02-04"},{"lineNumber":215,"author":{"gitId":"LargeCrowd"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":216,"author":{"gitId":"LargeCrowd"},"content":" ui.printInvalidTaskIndex();","lastModifiedDate":"2024-02-04"},{"lineNumber":217,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":218,"author":{"gitId":"LargeCrowd"},"content":" } ","lastModifiedDate":"2024-02-04"},{"lineNumber":219,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":220,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-04"},{"lineNumber":221,"author":{"gitId":"LargeCrowd"},"content":" * Prints taskList","lastModifiedDate":"2024-02-04"},{"lineNumber":222,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":223,"author":{"gitId":"LargeCrowd"},"content":" public void printList() {","lastModifiedDate":"2024-02-04"},{"lineNumber":224,"author":{"gitId":"LargeCrowd"},"content":" if (this.taskList.isEmpty()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":225,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Your tasklist is empty\");","lastModifiedDate":"2024-02-04"},{"lineNumber":226,"author":{"gitId":"LargeCrowd"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":227,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Here is your to-do list:\");","lastModifiedDate":"2024-02-04"},{"lineNumber":228,"author":{"gitId":"LargeCrowd"},"content":" this.taskIndex \u003d 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":229,"author":{"gitId":"LargeCrowd"},"content":" for (Task task : this.taskList) {","lastModifiedDate":"2024-02-04"},{"lineNumber":230,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + this.taskIndex + \". \" + task);","lastModifiedDate":"2024-02-04"},{"lineNumber":231,"author":{"gitId":"LargeCrowd"},"content":" this.taskIndex++;","lastModifiedDate":"2024-02-04"},{"lineNumber":232,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":233,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":234,"author":{"gitId":"LargeCrowd"},"content":" ui.printLine();","lastModifiedDate":"2024-02-04"},{"lineNumber":235,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":236,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"LargeCrowd":236}},{"path":"src/main/java/duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":" * Todo class","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":" public Todo (String description) {","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":" super(description);","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":" protected String getTaskType() {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":" return \"T\";","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":" return super.toString();","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"LargeCrowd":19}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":"public class Ui {","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":" private static final String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":" private Scanner scanner;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":" public Ui() {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" * Prints the greeting message","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":" public void showGreeting() {","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" printLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":" showHelp();","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":" printLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"LargeCrowd"},"content":" * Prints the exit message","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"LargeCrowd"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"LargeCrowd"},"content":" * Handles user input","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"LargeCrowd"},"content":" * @return String user input","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"LargeCrowd"},"content":" public String getUserInput() {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"Enter a task below: \");","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"LargeCrowd"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"LargeCrowd"},"content":" * Close the scanner","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"LargeCrowd"},"content":" public void closeScanner() {","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"LargeCrowd"},"content":" scanner.close();","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"LargeCrowd"},"content":" * Prints the line","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"LargeCrowd"},"content":" public void printLine() {","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"LargeCrowd"},"content":" * Prints list of available commands","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"LargeCrowd"},"content":" public void showHelp() {","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Help: \");","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"LargeCrowd"},"content":" String[] instructions \u003d {","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"LargeCrowd"},"content":" \"DISPLAY LIST: list\",","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"LargeCrowd"},"content":" \"ADD TODO: todo \u003cTASK NAME\u003e\",","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"LargeCrowd"},"content":" \"ADD DEADLINE: deadline \u003cTASK NAME\u003e /by \u003cDD/MM/YYYY\u003e\",","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"LargeCrowd"},"content":" \"ADD EVENT: event \u003cTASK NAME\u003e /from \u003cDD/MM/YYYY\u003e /to \u003cDD/MM/YYYY\u003e\",","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"LargeCrowd"},"content":" \"MARK DONE: mark done \u003cINDEX\u003e\",","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"LargeCrowd"},"content":" \"MARK UNDONE: mark undone \u003cINDEX\u003e\",","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"LargeCrowd"},"content":" \"DELETE TASK: delete \u003cINDEX\u003e\",","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"LargeCrowd"},"content":" \"EXIT: bye\"","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"LargeCrowd"},"content":" };","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"LargeCrowd"},"content":" for (int i \u003d 0; i \u003c instructions.length; i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + (i + 1) + \". \" + instructions[i]);","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"LargeCrowd"},"content":" * Invalid task index message","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"LargeCrowd"},"content":" public void printInvalidTaskIndex() {","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Oops, that wasn\u0027t a valid task index :P\");","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"LargeCrowd":79}},{"path":"src/test/java/duke/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":"public class TodoTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":" public void dummyTest(){","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":" assertEquals(2, 2);","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":" public void anotherDummyTest(){","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":" assertEquals(4, 4);","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"LargeCrowd":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"todo Buy groceries","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"deadline Submit report /by some-time-later","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"event Team meeting /from abc /to xyz","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":"help","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":"mark done 1","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":"mark undone 2","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":"delete 3","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":"bye","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"LargeCrowd":9}}] +[{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":" * Deadline class","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":" protected LocalDate byDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":" protected String byString;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":" * Constructor for Deadline","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":" * @param description","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":" * @param by","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":" * @throws DateTimeException","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"LargeCrowd"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"LargeCrowd"},"content":" super(description);","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"LargeCrowd"},"content":" this.byString \u003d by;","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"LargeCrowd"},"content":" this.byDate \u003d parseDate(by, DATE_FORMAT_1, DATE_FORMAT_2, ","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"LargeCrowd"},"content":" DATE_FORMAT_3, DATE_FORMAT_4); // Parse the by string","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"LargeCrowd"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"LargeCrowd"},"content":" throw new DateTimeException(\"Error parsing date in Deadline: \" + e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"LargeCrowd"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"LargeCrowd"},"content":" protected String getTaskType() {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"LargeCrowd"},"content":" return \"D\";","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"LargeCrowd"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"LargeCrowd"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"LargeCrowd"},"content":" DateTimeFormatter displayFormatter \u003d DATE_FORMAT_4;","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"LargeCrowd"},"content":" return super.toString() + \" (by: \" + byDate.format(displayFormatter) + \")\";","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"LargeCrowd":42}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":" * Main class","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":"public class Duke {","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":" private Storage storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":" private ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":" private Parser parser;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":" private Ui ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":" * Constructor for Duke","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":" public Duke() {","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":" this.storage \u003d new Storage(taskList);","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"LargeCrowd"},"content":" storage.loadTaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"LargeCrowd"},"content":" this.tasks \u003d new TaskList(storage, taskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"LargeCrowd"},"content":" this.parser \u003d new Parser(tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"LargeCrowd"},"content":" * Starts the program","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"LargeCrowd"},"content":" * @throws IndexOutOfBoundsException if index is out of bounds","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"LargeCrowd"},"content":" * @throws NumberFormatException if input is not a number","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"LargeCrowd"},"content":" * @throws StringIndexOutOfBoundsException if input is not a number","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"LargeCrowd"},"content":" public void start() {","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"LargeCrowd"},"content":" ui.showGreeting();","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"LargeCrowd"},"content":" String input \u003d ui.getUserInput();","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"LargeCrowd"},"content":" while (true) {","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"LargeCrowd"},"content":" ui.printLine();","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"LargeCrowd"},"content":" if (!parser.executeUserInput(input)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"LargeCrowd"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"LargeCrowd"},"content":" input \u003d ui.getUserInput();","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"LargeCrowd"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"LargeCrowd"},"content":" ui.closeScanner();","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"LargeCrowd"},"content":" * Main method","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"LargeCrowd"},"content":" * @param args","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"LargeCrowd"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"LargeCrowd"},"content":" Duke mainApp \u003d new Duke();","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"LargeCrowd"},"content":" mainApp.start();","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"LargeCrowd"},"content":" } ","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"LargeCrowd":60}},{"path":"src/main/java/duke/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":" * Events class","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":"public class Events extends Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":" protected LocalDate fromDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":" protected LocalDate toDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" protected String fromString;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":" protected String toString;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":" * Constructor for Events","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":" * @param description","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"LargeCrowd"},"content":" * @param from","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"LargeCrowd"},"content":" * @param to","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"LargeCrowd"},"content":" * @throws DateTimeException","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"LargeCrowd"},"content":" public Events(String description, String from, String to) {","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"LargeCrowd"},"content":" super(description);","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"LargeCrowd"},"content":" this.fromString \u003d from;","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"LargeCrowd"},"content":" this.toString \u003d to;","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"LargeCrowd"},"content":" this.fromDate \u003d parseDate(from, DATE_FORMAT_1, DATE_FORMAT_2, ","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"LargeCrowd"},"content":" DATE_FORMAT_3, DATE_FORMAT_4); // Parse the from string","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"LargeCrowd"},"content":" this.toDate \u003d parseDate( ","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"LargeCrowd"},"content":" to, DATE_FORMAT_1,DATE_FORMAT_2, ","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"LargeCrowd"},"content":" DATE_FORMAT_3, DATE_FORMAT_4); // Parse the to string","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"LargeCrowd"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"LargeCrowd"},"content":" throw new DateTimeException(\"Error parsing date in Events: \" + e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"LargeCrowd"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"LargeCrowd"},"content":" protected String getTaskType() {","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"LargeCrowd"},"content":" return \"E\";","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"LargeCrowd"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"LargeCrowd"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"LargeCrowd"},"content":" DateTimeFormatter displayFormatter \u003d DATE_FORMAT_4;","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"LargeCrowd"},"content":" return super.toString() + \" (from: \" + fromDate.format(displayFormatter) + \", to: \" ","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"LargeCrowd"},"content":" + toDate.format(displayFormatter) + \")\";","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"LargeCrowd":50}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":" * This class is responsible for making sense of the user input","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":"public class Parser {","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":" private Ui ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":" private TaskList taskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":" * Constructor for Parser ","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" * @param taskList","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":" public Parser(TaskList taskList) {","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"LargeCrowd"},"content":" * Executes user input","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"LargeCrowd"},"content":" * @param input user input","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"LargeCrowd"},"content":" * @return boolean","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"LargeCrowd"},"content":" */ ","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"LargeCrowd"},"content":" public boolean executeUserInput(String input) {","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"LargeCrowd"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"LargeCrowd"},"content":" return false;","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"LargeCrowd"},"content":" if (input.equals(\"list\")) { // show list","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"LargeCrowd"},"content":" taskList.printList();","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"LargeCrowd"},"content":" } else if (input.startsWith(\"mark done\")) { // mark as done","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"LargeCrowd"},"content":" int index \u003d Integer.parseInt(input.substring(9).trim()) - 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"LargeCrowd"},"content":" taskList.markDone(index);","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"LargeCrowd"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"LargeCrowd"},"content":" ui.printInvalidTaskIndex();","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"LargeCrowd"},"content":" } else if (input.startsWith(\"mark undone\")) { // mark as undone","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"LargeCrowd"},"content":" int index \u003d Integer.parseInt(input.substring(11).trim()) - 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"LargeCrowd"},"content":" taskList.markUndone(index);","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"LargeCrowd"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"LargeCrowd"},"content":" ui.printInvalidTaskIndex();","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"LargeCrowd"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"LargeCrowd"},"content":" taskList.addTask(input);","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"LargeCrowd"},"content":" return true;","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"LargeCrowd":52}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":"public class Storage {","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" private static final String FOLDER_PATH \u003d \"./tasklist\";","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":" private static final String TASKLIST_PATH \u003d FOLDER_PATH + \"/tasklist.txt\";","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":" private Path taskListPath \u003d Paths.get(TASKLIST_PATH);","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" private Path folderPath \u003d Paths.get(FOLDER_PATH);","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"LargeCrowd"},"content":" * Constructor for Storage","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"LargeCrowd"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"LargeCrowd"},"content":" * @param taskList","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"LargeCrowd"},"content":" public Storage(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"LargeCrowd"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"LargeCrowd"},"content":" createTaskList();","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"LargeCrowd"},"content":" * Loads taskList from file","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"LargeCrowd"},"content":" public void loadTaskList() {","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"LargeCrowd"},"content":" // Clear existing tasks before loading","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.clear();","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"LargeCrowd"},"content":" // Load tasks from file","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"LargeCrowd"},"content":" ArrayList\u003cString\u003e taskListFromFile \u003d new ArrayList\u003c\u003e(Files.readAllLines(taskListPath));","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"LargeCrowd"},"content":" // For each task in the file, add it to the taskList","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"LargeCrowd"},"content":" for (String task : taskListFromFile) {","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"LargeCrowd"},"content":" String[] taskParts \u003d task.split(\" \\\\| \", 3);","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"LargeCrowd"},"content":" String taskType \u003d taskParts[0];","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"LargeCrowd"},"content":" String taskStatus \u003d taskParts[1];","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"LargeCrowd"},"content":" String taskDescription \u003d taskParts[2];","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"LargeCrowd"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"LargeCrowd"},"content":" case \"T\":","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"LargeCrowd"},"content":" Todo newTodo \u003d new Todo(taskDescription);","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"LargeCrowd"},"content":" if (taskStatus.equals(\"done\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"LargeCrowd"},"content":" newTodo.markDone();","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.add(newTodo);","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"LargeCrowd"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"LargeCrowd"},"content":" case \"D\":","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"LargeCrowd"},"content":" String[] deadlineParts \u003d taskDescription.split(\" \\\\(by: \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"LargeCrowd"},"content":" String deadlineDescription \u003d deadlineParts[0];","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"LargeCrowd"},"content":" String deadlineByDateTime \u003d deadlineParts[1]","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"LargeCrowd"},"content":" .substring(0, deadlineParts[1].length() - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"LargeCrowd"},"content":" Deadline newDeadline \u003d new Deadline(deadlineDescription, deadlineByDateTime);","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"LargeCrowd"},"content":" if (taskStatus.equals(\"done\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"LargeCrowd"},"content":" newDeadline.markDone();","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.add(newDeadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"LargeCrowd"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"LargeCrowd"},"content":" case \"E\":","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"LargeCrowd"},"content":" String[] eventParts \u003d taskDescription.split(\" \\\\(from: \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"LargeCrowd"},"content":" String eventDescription \u003d eventParts[0];","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"LargeCrowd"},"content":" String eventAt \u003d eventParts[1].substring(0, eventParts[1].length() - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"LargeCrowd"},"content":" String[] eventAtParts \u003d eventAt.split(\", to: \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"LargeCrowd"},"content":" String eventFrom \u003d eventAtParts[0];","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"LargeCrowd"},"content":" String eventTo \u003d eventAtParts[1];","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"LargeCrowd"},"content":" Events newEvent \u003d new Events(eventDescription, eventFrom, eventTo);","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"LargeCrowd"},"content":" if (taskStatus.equals(\"done\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"LargeCrowd"},"content":" newEvent.markDone();","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.add(newEvent);","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"LargeCrowd"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"LargeCrowd"},"content":" default:","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"Unrecognized task type: \" + task);","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"LargeCrowd"},"content":" throw new IOException(\"Error loading data from file: unrecognized task type\");","lastModifiedDate":"2024-02-04"},{"lineNumber":87,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"LargeCrowd"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"Error loading data from file: \" + e.getMessage());","lastModifiedDate":"2024-02-04"},{"lineNumber":91,"author":{"gitId":"LargeCrowd"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"LargeCrowd"},"content":" * Saves taskList to file","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"LargeCrowd"},"content":" public void saveTaskListToFile() {","lastModifiedDate":"2024-02-04"},{"lineNumber":99,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"LargeCrowd"},"content":" ArrayList\u003cString\u003e newTaskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"LargeCrowd"},"content":" for (Task task : this.taskList) {","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"LargeCrowd"},"content":" newTaskList.add(task.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"LargeCrowd"},"content":" Files.write(taskListPath, newTaskList);","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"LargeCrowd"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"Error saving data to file: \" + e.getMessage());","lastModifiedDate":"2024-02-04"},{"lineNumber":109,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":110,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":111,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":112,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-07"},{"lineNumber":113,"author":{"gitId":"LargeCrowd"},"content":" * Creates taskList and tasklist.txt if they do not exist","lastModifiedDate":"2024-02-07"},{"lineNumber":114,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":115,"author":{"gitId":"LargeCrowd"},"content":" private void createTaskList() {","lastModifiedDate":"2024-02-04"},{"lineNumber":116,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":117,"author":{"gitId":"LargeCrowd"},"content":" if (Files.notExists(folderPath)) {","lastModifiedDate":"2024-02-04"},{"lineNumber":118,"author":{"gitId":"LargeCrowd"},"content":" Files.createDirectories(folderPath);","lastModifiedDate":"2024-02-04"},{"lineNumber":119,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":120,"author":{"gitId":"LargeCrowd"},"content":" if (Files.notExists(taskListPath)) {","lastModifiedDate":"2024-02-04"},{"lineNumber":121,"author":{"gitId":"LargeCrowd"},"content":" Files.createFile(taskListPath);","lastModifiedDate":"2024-02-04"},{"lineNumber":122,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":123,"author":{"gitId":"LargeCrowd"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":124,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"Error creating tasklist: \" + e.getMessage());","lastModifiedDate":"2024-02-04"},{"lineNumber":125,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":126,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":127,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"LargeCrowd":127}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":"import java.util.Locale;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":" * Task class","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":"public class Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":" protected String task;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":" protected boolean isDone;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" protected DateTimeFormatter DATE_FORMAT_1 \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy\", Locale.ENGLISH);","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":" protected DateTimeFormatter DATE_FORMAT_2 \u003d DateTimeFormatter.ofPattern(\"yyyy-M-d\", Locale.ENGLISH);","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":" protected DateTimeFormatter DATE_FORMAT_3 \u003d DateTimeFormatter.ofPattern(\"d-M-yyyy\", Locale.ENGLISH);","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" protected DateTimeFormatter DATE_FORMAT_4 \u003d DateTimeFormatter.ofPattern(\"d MMM yyyy\", Locale.ENGLISH);","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"LargeCrowd"},"content":" * Constructor for Task","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"LargeCrowd"},"content":" * @param task","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"LargeCrowd"},"content":" public Task(String task) {","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"LargeCrowd"},"content":" this.task \u003d task;","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"LargeCrowd"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"LargeCrowd"},"content":" * Mark task as done","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"LargeCrowd"},"content":" public void markDone() {","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"LargeCrowd"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"LargeCrowd"},"content":" * Mark task as undone","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"LargeCrowd"},"content":" public void markUndone() {","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"LargeCrowd"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"LargeCrowd"},"content":" * Check if task is done","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"LargeCrowd"},"content":" * @return boolean","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"LargeCrowd"},"content":" public boolean isDone() {","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"LargeCrowd"},"content":" return this.isDone;","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"LargeCrowd"},"content":" protected String getTaskType() {","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"LargeCrowd"},"content":" return \"\";","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"LargeCrowd"},"content":" public String getTaskStatus() {","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"LargeCrowd"},"content":" return this.isDone ? \"done\" : \"not done\";","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"LargeCrowd"},"content":" * Parse the date string and return a LocalDate object","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"LargeCrowd"},"content":" * @param by","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"LargeCrowd"},"content":" * @param formatters","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"LargeCrowd"},"content":" * @return LocalDate","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"LargeCrowd"},"content":" * @throws IllegalArgumentException","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"LargeCrowd"},"content":" * @throws Exception","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"LargeCrowd"},"content":" protected static LocalDate parseDate(String by, DateTimeFormatter... formatters) {","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"LargeCrowd"},"content":" for (DateTimeFormatter formatter : formatters) {","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"LargeCrowd"},"content":" return LocalDate.parse(by, formatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"LargeCrowd"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"LargeCrowd"},"content":" // Try the next format","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"LargeCrowd"},"content":" // If none of the formats match, you may want to handle this case","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"LargeCrowd"},"content":" throw new IllegalArgumentException(\"Date could not be parsed with any of the provided formats\");","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"LargeCrowd"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"LargeCrowd"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"LargeCrowd"},"content":" return getTaskType() + \" | \" + getTaskStatus() + \" | \" + this.task;","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"LargeCrowd"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"LargeCrowd"},"content":" * TaskType enum","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"LargeCrowd"},"content":"enum TaskType {","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"LargeCrowd"},"content":" TODO,","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"LargeCrowd"},"content":" DEADLINE,","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"LargeCrowd"},"content":" EVENT,","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"LargeCrowd"},"content":" HELP,","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"LargeCrowd"},"content":" DELETE","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"LargeCrowd":93}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":"public class TaskList {","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":" private Ui ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":" private int taskIndex;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":" private Storage storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":" public TaskList(Storage storage, ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":" * Adds task to taskList","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":" * @param task task to be added","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"LargeCrowd"},"content":" public void addTask(String task) {","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"LargeCrowd"},"content":" TaskType taskType \u003d getTaskType(task);","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"LargeCrowd"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"LargeCrowd"},"content":" case TODO:","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"LargeCrowd"},"content":" addTodoTask(task);","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"LargeCrowd"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"LargeCrowd"},"content":" case DEADLINE:","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"LargeCrowd"},"content":" addDeadline(task);","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"LargeCrowd"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"LargeCrowd"},"content":" case EVENT:","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"LargeCrowd"},"content":" addEvent(task);","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"LargeCrowd"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"LargeCrowd"},"content":" case HELP:","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"LargeCrowd"},"content":" ui.showHelp();","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"LargeCrowd"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"LargeCrowd"},"content":" case DELETE:","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"LargeCrowd"},"content":" int index \u003d Integer.parseInt(task.substring(6).trim()) - 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"LargeCrowd"},"content":" deleteTask(index);","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"LargeCrowd"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Invalid input. Please enter a valid task index.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"LargeCrowd"},"content":" break;","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"LargeCrowd"},"content":" default:","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Sorry, that\u0027s not a command :( Enter \u0027help\u0027 for instructions.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"LargeCrowd"},"content":" ui.printLine();","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"LargeCrowd"},"content":" * Adds todoTask to taskList","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"LargeCrowd"},"content":" * @param task task to be added","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"LargeCrowd"},"content":" public void addTodoTask(String task) {","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"LargeCrowd"},"content":" String todoDescription \u003d task.substring(4).trim();","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"LargeCrowd"},"content":" if (todoDescription.isEmpty()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Invalid input. Please enter a valid todo task.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"LargeCrowd"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"LargeCrowd"},"content":" Todo newTodo \u003d new Todo (todoDescription);","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.add(newTodo);","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":65,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Added todo: \" + todoDescription);","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"LargeCrowd"},"content":" storage.saveTaskListToFile();","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"LargeCrowd"},"content":" * Adds deadline to taskList","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"LargeCrowd"},"content":" * @param task task to be added","lastModifiedDate":"2024-02-04"},{"lineNumber":74,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":75,"author":{"gitId":"LargeCrowd"},"content":" public void addDeadline(String task) {","lastModifiedDate":"2024-02-04"},{"lineNumber":76,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":77,"author":{"gitId":"LargeCrowd"},"content":" String[] deadlineDescription \u003d task.substring(8).trim().split(\"/by\", 2);","lastModifiedDate":"2024-02-04"},{"lineNumber":78,"author":{"gitId":"LargeCrowd"},"content":" if (deadlineDescription.length !\u003d 2 || deadlineDescription[0].trim().isEmpty() ","lastModifiedDate":"2024-02-04"},{"lineNumber":79,"author":{"gitId":"LargeCrowd"},"content":" || deadlineDescription[1].trim().isEmpty()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":80,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Invalid input. Enter \u0027deadline \u003ctask\u003e /by \u003cDEADLINE\u003e\u0027\");","lastModifiedDate":"2024-02-04"},{"lineNumber":81,"author":{"gitId":"LargeCrowd"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":82,"author":{"gitId":"LargeCrowd"},"content":" String description \u003d deadlineDescription[0].trim();","lastModifiedDate":"2024-02-04"},{"lineNumber":83,"author":{"gitId":"LargeCrowd"},"content":" String by \u003d deadlineDescription[1].trim();","lastModifiedDate":"2024-02-04"},{"lineNumber":84,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":85,"author":{"gitId":"LargeCrowd"},"content":" Deadline newDeadline \u003d new Deadline(description, by);","lastModifiedDate":"2024-02-04"},{"lineNumber":86,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.add(newDeadline);","lastModifiedDate":"2024-02-04"},{"lineNumber":87,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":88,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Added deadline: \" + newDeadline.toString());","lastModifiedDate":"2024-02-04"},{"lineNumber":89,"author":{"gitId":"LargeCrowd"},"content":" storage.saveTaskListToFile();","lastModifiedDate":"2024-02-04"},{"lineNumber":90,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":91,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":92,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":93,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-04"},{"lineNumber":94,"author":{"gitId":"LargeCrowd"},"content":" * Adds eventTask to taskList","lastModifiedDate":"2024-02-04"},{"lineNumber":95,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-04"},{"lineNumber":96,"author":{"gitId":"LargeCrowd"},"content":" * @param task task to be added","lastModifiedDate":"2024-02-04"},{"lineNumber":97,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":98,"author":{"gitId":"LargeCrowd"},"content":" public void addEvent(String task) {","lastModifiedDate":"2024-02-04"},{"lineNumber":99,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":100,"author":{"gitId":"LargeCrowd"},"content":" String[] eventParts \u003d task.substring(6).trim().split(\"/from\");","lastModifiedDate":"2024-02-04"},{"lineNumber":101,"author":{"gitId":"LargeCrowd"},"content":" if (eventParts.length \u003d\u003d 2) {","lastModifiedDate":"2024-02-04"},{"lineNumber":102,"author":{"gitId":"LargeCrowd"},"content":" String[] durationParts \u003d eventParts[1].trim().split(\"/to\");","lastModifiedDate":"2024-02-04"},{"lineNumber":103,"author":{"gitId":"LargeCrowd"},"content":" if (durationParts.length \u003d\u003d 2) {","lastModifiedDate":"2024-02-04"},{"lineNumber":104,"author":{"gitId":"LargeCrowd"},"content":" String desc \u003d eventParts[0].trim();","lastModifiedDate":"2024-02-04"},{"lineNumber":105,"author":{"gitId":"LargeCrowd"},"content":" String from \u003d durationParts[0].trim();","lastModifiedDate":"2024-02-04"},{"lineNumber":106,"author":{"gitId":"LargeCrowd"},"content":" String to \u003d durationParts[1].trim();","lastModifiedDate":"2024-02-04"},{"lineNumber":107,"author":{"gitId":"LargeCrowd"},"content":" Events newEvent \u003d new Events(desc, from, to);","lastModifiedDate":"2024-02-04"},{"lineNumber":108,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.add(newEvent);","lastModifiedDate":"2024-02-04"},{"lineNumber":109,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-04"},{"lineNumber":110,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Added event: \" + desc + \" (from: \" + from + \", to: \" + to + \")\");","lastModifiedDate":"2024-02-04"},{"lineNumber":111,"author":{"gitId":"LargeCrowd"},"content":" storage.saveTaskListToFile();","lastModifiedDate":"2024-02-04"},{"lineNumber":112,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"LargeCrowd"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":114,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Invalid input for event. \"","lastModifiedDate":"2024-02-07"},{"lineNumber":115,"author":{"gitId":"LargeCrowd"},"content":" + \"Please use the format: event \u003ctask\u003e /from \u003cstart time\u003e /to \u003cend time\u003e\");","lastModifiedDate":"2024-02-07"},{"lineNumber":116,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":117,"author":{"gitId":"LargeCrowd"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":118,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Invalid input for event. \"","lastModifiedDate":"2024-02-07"},{"lineNumber":119,"author":{"gitId":"LargeCrowd"},"content":" + \"Please use the format: event \u003ctask\u003e /from \u003cstart time\u003e /to \u003cend time\u003e\");","lastModifiedDate":"2024-02-07"},{"lineNumber":120,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":121,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":122,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":123,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-04"},{"lineNumber":124,"author":{"gitId":"LargeCrowd"},"content":" * Deletes task from taskList","lastModifiedDate":"2024-02-04"},{"lineNumber":125,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-04"},{"lineNumber":126,"author":{"gitId":"LargeCrowd"},"content":" * @param index index of task to be deleted","lastModifiedDate":"2024-02-04"},{"lineNumber":127,"author":{"gitId":"LargeCrowd"},"content":" * @throws IndexOutOfBoundsException if index is out of bounds","lastModifiedDate":"2024-02-04"},{"lineNumber":128,"author":{"gitId":"LargeCrowd"},"content":" * @throws NumberFormatException if input is not a number","lastModifiedDate":"2024-02-04"},{"lineNumber":129,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":130,"author":{"gitId":"LargeCrowd"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-02-04"},{"lineNumber":131,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":132,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Noted. I\u0027ve removed this task:\" + \"\\n\" + \"\\t\" ","lastModifiedDate":"2024-02-04"},{"lineNumber":133,"author":{"gitId":"LargeCrowd"},"content":" + \"[ \" + this.taskList.get(index) + \" ]\");","lastModifiedDate":"2024-02-04"},{"lineNumber":134,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.remove(index);","lastModifiedDate":"2024-02-04"},{"lineNumber":135,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"There are \" + this.taskList.size() + \" tasks in your list.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":136,"author":{"gitId":"LargeCrowd"},"content":" storage.saveTaskListToFile();","lastModifiedDate":"2024-02-04"},{"lineNumber":137,"author":{"gitId":"LargeCrowd"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":138,"author":{"gitId":"LargeCrowd"},"content":" ui.printInvalidTaskIndex();","lastModifiedDate":"2024-02-04"},{"lineNumber":139,"author":{"gitId":"LargeCrowd"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":140,"author":{"gitId":"LargeCrowd"},"content":" ui.printInvalidTaskIndex();","lastModifiedDate":"2024-02-04"},{"lineNumber":141,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":142,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":143,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":144,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":145,"author":{"gitId":"LargeCrowd"},"content":" * Returns task type","lastModifiedDate":"2024-02-04"},{"lineNumber":146,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-04"},{"lineNumber":147,"author":{"gitId":"LargeCrowd"},"content":" * @param task task to be added","lastModifiedDate":"2024-02-04"},{"lineNumber":148,"author":{"gitId":"LargeCrowd"},"content":" * @return TaskType","lastModifiedDate":"2024-02-04"},{"lineNumber":149,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":150,"author":{"gitId":"LargeCrowd"},"content":" public TaskType getTaskType(String task) {","lastModifiedDate":"2024-02-04"},{"lineNumber":151,"author":{"gitId":"LargeCrowd"},"content":" if (task.startsWith(\"todo\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":152,"author":{"gitId":"LargeCrowd"},"content":" return TaskType.TODO;","lastModifiedDate":"2024-02-04"},{"lineNumber":153,"author":{"gitId":"LargeCrowd"},"content":" } else if (task.startsWith(\"deadline\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":154,"author":{"gitId":"LargeCrowd"},"content":" return TaskType.DEADLINE;","lastModifiedDate":"2024-02-04"},{"lineNumber":155,"author":{"gitId":"LargeCrowd"},"content":" } else if (task.startsWith(\"event\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":156,"author":{"gitId":"LargeCrowd"},"content":" return TaskType.EVENT;","lastModifiedDate":"2024-02-04"},{"lineNumber":157,"author":{"gitId":"LargeCrowd"},"content":" } else if (task.equals(\"help\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":158,"author":{"gitId":"LargeCrowd"},"content":" return TaskType.HELP;","lastModifiedDate":"2024-02-04"},{"lineNumber":159,"author":{"gitId":"LargeCrowd"},"content":" } else { // if (task.startsWith(\"delete\"))","lastModifiedDate":"2024-02-06"},{"lineNumber":160,"author":{"gitId":"LargeCrowd"},"content":" return TaskType.DELETE;","lastModifiedDate":"2024-02-04"},{"lineNumber":161,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":162,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":163,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":164,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-04"},{"lineNumber":165,"author":{"gitId":"LargeCrowd"},"content":" * Marks task as done","lastModifiedDate":"2024-02-04"},{"lineNumber":166,"author":{"gitId":"LargeCrowd"},"content":" * If task is already done, prints error message","lastModifiedDate":"2024-02-04"},{"lineNumber":167,"author":{"gitId":"LargeCrowd"},"content":" * If task is undone, marks as done","lastModifiedDate":"2024-02-04"},{"lineNumber":168,"author":{"gitId":"LargeCrowd"},"content":" * If task does not exist, prints error message","lastModifiedDate":"2024-02-04"},{"lineNumber":169,"author":{"gitId":"LargeCrowd"},"content":" * If input is not a number, prints error message","lastModifiedDate":"2024-02-04"},{"lineNumber":170,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-04"},{"lineNumber":171,"author":{"gitId":"LargeCrowd"},"content":" * @param index index of task to be marked as done","lastModifiedDate":"2024-02-04"},{"lineNumber":172,"author":{"gitId":"LargeCrowd"},"content":" * @throws IndexOutOfBoundsException if index is out of bounds","lastModifiedDate":"2024-02-04"},{"lineNumber":173,"author":{"gitId":"LargeCrowd"},"content":" * @throws NumberFormatException if input is not a number","lastModifiedDate":"2024-02-04"},{"lineNumber":174,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":175,"author":{"gitId":"LargeCrowd"},"content":" public void markDone(int index) {","lastModifiedDate":"2024-02-04"},{"lineNumber":176,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":177,"author":{"gitId":"LargeCrowd"},"content":" if (this.taskList.get(index).isDone()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":178,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"You completed this task already!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":179,"author":{"gitId":"LargeCrowd"},"content":" ui.printLine();","lastModifiedDate":"2024-02-04"},{"lineNumber":180,"author":{"gitId":"LargeCrowd"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":181,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.get(index).markDone();","lastModifiedDate":"2024-02-04"},{"lineNumber":182,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Good job completing the task!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":183,"author":{"gitId":"LargeCrowd"},"content":" storage.saveTaskListToFile();","lastModifiedDate":"2024-02-04"},{"lineNumber":184,"author":{"gitId":"LargeCrowd"},"content":" printList();","lastModifiedDate":"2024-02-04"},{"lineNumber":185,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":186,"author":{"gitId":"LargeCrowd"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":187,"author":{"gitId":"LargeCrowd"},"content":" ui.printInvalidTaskIndex();","lastModifiedDate":"2024-02-04"},{"lineNumber":188,"author":{"gitId":"LargeCrowd"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":189,"author":{"gitId":"LargeCrowd"},"content":" ui.printInvalidTaskIndex();","lastModifiedDate":"2024-02-04"},{"lineNumber":190,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":191,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":192,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":193,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-04"},{"lineNumber":194,"author":{"gitId":"LargeCrowd"},"content":" * Marks task as undone","lastModifiedDate":"2024-02-04"},{"lineNumber":195,"author":{"gitId":"LargeCrowd"},"content":" * If task is already undone, prints error message","lastModifiedDate":"2024-02-04"},{"lineNumber":196,"author":{"gitId":"LargeCrowd"},"content":" * If task is done, marks as undone","lastModifiedDate":"2024-02-04"},{"lineNumber":197,"author":{"gitId":"LargeCrowd"},"content":" * If task does not exist, prints error message","lastModifiedDate":"2024-02-04"},{"lineNumber":198,"author":{"gitId":"LargeCrowd"},"content":" * If input is not a number, prints error message","lastModifiedDate":"2024-02-04"},{"lineNumber":199,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-04"},{"lineNumber":200,"author":{"gitId":"LargeCrowd"},"content":" * @param index index of task to be marked as undone","lastModifiedDate":"2024-02-04"},{"lineNumber":201,"author":{"gitId":"LargeCrowd"},"content":" * @throws IndexOutOfBoundsException if index is out of bounds","lastModifiedDate":"2024-02-04"},{"lineNumber":202,"author":{"gitId":"LargeCrowd"},"content":" * @throws NumberFormatException if input is not a number","lastModifiedDate":"2024-02-04"},{"lineNumber":203,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":204,"author":{"gitId":"LargeCrowd"},"content":" public void markUndone(int index) {","lastModifiedDate":"2024-02-04"},{"lineNumber":205,"author":{"gitId":"LargeCrowd"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":206,"author":{"gitId":"LargeCrowd"},"content":" if (!this.taskList.get(index).isDone()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":207,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Oops! You still haven\u0027t done this task!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":208,"author":{"gitId":"LargeCrowd"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":209,"author":{"gitId":"LargeCrowd"},"content":" this.taskList.get(index).markUndone();","lastModifiedDate":"2024-02-04"},{"lineNumber":210,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Better get to it soon!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":211,"author":{"gitId":"LargeCrowd"},"content":" storage.saveTaskListToFile();","lastModifiedDate":"2024-02-04"},{"lineNumber":212,"author":{"gitId":"LargeCrowd"},"content":" printList();","lastModifiedDate":"2024-02-04"},{"lineNumber":213,"author":{"gitId":"LargeCrowd"},"content":" ui.printLine();","lastModifiedDate":"2024-02-04"},{"lineNumber":214,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":215,"author":{"gitId":"LargeCrowd"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":216,"author":{"gitId":"LargeCrowd"},"content":" ui.printInvalidTaskIndex();","lastModifiedDate":"2024-02-04"},{"lineNumber":217,"author":{"gitId":"LargeCrowd"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":218,"author":{"gitId":"LargeCrowd"},"content":" ui.printInvalidTaskIndex();","lastModifiedDate":"2024-02-04"},{"lineNumber":219,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":220,"author":{"gitId":"LargeCrowd"},"content":" } ","lastModifiedDate":"2024-02-04"},{"lineNumber":221,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":222,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-04"},{"lineNumber":223,"author":{"gitId":"LargeCrowd"},"content":" * Prints taskList","lastModifiedDate":"2024-02-04"},{"lineNumber":224,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":225,"author":{"gitId":"LargeCrowd"},"content":" public void printList() {","lastModifiedDate":"2024-02-04"},{"lineNumber":226,"author":{"gitId":"LargeCrowd"},"content":" if (this.taskList.isEmpty()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":227,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Your tasklist is empty\");","lastModifiedDate":"2024-02-04"},{"lineNumber":228,"author":{"gitId":"LargeCrowd"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":229,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Here is your to-do list:\");","lastModifiedDate":"2024-02-04"},{"lineNumber":230,"author":{"gitId":"LargeCrowd"},"content":" this.taskIndex \u003d 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":231,"author":{"gitId":"LargeCrowd"},"content":" for (Task task : this.taskList) {","lastModifiedDate":"2024-02-04"},{"lineNumber":232,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + this.taskIndex + \". \" + task);","lastModifiedDate":"2024-02-04"},{"lineNumber":233,"author":{"gitId":"LargeCrowd"},"content":" this.taskIndex++;","lastModifiedDate":"2024-02-04"},{"lineNumber":234,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":235,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":236,"author":{"gitId":"LargeCrowd"},"content":" ui.printLine();","lastModifiedDate":"2024-02-04"},{"lineNumber":237,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":238,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"LargeCrowd":238}},{"path":"src/main/java/duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":" * Todo class","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":" * Constructor for Todo","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":" * @param description","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":" public Todo (String description) {","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":" super(description);","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":" protected String getTaskType() {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" return \"T\";","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"LargeCrowd"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"LargeCrowd"},"content":" return super.toString();","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"LargeCrowd":23}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":"public class Ui {","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":" private static final String LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":" private Scanner scanner;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":" public Ui() {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" * Prints the greeting message","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":" public void showGreeting() {","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" printLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":" showHelp();","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":" printLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"LargeCrowd"},"content":" * Prints the exit message","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"LargeCrowd"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"LargeCrowd"},"content":" * Handles user input","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"LargeCrowd"},"content":" * ","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"LargeCrowd"},"content":" * @return String user input","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"LargeCrowd"},"content":" public String getUserInput() {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"Enter a task below: \");","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"LargeCrowd"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"LargeCrowd"},"content":" * Close the scanner","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"LargeCrowd"},"content":" public void closeScanner() {","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"LargeCrowd"},"content":" scanner.close();","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"LargeCrowd"},"content":" * Prints the line","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"LargeCrowd"},"content":" public void printLine() {","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"LargeCrowd"},"content":" * Prints list of available commands","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"LargeCrowd"},"content":" public void showHelp() {","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Help: \");","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"LargeCrowd"},"content":" String[] instructions \u003d {","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"LargeCrowd"},"content":" \"DISPLAY LIST: list\",","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"LargeCrowd"},"content":" \"ADD TODO: todo \u003cTASK NAME\u003e\",","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"LargeCrowd"},"content":" \"ADD DEADLINE: deadline \u003cTASK NAME\u003e /by \u003cDD/MM/YYYY\u003e\",","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"LargeCrowd"},"content":" \"ADD EVENT: event \u003cTASK NAME\u003e /from \u003cDD/MM/YYYY\u003e /to \u003cDD/MM/YYYY\u003e\",","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"LargeCrowd"},"content":" \"MARK DONE: mark done \u003cINDEX\u003e\",","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"LargeCrowd"},"content":" \"MARK UNDONE: mark undone \u003cINDEX\u003e\",","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"LargeCrowd"},"content":" \"DELETE TASK: delete \u003cINDEX\u003e\",","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"LargeCrowd"},"content":" \"EXIT: bye\"","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"LargeCrowd"},"content":" };","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"LargeCrowd"},"content":" for (int i \u003d 0; i \u003c instructions.length; i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + (i + 1) + \". \" + instructions[i]);","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"LargeCrowd"},"content":" * Invalid task index message","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"LargeCrowd"},"content":" public void printInvalidTaskIndex() {","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"LargeCrowd"},"content":" System.out.println(\"\\t\" + \"Oops, that wasn\u0027t a valid task index :P\");","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"LargeCrowd":79}},{"path":"src/test/java/duke/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":" /** ","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":" * Tests if getTaskType returns correct task type","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":" public void test_getTaskType_task() {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" TaskList taskListObj \u003d new TaskList(new Storage(taskList), taskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":" taskListObj.addTask(\"deadline deadline1 /by 2020-12-12\");","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":" taskListObj.getTaskType(\"deadline deadline1 /by 2020-12-12\");","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"LargeCrowd"},"content":" assertEquals(taskList.get(0).getTaskType(), \"D\");","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"LargeCrowd":23}},{"path":"src/test/java/duke/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"package duke;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":"public class TodoTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"LargeCrowd"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"LargeCrowd"},"content":" * Tests if markDone marks task as done","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"LargeCrowd"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"LargeCrowd"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"LargeCrowd"},"content":" public void test_markDone_taskUndone() {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"LargeCrowd"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"LargeCrowd"},"content":" TaskList taskListObj \u003d new TaskList(new Storage(taskList), taskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"LargeCrowd"},"content":" taskListObj.addTask(\"todo task1\");","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"LargeCrowd"},"content":" taskListObj.markDone(0);","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"LargeCrowd"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"LargeCrowd"},"content":" assertTrue(taskList.get(0).isDone());","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"LargeCrowd"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"LargeCrowd"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"LargeCrowd":23}},{"path":"tasklist/tasklist.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"D | not done | deadline1 (by: 12 Dec 2020)","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"LargeCrowd":1}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"LargeCrowd"},"content":"todo Buy groceries","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"LargeCrowd"},"content":"deadline Submit report /by some-time-later","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"LargeCrowd"},"content":"event Team meeting /from abc /to xyz","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"LargeCrowd"},"content":"help","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"LargeCrowd"},"content":"mark done 1","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"LargeCrowd"},"content":"mark undone 2","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"LargeCrowd"},"content":"delete 3","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"LargeCrowd"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"LargeCrowd"},"content":"bye","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"LargeCrowd":9}}] diff --git a/LargeCrowd_ip_master/commits.json b/LargeCrowd_ip_master/commits.json index 4419f6f8..9f695c41 100644 --- a/LargeCrowd_ip_master/commits.json +++ b/LargeCrowd_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"LargeCrowd":[{"date":"2024-01-24","commitResults":[{"hash":"49c29dfd840f28a7c585fafccf84d4c585513b90","isMergeCommit":false,"messageTitle":"Update Duke.java","messageBody":"Level-0 changes. Program exits after greeting with new name\n","tags":["level-0"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"c5b339d785b2bd60106ead0793fd41f02ee29212","isMergeCommit":false,"messageTitle":"Update Duke.java","messageBody":"Level-1 changes. Takes an input then repeats it\n","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"70f4b4a57bc03080d7f74ec1fbd22587ae90010d","isMergeCommit":false,"messageTitle":"Level 2: Add, List","messageBody":"","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}}]},{"date":"2024-01-25","commitResults":[{"hash":"9e13702b1e147029741876c1f3cb6dfbf2788a18","isMergeCommit":false,"messageTitle":"level 3.1","messageBody":"","tags":["level-3"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":1}}},{"hash":"0dc9957d7a630586fc880929a4c3d6d487ffa74f","isMergeCommit":false,"messageTitle":"level-3. Mark as Done","messageBody":"","tags":["level-3.2"],"fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":36}}},{"hash":"dbf8aa393644779dded98e8ea0bd58cf2a64fb0e","isMergeCommit":false,"messageTitle":"changed \"item\" to \"task\"","messageBody":"","tags":["level-3.2.3"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":25}}},{"hash":"b9c353a36b895fee6e33f009a1b831a64c506ded","isMergeCommit":false,"messageTitle":"Starting level 4","messageBody":"","tags":["level-4"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":3}}}]},{"date":"2024-01-26","commitResults":[{"hash":"b23904d215ed8f89a707750fa2a5d39d1d31b326","isMergeCommit":false,"messageTitle":"debug level-3","messageBody":"","tags":["level-3.3"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":5}}},{"hash":"11ad844336850d14f62429eaa3d080342d2d7d67","isMergeCommit":false,"messageTitle":"added documentation and other small bug fixes","messageBody":"","tags":["level-3.3.1"],"fileTypesAndContributionMap":{"java":{"insertions":116,"deletions":36}}}]},{"date":"2024-01-27","commitResults":[{"hash":"dea5ab21319f3d168240ea0f706e374acce6c466","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","tags":["level-4.1"],"fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":18}}}]},{"date":"2024-01-28","commitResults":[{"hash":"86c1154327fd326c76b2480e98d852bfb711b8ad","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0}}},{"hash":"0b62f5899c33e44fc6faf4fffb17be68a33d76c4","isMergeCommit":false,"messageTitle":"Level 5","messageBody":"","tags":["level-5"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":4}}},{"hash":"8a09305dca94dc77f9abdf88d3be49249ee9097b","isMergeCommit":false,"messageTitle":"Level 6: Delete, and did better organisation of task adding","messageBody":"","tags":["level-6"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":41}}},{"hash":"f6ed6d5d20397dd850ea9ec4bea01927dd3c8b62","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":18}}}]},{"date":"2024-01-29","commitResults":[{"hash":"3bea4090f6e51587351549c1b5d1d95cf953884d","isMergeCommit":false,"messageTitle":"Edit documentation \u0026 styling","messageBody":"","tags":["A-Enums-1"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":99}}}]},{"date":"2024-01-30","commitResults":[{"hash":"fecfe9263e9deb5a640acb38a0406e2262e27223","isMergeCommit":false,"messageTitle":"Start level 7","messageBody":"","tags":["level-7"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":0}}}]},{"date":"2024-01-31","commitResults":[{"hash":"fcb55b1d324f63e0f98c76824d3afbe5c146794a","isMergeCommit":false,"messageTitle":"Reorganise and restart level 7","messageBody":"","tags":["level-7.1"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":68}}},{"hash":"ad060a44bdc740665f4bc06a9edd1cd4c03bc013","isMergeCommit":false,"messageTitle":"Create tasklist.txt","messageBody":"","tags":["level-7.1.1"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":8,"deletions":5}}},{"hash":"c733256816719c5a1a6abeccee493058242a76fb","isMergeCommit":false,"messageTitle":"Add ability to save list, but doesnt load data.","messageBody":"","tags":["level-7.2"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":107,"deletions":44}}},{"hash":"787789ea53788aeeccdb0dabd671dda6edf346a2","isMergeCommit":false,"messageTitle":"Need to fix tasklist display.","messageBody":"","tags":["level-7.2.1"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":3},"java":{"insertions":60,"deletions":28}}},{"hash":"5ef31e7fa4425364539b0db51c954eae9ad03c86","isMergeCommit":false,"messageTitle":"Work on loading tasks.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2},"java":{"insertions":7,"deletions":4}}},{"hash":"e65dbf65f68d319fac74a39df2a06ef4bfed3876","isMergeCommit":false,"messageTitle":"Test branch-level-7 pushing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"0fb93d29d597fe6de3486edfb392e4ea5ec57e48","isMergeCommit":false,"messageTitle":"Test branch-level-7 pushing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":183,"deletions":55}}},{"hash":"3923d96c97d94067355508eedaa5285d06669024","isMergeCommit":false,"messageTitle":"Complete level 7","messageBody":"","tags":["level-7.3"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":21,"deletions":8}}}]},{"date":"2024-02-01","commitResults":[{"hash":"564f5179943ecab1a1ab0e6d69a4ac9ca0bbd52e","isMergeCommit":false,"messageTitle":"Small changes.","messageBody":"","tags":["level-7.3.1"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":4,"deletions":2}}},{"hash":"2800ecfcd568f2c45cc7dc9015e9692a615e52dc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["level-7.4"],"fileTypesAndContributionMap":{}},{"hash":"87ac477211dbb0ac40c22631d1fa9c93e770a509","isMergeCommit":false,"messageTitle":"Small if logic change","messageBody":"","tags":["level-7.4.1"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":5}}},{"hash":"d38f4f89b87e683a27b390220d1aa453ea44a191","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["level-7.4.2"],"fileTypesAndContributionMap":{}},{"hash":"c4bd5843ffa8aa640cb01a5c1520e6d9b8044d07","isMergeCommit":false,"messageTitle":"Better encapsulation and abstraction.","messageBody":"","tags":["level-8"],"fileTypesAndContributionMap":{"java":{"insertions":627,"deletions":566}}},{"hash":"6a2ed1e0bfae8be022a77c575d1a713d3d6a1bd3","isMergeCommit":false,"messageTitle":"Reset level 8","messageBody":"","tags":["level-8.1"],"fileTypesAndContributionMap":{"java":{"insertions":554,"deletions":547}}}]},{"date":"2024-02-02","commitResults":[{"hash":"eba55d2a233c526626621c6e246098eb39e6fd8d","isMergeCommit":false,"messageTitle":"Reset level 8-2","messageBody":"","tags":["level-8.1.1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":10}}},{"hash":"4beaa4e8e99c63767b1abc246ed6c9ff2e9fc43f","isMergeCommit":false,"messageTitle":"Add date formatting to Deadline","messageBody":"Not yet added to Events. Deadline accepts 4 formats of dates and displays as \"d MMM yyyy\"\n","tags":["level-8.2"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":54,"deletions":19}}}]},{"date":"2024-02-03","commitResults":[{"hash":"b4abb14f0736d46f8496f48c5c28b5bc6e536b2b","isMergeCommit":false,"messageTitle":"Move date parsing logic to Task class","messageBody":"","tags":["level-8.3"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":74,"deletions":78}}},{"hash":"a1dfcb1ab211642a1ae8da5467ed4c1d2d5c61fb","isMergeCommit":false,"messageTitle":"Add Ui class. Work on Storage Class","messageBody":"","tags":["level-8.9"],"fileTypesAndContributionMap":{"java":{"insertions":325,"deletions":171}}}]},{"date":"2024-02-04","commitResults":[{"hash":"284848c06e6abb640399907b40aa08109748d180","isMergeCommit":false,"messageTitle":"Work on the new classes.","messageBody":"","tags":["level-8.9.1"],"fileTypesAndContributionMap":{"java":{"insertions":759,"deletions":482}}},{"hash":"3f7e5393eb0f8fc8c2398d849da772a5f8a64927","isMergeCommit":false,"messageTitle":"Complete MoreOOP","messageBody":"","tags":["A-MoreOOPs","A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":421}}},{"hash":"ddfbec7607f0833b1f037bc2c14343d635db37c3","isMergeCommit":false,"messageTitle":"Divide classes into packages.","messageBody":"","tags":["A-Packages-1.1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":4}}},{"hash":"4a22ec75c6103248a502cf97305715b2b1414bb7","isMergeCommit":true,"messageTitle":"Merge pull request #1 from LargeCrowd/A-Packages","messageBody":"Divide classes into packages.","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"21a49802136a30836a5f1545ea46156b0026401a","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"41fad8ac49df61000694c20d7fe5473a8b519834","isMergeCommit":false,"messageTitle":"Debug Storage.","messageBody":"Incomplete\n","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":6}}},{"hash":"24d5183bd7e574272299e051e2d808af0a935bb6","isMergeCommit":false,"messageTitle":"Update storage logic.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":6,"deletions":8}}},{"hash":"f3537197a1efbcb637c278454116026b183b75b7","isMergeCommit":false,"messageTitle":"Fix issues based on PR.","messageBody":"Renamed the taskType() methods to getTaskType() to follow the coding standard. Renamed parseInput() in Parser.java to executeUserInput() to show better description. Reformatted the switch/case block to follow standard\n","tags":["PR-1"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":49}}}]}]},"authorFileTypeContributionMap":{"LargeCrowd":{"java":751,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"LargeCrowd":372544.8},"authorDisplayNameMap":{"LargeCrowd":"CS2103T-T11-2 TIMO..SONG"}} +{"authorDailyContributionsMap":{"LargeCrowd":[{"date":"2024-01-24","commitResults":[{"hash":"49c29dfd840f28a7c585fafccf84d4c585513b90","isMergeCommit":false,"messageTitle":"Update Duke.java","messageBody":"Level-0 changes. Program exits after greeting with new name\n","tags":["level-0"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"c5b339d785b2bd60106ead0793fd41f02ee29212","isMergeCommit":false,"messageTitle":"Update Duke.java","messageBody":"Level-1 changes. Takes an input then repeats it\n","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"70f4b4a57bc03080d7f74ec1fbd22587ae90010d","isMergeCommit":false,"messageTitle":"Level 2: Add, List","messageBody":"","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}}]},{"date":"2024-01-25","commitResults":[{"hash":"9e13702b1e147029741876c1f3cb6dfbf2788a18","isMergeCommit":false,"messageTitle":"level 3.1","messageBody":"","tags":["level-3"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":1}}},{"hash":"0dc9957d7a630586fc880929a4c3d6d487ffa74f","isMergeCommit":false,"messageTitle":"level-3. Mark as Done","messageBody":"","tags":["level-3.2"],"fileTypesAndContributionMap":{"java":{"insertions":117,"deletions":36}}},{"hash":"dbf8aa393644779dded98e8ea0bd58cf2a64fb0e","isMergeCommit":false,"messageTitle":"changed \"item\" to \"task\"","messageBody":"","tags":["level-3.2.3"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":25}}},{"hash":"b9c353a36b895fee6e33f009a1b831a64c506ded","isMergeCommit":false,"messageTitle":"Starting level 4","messageBody":"","tags":["level-4"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":3}}}]},{"date":"2024-01-26","commitResults":[{"hash":"b23904d215ed8f89a707750fa2a5d39d1d31b326","isMergeCommit":false,"messageTitle":"debug level-3","messageBody":"","tags":["level-3.3"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":5}}},{"hash":"11ad844336850d14f62429eaa3d080342d2d7d67","isMergeCommit":false,"messageTitle":"added documentation and other small bug fixes","messageBody":"","tags":["level-3.3.1"],"fileTypesAndContributionMap":{"java":{"insertions":116,"deletions":36}}}]},{"date":"2024-01-27","commitResults":[{"hash":"dea5ab21319f3d168240ea0f706e374acce6c466","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","tags":["level-4.1"],"fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":18}}}]},{"date":"2024-01-28","commitResults":[{"hash":"86c1154327fd326c76b2480e98d852bfb711b8ad","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0}}},{"hash":"0b62f5899c33e44fc6faf4fffb17be68a33d76c4","isMergeCommit":false,"messageTitle":"Level 5","messageBody":"","tags":["level-5"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":4}}},{"hash":"8a09305dca94dc77f9abdf88d3be49249ee9097b","isMergeCommit":false,"messageTitle":"Level 6: Delete, and did better organisation of task adding","messageBody":"","tags":["level-6"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":41}}},{"hash":"f6ed6d5d20397dd850ea9ec4bea01927dd3c8b62","isMergeCommit":false,"messageTitle":"A-Enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":18}}}]},{"date":"2024-01-29","commitResults":[{"hash":"3bea4090f6e51587351549c1b5d1d95cf953884d","isMergeCommit":false,"messageTitle":"Edit documentation \u0026 styling","messageBody":"","tags":["A-Enums-1"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":99}}}]},{"date":"2024-01-30","commitResults":[{"hash":"fecfe9263e9deb5a640acb38a0406e2262e27223","isMergeCommit":false,"messageTitle":"Start level 7","messageBody":"","tags":["level-7"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":0}}}]},{"date":"2024-01-31","commitResults":[{"hash":"fcb55b1d324f63e0f98c76824d3afbe5c146794a","isMergeCommit":false,"messageTitle":"Reorganise and restart level 7","messageBody":"","tags":["level-7.1"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":68}}},{"hash":"ad060a44bdc740665f4bc06a9edd1cd4c03bc013","isMergeCommit":false,"messageTitle":"Create tasklist.txt","messageBody":"","tags":["level-7.1.1"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":8,"deletions":5}}},{"hash":"c733256816719c5a1a6abeccee493058242a76fb","isMergeCommit":false,"messageTitle":"Add ability to save list, but doesnt load data.","messageBody":"","tags":["level-7.2"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":107,"deletions":44}}},{"hash":"787789ea53788aeeccdb0dabd671dda6edf346a2","isMergeCommit":false,"messageTitle":"Need to fix tasklist display.","messageBody":"","tags":["level-7.2.1"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":3},"java":{"insertions":60,"deletions":28}}},{"hash":"5ef31e7fa4425364539b0db51c954eae9ad03c86","isMergeCommit":false,"messageTitle":"Work on loading tasks.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2},"java":{"insertions":7,"deletions":4}}},{"hash":"e65dbf65f68d319fac74a39df2a06ef4bfed3876","isMergeCommit":false,"messageTitle":"Test branch-level-7 pushing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"0fb93d29d597fe6de3486edfb392e4ea5ec57e48","isMergeCommit":false,"messageTitle":"Test branch-level-7 pushing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":183,"deletions":55}}},{"hash":"3923d96c97d94067355508eedaa5285d06669024","isMergeCommit":false,"messageTitle":"Complete level 7","messageBody":"","tags":["level-7.3"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":21,"deletions":8}}}]},{"date":"2024-02-01","commitResults":[{"hash":"564f5179943ecab1a1ab0e6d69a4ac9ca0bbd52e","isMergeCommit":false,"messageTitle":"Small changes.","messageBody":"","tags":["level-7.3.1"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":4},"java":{"insertions":4,"deletions":2}}},{"hash":"2800ecfcd568f2c45cc7dc9015e9692a615e52dc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["level-7.4"],"fileTypesAndContributionMap":{}},{"hash":"87ac477211dbb0ac40c22631d1fa9c93e770a509","isMergeCommit":false,"messageTitle":"Small if logic change","messageBody":"","tags":["level-7.4.1"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":5}}},{"hash":"d38f4f89b87e683a27b390220d1aa453ea44a191","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["level-7.4.2"],"fileTypesAndContributionMap":{}},{"hash":"c4bd5843ffa8aa640cb01a5c1520e6d9b8044d07","isMergeCommit":false,"messageTitle":"Better encapsulation and abstraction.","messageBody":"","tags":["level-8"],"fileTypesAndContributionMap":{"java":{"insertions":627,"deletions":566}}},{"hash":"6a2ed1e0bfae8be022a77c575d1a713d3d6a1bd3","isMergeCommit":false,"messageTitle":"Reset level 8","messageBody":"","tags":["level-8.1"],"fileTypesAndContributionMap":{"java":{"insertions":554,"deletions":547}}}]},{"date":"2024-02-02","commitResults":[{"hash":"eba55d2a233c526626621c6e246098eb39e6fd8d","isMergeCommit":false,"messageTitle":"Reset level 8-2","messageBody":"","tags":["level-8.1.1"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":10}}},{"hash":"4beaa4e8e99c63767b1abc246ed6c9ff2e9fc43f","isMergeCommit":false,"messageTitle":"Add date formatting to Deadline","messageBody":"Not yet added to Events. Deadline accepts 4 formats of dates and displays as \"d MMM yyyy\"\n","tags":["level-8.2"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":54,"deletions":19}}}]},{"date":"2024-02-03","commitResults":[{"hash":"b4abb14f0736d46f8496f48c5c28b5bc6e536b2b","isMergeCommit":false,"messageTitle":"Move date parsing logic to Task class","messageBody":"","tags":["level-8.3"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":74,"deletions":78}}},{"hash":"a1dfcb1ab211642a1ae8da5467ed4c1d2d5c61fb","isMergeCommit":false,"messageTitle":"Add Ui class. Work on Storage Class","messageBody":"","tags":["level-8.9"],"fileTypesAndContributionMap":{"java":{"insertions":325,"deletions":171}}}]},{"date":"2024-02-04","commitResults":[{"hash":"284848c06e6abb640399907b40aa08109748d180","isMergeCommit":false,"messageTitle":"Work on the new classes.","messageBody":"","tags":["level-8.9.1"],"fileTypesAndContributionMap":{"java":{"insertions":759,"deletions":482}}},{"hash":"3f7e5393eb0f8fc8c2398d849da772a5f8a64927","isMergeCommit":false,"messageTitle":"Complete MoreOOP","messageBody":"","tags":["A-MoreOOPs","A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":421}}},{"hash":"ddfbec7607f0833b1f037bc2c14343d635db37c3","isMergeCommit":false,"messageTitle":"Divide classes into packages.","messageBody":"","tags":["A-Packages-1.1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":4}}},{"hash":"4a22ec75c6103248a502cf97305715b2b1414bb7","isMergeCommit":true,"messageTitle":"Merge pull request #1 from LargeCrowd/A-Packages","messageBody":"Divide classes into packages.","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"21a49802136a30836a5f1545ea46156b0026401a","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"41fad8ac49df61000694c20d7fe5473a8b519834","isMergeCommit":false,"messageTitle":"Debug Storage.","messageBody":"Incomplete\n","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":6}}},{"hash":"24d5183bd7e574272299e051e2d808af0a935bb6","isMergeCommit":false,"messageTitle":"Update storage logic.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":6,"deletions":8}}},{"hash":"f3537197a1efbcb637c278454116026b183b75b7","isMergeCommit":false,"messageTitle":"Fix issues based on PR.","messageBody":"Renamed the taskType() methods to getTaskType() to follow the coding standard. Renamed parseInput() in Parser.java to executeUserInput() to show better description. Reformatted the switch/case block to follow standard\n","tags":["PR-1"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":49}}},{"hash":"1e24e8d6ead0094004c7980f76bfe6c475537d68","isMergeCommit":false,"messageTitle":"Add JUnit for deadline and todo classes.","messageBody":"","tags":["A-Jar","A-JUnit-1"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":46,"deletions":17}}}]},{"date":"2024-02-07","commitResults":[{"hash":"15061573183f0b2ba48548b0e807ce774441b4c9","isMergeCommit":false,"messageTitle":"Add javadocs.","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":19}}},{"hash":"03f2d08bb426d36611f212c1b8ceca4f40dc858a","isMergeCommit":false,"messageTitle":"Follow coding conventions.","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":17}}},{"hash":"0d01e56e05b9504cc09b212c197e9b9bb9e89763","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"LargeCrowd":{"java":810,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":10}},"authorContributionVariance":{"LargeCrowd":355803.9},"authorDisplayNameMap":{"LargeCrowd":"CS2103T-T11-2 TIMO..SONG"}} diff --git a/MaYuehan_ip_master/authorship.json b/MaYuehan_ip_master/authorship.json index 5f88d234..282efcf0 100644 --- a/MaYuehan_ip_master/authorship.json +++ b/MaYuehan_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"# DukeProject ","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"DukeProject is a task management application designed to simplify your life. It offers a range of features to help you stay organized and productive.","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"\u003e“Your mind is for having ideas, not holding them.” – David Allen","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"**DukePro frees your mind of having to remember things you need to do. It\u0027s,**","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"- Text-based interface for quick task management","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"- Easy to learn and use","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"- Super fast performance","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"**All you need to do is:**","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"1. Download it from [here](https://github.com/MaYuehan/ip/releases/tag/A-JUnit).","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"2. Double-click it.","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"3. Add your tasks.","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"4. Let it manage your tasks for you 😉 ","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"And it is __FREE__!","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"## Key Features","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"- [x] Task tracking and management","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"- [x] Deadline management","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"If you are a Java programmer, you can use it to practice Java too. Here\u0027s the main method:","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"```java","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"public class Duke {","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" private Storage storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" private Ui ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" * Constructs a Duke object with the specified file path.","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" * @param filePath The path to the file where tasks are stored.","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" * Runs the chatbot, displaying welcome message and processing user commands.","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" public void run() {","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" ui.showWelcome();","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" while (!isExit) {","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-02-05"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-02-05"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-02-05"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-05"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" new Duke(\"./data/botYue.txt\").run();","lastModifiedDate":"2024-02-05"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"MaYuehan":75}},{"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":"MaYuehan"},"content":" //id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"/*dependencies {","lastModifiedDate":"2024-02-06"},{"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":"MaYuehan"},"content":"}*/","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" mainClass.set(\"duke.Launcher\")","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"MaYuehan":21,"-":44}},{"path":"data/botYue.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"T | 0 | read book","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"D | 0 | return book | 2/12/2019 1800","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"T | 1 | join sports club","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"E | 0 | project meeting | Dec 02 2019 18:00-Oct 15 2019 18:00","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"D | 0 | return book | Oct 15 2019","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"D | 0 | return book | Dec 02 2019 18:00","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"D | 0 | return book | Dec 02 2019","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"E | 1 | project meeting | Oct 15 2019 00:00-Oct 15 2019 18:00","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"T | 0 | borrow book","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"D | 0 | return book | Dec 02 2019 18:00","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"E | 1 | project meeting | Dec 02 2019-Dec 02 2019","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"E | 0 | project meeting | Dec 02 2019 18:00-Dec 02 2019 18:30","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"D | 0 | return book | Dec 02 2019 18:00","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"MaYuehan":13}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"# duke User Guide","lastModifiedDate":"2024-02-02"},{"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":{"MaYuehan":1,"-":29}},{"path":"src/main/java/duke/Command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.DukeException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import duke.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to be executed by Duke.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * Executes the command.","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * @param ui The user interface.","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage handler.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If an error occurs during command execution.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * @return True if the command is an exit command, false otherwise.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":30}},{"path":"src/main/java/duke/Command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.DeadlineTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import duke.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import duke.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to add a deadline task.","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" private String description;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" private String deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" * Constructs a DeadlineCommand object with the given description and deadline.","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" * @param deadline The deadline of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" public DeadlineCommand(String description, String deadline) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" * Executes the DeadlineCommand, adding a deadline task to the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" * @param ui The user interface.","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage handler.","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If an error occurs during command execution.","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" Task task \u003d new DeadlineTask(description, deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" int count \u003d tasks.size();;","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" ui.showAddedMessage(task, count);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" * @return Always returns false, as this is not an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":60}},{"path":"src/main/java/duke/Command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to delete a task.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" private int INDEX;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * Constructs a DeleteCommand object with the given task index.","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * @param TASK_INDEX The index of the task to be deleted.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" public DeleteCommand(int TASK_INDEX) {","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" this.INDEX \u003d TASK_INDEX;","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * Executes the DeleteCommand, deleting a task from the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" * @param ui The user interface.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage handler.","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If an error occurs during command execution.","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" if (INDEX \u003c 1 || INDEX \u003e tasks.size()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! duke.Tasks.Task index is out of range.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" Task deletedTask \u003d tasks.get(INDEX - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" int count \u003d tasks.size() - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" tasks.delete(INDEX - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" Ui.showDeletedMessage(deletedTask, count);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" * @return Always returns false, as this is not an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":58}},{"path":"src/main/java/duke/Command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.EventTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import duke.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import duke.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to add an event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" private String description;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" private String startTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" private String endTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * Constructs an EventCommand object with the given description, start time, and end time.","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" * @param description The description of the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * @param startTime The start time of the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" * @param endTime The end time of the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" public EventCommand(String description, String startTime, String endTime) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" * Executes the EventCommand, adding an event task to the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" * @param ui The user interface.","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage handler.","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If an error occurs during command execution.","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" Task task \u003d new EventTask(description, startTime, endTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" int count \u003d tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" ui.showAddedMessage(task, count);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" * @return Always returns false, as this is not an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":65}},{"path":"src/main/java/duke/Command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to exit the application.","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"//package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * Executes the ExitCommand, showing a goodbye message.","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks (not used).","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * @param ui The user interface.","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage handler (not used).","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" Ui.showGoodbyeMessage();","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" * @return Always returns true, as this is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":35}},{"path":"src/main/java/duke/Command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to find tasks containing a specified keyword.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" private String keyword;","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * Constructs a FindCommand with the specified keyword.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" * @param keyword The keyword to search for in tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" public FindCommand(String keyword) {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * Executes the find command, searching for tasks containing the keyword.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" * Displays the matching tasks in the UI.","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks to search within.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage for saving tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" List\u003cTask\u003e matchingTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" for (Task task : tasks.getAllTasks()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" if (task.getTask().contains(keyword)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" matchingTasks.add(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" ui.showMatchingTasks(matchingTasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" * Indicates whether this command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" * @return False, as FindCommand does not exit the application.","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"MaYuehan":55}},{"path":"src/main/java/duke/Command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to list all tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * Executes the ListCommand, displaying the list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * @param ui The user interface.","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage handler.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" * @return Always returns false, as this is not an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":36}},{"path":"src/main/java/duke/Command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import duke.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to mark a task as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" private int INDEX;","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" * Constructs a MarkCommand object with the given task index.","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" * @param TASK_INDEX The index of the task to mark as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" public MarkCommand(int TASK_INDEX) {","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" this.INDEX \u003d TASK_INDEX;","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" * Executes the MarkCommand, marking the specified task as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" * @param ui The user interface.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage handler.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If an error occurs during command execution.","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" if (INDEX \u003c 1 || INDEX \u003e tasks.size()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! duke.Tasks.Task index is out of range.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" Task task \u003d tasks.get(INDEX - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" task.markDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" ui.showMarkedMessage(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" * @return Always returns false, as this is not an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":60}},{"path":"src/main/java/duke/Command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TodoTask;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to add a new todo task.","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" private String description;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * Constructs a TodoCommand object with the given task description.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" * @param description The description of the todo task to be added.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" public TodoCommand(String description) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" * Executes the TodoCommand, adding a new todo task to the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" * @param ui The user interface.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage handler.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If an error occurs during command execution.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" Task task \u003d new TodoTask(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" int count \u003d tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" ui.showAddedMessage(task, count);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" * @return Always returns false, as this is not an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":57}},{"path":"src/main/java/duke/Command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to mark a task as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" private int INDEX;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * Constructs an UnmarkCommand object with the given task index.","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * @param TASK_INDEX The index of the task to mark as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" public UnmarkCommand(int TASK_INDEX) {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" this.INDEX \u003d TASK_INDEX;","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" * Executes the UnmarkCommand, marking the specified task as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" * @param ui The user interface.","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage handler.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If an error occurs during command execution.","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" if (INDEX \u003c 1 || INDEX \u003e tasks.size()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! duke.Tasks.Task index is out of range.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" Task task \u003d tasks.get(INDEX - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" task.markNotDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" ui.showUnmarkedMessage(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" * @return Always returns false, as this is not an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":56}},{"path":"src/main/java/duke/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" * containing text from the speaker.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" private Label dialog;","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" private void flip() {","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" db.flip();","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" return db;","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"MaYuehan":61}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"public class Duke {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" private Scene scene;","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" private Parser parser;","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" private Image user \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaUser.png\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" private Image duke \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaDuke.png\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" * Constructs a Duke object with the specified file path.","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" * @param filePath The path to the file where tasks are stored.","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" public Duke() {","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" String filePath \u003d \"./data/botYue.txt\";","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" * Runs the chatbot, displaying welcome message and processing user commands.","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" public void run() {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" new Duke(\"./data/botYue.txt\").run();","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":"/*","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" //Step 1. Setting up required components","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" //The container for the content of the chat to scroll.","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" scrollPane \u003d new ScrollPane();","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" dialogContainer \u003d new VBox();","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" scrollPane.setContent(dialogContainer);","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" userInput \u003d new TextField();","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" sendButton \u003d new Button(\"Send\");","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" AnchorPane mainLayout \u003d new AnchorPane();","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" mainLayout.getChildren().addAll(scrollPane, userInput, sendButton);","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" scene \u003d new Scene(mainLayout);","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-06"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" stage.show();","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" //Step 2. Formatting the window to look as expected","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" stage.setTitle(\"Duke\");","lastModifiedDate":"2024-02-06"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" stage.setResizable(false);","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" stage.setMinHeight(600.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" stage.setMinWidth(400.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":" mainLayout.setPrefSize(400.0, 600.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":" scrollPane.setPrefSize(385, 535);","lastModifiedDate":"2024-02-06"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":" scrollPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);","lastModifiedDate":"2024-02-06"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":" scrollPane.setVbarPolicy(ScrollPane.ScrollBarPolicy.ALWAYS);","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":" scrollPane.setVvalue(1.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" scrollPane.setFitToWidth(true);","lastModifiedDate":"2024-02-06"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":" //You will need to import `javafx.scene.layout.Region` for this.","lastModifiedDate":"2024-02-06"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":" dialogContainer.setPrefHeight(Region.USE_COMPUTED_SIZE);","lastModifiedDate":"2024-02-06"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":" userInput.setPrefWidth(325.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" sendButton.setPrefWidth(55.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":" AnchorPane.setTopAnchor(scrollPane, 1.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":" AnchorPane.setBottomAnchor(sendButton, 1.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" AnchorPane.setRightAnchor(sendButton, 1.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":135,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":136,"author":{"gitId":"MaYuehan"},"content":" AnchorPane.setLeftAnchor(userInput , 1.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":137,"author":{"gitId":"MaYuehan"},"content":" AnchorPane.setBottomAnchor(userInput, 1.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":138,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":139,"author":{"gitId":"MaYuehan"},"content":" //Step 3. Add functionality to handle user input.","lastModifiedDate":"2024-02-06"},{"lineNumber":140,"author":{"gitId":"MaYuehan"},"content":" sendButton.setOnMouseClicked((event) -\u003e {","lastModifiedDate":"2024-02-06"},{"lineNumber":141,"author":{"gitId":"MaYuehan"},"content":" dialogContainer.getChildren().add(getDialogLabel(userInput.getText()));","lastModifiedDate":"2024-02-06"},{"lineNumber":142,"author":{"gitId":"MaYuehan"},"content":" userInput.clear();","lastModifiedDate":"2024-02-06"},{"lineNumber":143,"author":{"gitId":"MaYuehan"},"content":" });","lastModifiedDate":"2024-02-06"},{"lineNumber":144,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":145,"author":{"gitId":"MaYuehan"},"content":" userInput.setOnAction((event) -\u003e {","lastModifiedDate":"2024-02-06"},{"lineNumber":146,"author":{"gitId":"MaYuehan"},"content":" dialogContainer.getChildren().add(getDialogLabel(userInput.getText()));","lastModifiedDate":"2024-02-06"},{"lineNumber":147,"author":{"gitId":"MaYuehan"},"content":" userInput.clear();","lastModifiedDate":"2024-02-06"},{"lineNumber":148,"author":{"gitId":"MaYuehan"},"content":" });","lastModifiedDate":"2024-02-06"},{"lineNumber":149,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":150,"author":{"gitId":"MaYuehan"},"content":" //Scroll down to the end every time dialogContainer\u0027s height changes.","lastModifiedDate":"2024-02-06"},{"lineNumber":151,"author":{"gitId":"MaYuehan"},"content":" dialogContainer.heightProperty().addListener((observable) -\u003e scrollPane.setVvalue(1.0));","lastModifiedDate":"2024-02-06"},{"lineNumber":152,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":153,"author":{"gitId":"MaYuehan"},"content":" //Part 3. Add functionality to handle user input.","lastModifiedDate":"2024-02-06"},{"lineNumber":154,"author":{"gitId":"MaYuehan"},"content":" sendButton.setOnMouseClicked((event) -\u003e {","lastModifiedDate":"2024-02-06"},{"lineNumber":155,"author":{"gitId":"MaYuehan"},"content":" handleUserInput();","lastModifiedDate":"2024-02-06"},{"lineNumber":156,"author":{"gitId":"MaYuehan"},"content":" });","lastModifiedDate":"2024-02-06"},{"lineNumber":157,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":158,"author":{"gitId":"MaYuehan"},"content":" userInput.setOnAction((event) -\u003e {","lastModifiedDate":"2024-02-06"},{"lineNumber":159,"author":{"gitId":"MaYuehan"},"content":" handleUserInput();","lastModifiedDate":"2024-02-06"},{"lineNumber":160,"author":{"gitId":"MaYuehan"},"content":" });","lastModifiedDate":"2024-02-06"},{"lineNumber":161,"author":{"gitId":"MaYuehan"},"content":" }*/","lastModifiedDate":"2024-02-06"},{"lineNumber":162,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":163,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":164,"author":{"gitId":"MaYuehan"},"content":" * Iteration 1:","lastModifiedDate":"2024-02-06"},{"lineNumber":165,"author":{"gitId":"MaYuehan"},"content":" * Creates a label with the specified text and adds it to the dialog container.","lastModifiedDate":"2024-02-06"},{"lineNumber":166,"author":{"gitId":"MaYuehan"},"content":" * @param text String containing text to add","lastModifiedDate":"2024-02-06"},{"lineNumber":167,"author":{"gitId":"MaYuehan"},"content":" * @return a label with the specified text that has word wrap enabled.","lastModifiedDate":"2024-02-06"},{"lineNumber":168,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":" private Label getDialogLabel(String text) {","lastModifiedDate":"2024-02-06"},{"lineNumber":170,"author":{"gitId":"MaYuehan"},"content":" // You will need to import `javafx.scene.control.Label`.","lastModifiedDate":"2024-02-06"},{"lineNumber":171,"author":{"gitId":"MaYuehan"},"content":" Label textToAdd \u003d new Label(text);","lastModifiedDate":"2024-02-06"},{"lineNumber":172,"author":{"gitId":"MaYuehan"},"content":" textToAdd.setWrapText(true);","lastModifiedDate":"2024-02-06"},{"lineNumber":173,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":174,"author":{"gitId":"MaYuehan"},"content":" return textToAdd;","lastModifiedDate":"2024-02-06"},{"lineNumber":175,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":176,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":177,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":178,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":179,"author":{"gitId":"MaYuehan"},"content":" * Iteration 2:","lastModifiedDate":"2024-02-06"},{"lineNumber":180,"author":{"gitId":"MaYuehan"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2024-02-06"},{"lineNumber":181,"author":{"gitId":"MaYuehan"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-06"},{"lineNumber":182,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":183,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":184,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":185,"author":{"gitId":"MaYuehan"},"content":" /*private void handleUserInput() {","lastModifiedDate":"2024-02-06"},{"lineNumber":186,"author":{"gitId":"MaYuehan"},"content":" Label userText \u003d new Label(userInput.getText());","lastModifiedDate":"2024-02-06"},{"lineNumber":187,"author":{"gitId":"MaYuehan"},"content":" Label dukeText \u003d new Label(getResponse(userInput.getText()));","lastModifiedDate":"2024-02-06"},{"lineNumber":188,"author":{"gitId":"MaYuehan"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-06"},{"lineNumber":189,"author":{"gitId":"MaYuehan"},"content":" new DialogBox(userText, new ImageView(user)),","lastModifiedDate":"2024-02-06"},{"lineNumber":190,"author":{"gitId":"MaYuehan"},"content":" new DialogBox(dukeText, new ImageView(duke))","lastModifiedDate":"2024-02-06"},{"lineNumber":191,"author":{"gitId":"MaYuehan"},"content":" );","lastModifiedDate":"2024-02-06"},{"lineNumber":192,"author":{"gitId":"MaYuehan"},"content":" userInput.clear();","lastModifiedDate":"2024-02-06"},{"lineNumber":193,"author":{"gitId":"MaYuehan"},"content":" }*/","lastModifiedDate":"2024-02-06"},{"lineNumber":194,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":195,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":196,"author":{"gitId":"MaYuehan"},"content":" * You should have your own function to generate a response to user input.","lastModifiedDate":"2024-02-06"},{"lineNumber":197,"author":{"gitId":"MaYuehan"},"content":" * Replace this stub with your completed method.","lastModifiedDate":"2024-02-06"},{"lineNumber":198,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":199,"author":{"gitId":"MaYuehan"},"content":" String getResponse(String input) {","lastModifiedDate":"2024-02-06"},{"lineNumber":200,"author":{"gitId":"MaYuehan"},"content":" return \"Duke heard: \" + input;","lastModifiedDate":"2024-02-06"},{"lineNumber":201,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":202,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":203,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":204,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":205,"author":{"gitId":"MaYuehan"},"content":"/*","lastModifiedDate":"2024-01-29"},{"lineNumber":206,"author":{"gitId":"MaYuehan"},"content":"public class duke.Duke {","lastModifiedDate":"2024-01-29"},{"lineNumber":207,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":208,"author":{"gitId":"MaYuehan"},"content":" private static final duke.Tasks.Task[] store \u003d new duke.Tasks.Task[100];","lastModifiedDate":"2024-01-29"},{"lineNumber":209,"author":{"gitId":"MaYuehan"},"content":" private static int count \u003d 0;","lastModifiedDate":"2024-01-22"},{"lineNumber":210,"author":{"gitId":"MaYuehan"},"content":" private static final String DATA_FILE_PATH \u003d \"./data/botYue.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":211,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":212,"author":{"gitId":"MaYuehan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-23"},{"lineNumber":213,"author":{"gitId":"MaYuehan"},"content":" dialogue();","lastModifiedDate":"2024-01-23"},{"lineNumber":214,"author":{"gitId":"MaYuehan"},"content":" loadTasks();","lastModifiedDate":"2024-01-28"},{"lineNumber":215,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":216,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":217,"author":{"gitId":"MaYuehan"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-23"},{"lineNumber":218,"author":{"gitId":"MaYuehan"},"content":" String inputs;","lastModifiedDate":"2024-01-23"},{"lineNumber":219,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":220,"author":{"gitId":"MaYuehan"},"content":" do {","lastModifiedDate":"2024-01-23"},{"lineNumber":221,"author":{"gitId":"MaYuehan"},"content":" inputs \u003d scanner.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":222,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":223,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":224,"author":{"gitId":"MaYuehan"},"content":" check(inputs);","lastModifiedDate":"2024-01-23"},{"lineNumber":225,"author":{"gitId":"MaYuehan"},"content":" saveTasks();","lastModifiedDate":"2024-01-28"},{"lineNumber":226,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":227,"author":{"gitId":"MaYuehan"},"content":" } catch (duke.DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":228,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":229,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + e.getMessage());","lastModifiedDate":"2024-01-23"},{"lineNumber":230,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":231,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":232,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":233,"author":{"gitId":"MaYuehan"},"content":" } while (!inputs.equalsIgnoreCase(\"bye\"));","lastModifiedDate":"2024-01-23"},{"lineNumber":234,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":235,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":236,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-23"},{"lineNumber":237,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":238,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":239,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":240,"author":{"gitId":"MaYuehan"},"content":" public static void dialogue() {","lastModifiedDate":"2024-01-23"},{"lineNumber":241,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":242,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":243,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Hello! I\u0027m BotYue\");","lastModifiedDate":"2024-01-28"},{"lineNumber":244,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-01-23"},{"lineNumber":245,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-23"},{"lineNumber":246,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":247,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":248,"author":{"gitId":"MaYuehan"},"content":" public static void check(String input) throws duke.DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":249,"author":{"gitId":"MaYuehan"},"content":" if (input.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":250,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":251,"author":{"gitId":"MaYuehan"},"content":" } else if (input.startsWith(\"list\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":252,"author":{"gitId":"MaYuehan"},"content":" list();","lastModifiedDate":"2024-01-28"},{"lineNumber":253,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":254,"author":{"gitId":"MaYuehan"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":255,"author":{"gitId":"MaYuehan"},"content":" mark(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":256,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":257,"author":{"gitId":"MaYuehan"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":258,"author":{"gitId":"MaYuehan"},"content":" unmark(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":259,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":260,"author":{"gitId":"MaYuehan"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":261,"author":{"gitId":"MaYuehan"},"content":" add(duke.Tasks.TaskType.TODO, input.substring(4).trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":262,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":263,"author":{"gitId":"MaYuehan"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":264,"author":{"gitId":"MaYuehan"},"content":" add(duke.Tasks.TaskType.DEADLINE, input.substring(8).trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":265,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":266,"author":{"gitId":"MaYuehan"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":267,"author":{"gitId":"MaYuehan"},"content":" add(duke.Tasks.TaskType.EVENT, input.substring(5).trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":268,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":269,"author":{"gitId":"MaYuehan"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":270,"author":{"gitId":"MaYuehan"},"content":" deleteTask(input.substring(6).trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":271,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":272,"author":{"gitId":"MaYuehan"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":273,"author":{"gitId":"MaYuehan"},"content":" throw new duke.DukeException(\"OOPS!!! I don\u0027t know what that means. Can you make it clear?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":274,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":275,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":276,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":277,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":278,"author":{"gitId":"MaYuehan"},"content":" public static void add(duke.Tasks.Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":279,"author":{"gitId":"MaYuehan"},"content":" store[count++] \u003d task;","lastModifiedDate":"2024-01-28"},{"lineNumber":280,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":281,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":282,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":283,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-28"},{"lineNumber":284,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Now you have \" + count + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":285,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":286,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":287,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":288,"author":{"gitId":"MaYuehan"},"content":" public static void add(duke.Tasks.TaskType type, String description) throws duke.DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":289,"author":{"gitId":"MaYuehan"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":290,"author":{"gitId":"MaYuehan"},"content":" throw new duke.DukeException(\"OOPS!!! The description of a \" + type + \" task cannot be empty!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":291,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":292,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":293,"author":{"gitId":"MaYuehan"},"content":" duke.Tasks.Task task;","lastModifiedDate":"2024-01-29"},{"lineNumber":294,"author":{"gitId":"MaYuehan"},"content":" switch (type) {","lastModifiedDate":"2024-01-28"},{"lineNumber":295,"author":{"gitId":"MaYuehan"},"content":" case TODO:","lastModifiedDate":"2024-01-28"},{"lineNumber":296,"author":{"gitId":"MaYuehan"},"content":" task \u003d new duke.Tasks.TodoTask(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":297,"author":{"gitId":"MaYuehan"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":298,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":299,"author":{"gitId":"MaYuehan"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-28"},{"lineNumber":300,"author":{"gitId":"MaYuehan"},"content":" task \u003d new duke.Tasks.Task.DeadlineTask(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":301,"author":{"gitId":"MaYuehan"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":302,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":303,"author":{"gitId":"MaYuehan"},"content":" case EVENT:","lastModifiedDate":"2024-01-28"},{"lineNumber":304,"author":{"gitId":"MaYuehan"},"content":" task \u003d new duke.Tasks.Task.EventTask(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":305,"author":{"gitId":"MaYuehan"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":306,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":307,"author":{"gitId":"MaYuehan"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":308,"author":{"gitId":"MaYuehan"},"content":" throw new duke.DukeException(\"OOPS!!! Unsupported task type.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":309,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":310,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":311,"author":{"gitId":"MaYuehan"},"content":" add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":312,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":313,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":314,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":315,"author":{"gitId":"MaYuehan"},"content":" public static void deleteTask(String num) throws duke.DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":316,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":317,"author":{"gitId":"MaYuehan"},"content":" int index \u003d Integer.parseInt(num);","lastModifiedDate":"2024-01-28"},{"lineNumber":318,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":319,"author":{"gitId":"MaYuehan"},"content":" if (index \u003e 0 \u0026\u0026 index \u003c\u003d count) {","lastModifiedDate":"2024-01-28"},{"lineNumber":320,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":321,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":322,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + store[index - 1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":323,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":324,"author":{"gitId":"MaYuehan"},"content":" for (int i \u003d index - 1; i \u003c count - 1; i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":325,"author":{"gitId":"MaYuehan"},"content":" store[i] \u003d store[i + 1];","lastModifiedDate":"2024-01-28"},{"lineNumber":326,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":327,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":328,"author":{"gitId":"MaYuehan"},"content":" store[count - 1] \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":329,"author":{"gitId":"MaYuehan"},"content":" count--;","lastModifiedDate":"2024-01-28"},{"lineNumber":330,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":331,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Now you have \" + count + \" tasks in the list.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":332,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":333,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":334,"author":{"gitId":"MaYuehan"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":335,"author":{"gitId":"MaYuehan"},"content":" throw new duke.DukeException(\"OOPS!!! duke.Tasks.Task index is out of range.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":336,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":337,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":338,"author":{"gitId":"MaYuehan"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":339,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":340,"author":{"gitId":"MaYuehan"},"content":" throw new duke.DukeException(\"OOPS!!! Please enter a valid task index to delete.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":341,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":342,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":343,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":344,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":345,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":346,"author":{"gitId":"MaYuehan"},"content":" public static void list() {","lastModifiedDate":"2024-01-28"},{"lineNumber":347,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":348,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":349,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":350,"author":{"gitId":"MaYuehan"},"content":" for (int i \u003d 0; i \u003c count; i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":351,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + (i + 1) + \". \" + store[i]);","lastModifiedDate":"2024-01-28"},{"lineNumber":352,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":353,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":354,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":355,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":356,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":357,"author":{"gitId":"MaYuehan"},"content":" public static void mark(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":358,"author":{"gitId":"MaYuehan"},"content":" int index \u003d getIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":359,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":360,"author":{"gitId":"MaYuehan"},"content":" if (checkValid(index)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":361,"author":{"gitId":"MaYuehan"},"content":" store[index - 1].markDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":362,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":363,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":364,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":365,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + store[index - 1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":366,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":367,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":368,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":369,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":370,"author":{"gitId":"MaYuehan"},"content":" public static void unmark(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":371,"author":{"gitId":"MaYuehan"},"content":" int index \u003d getIndex(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":372,"author":{"gitId":"MaYuehan"},"content":" if (checkValid(index)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":373,"author":{"gitId":"MaYuehan"},"content":" store[index - 1].markNotDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":374,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":375,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":376,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + store[index - 1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":377,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-28"},{"lineNumber":378,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":379,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":380,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":381,"author":{"gitId":"MaYuehan"},"content":" private static int getIndex(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":382,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":383,"author":{"gitId":"MaYuehan"},"content":" return Integer.parseInt(input.split(\" \")[1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":384,"author":{"gitId":"MaYuehan"},"content":" } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":385,"author":{"gitId":"MaYuehan"},"content":" return -1;","lastModifiedDate":"2024-01-28"},{"lineNumber":386,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":387,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":388,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":389,"author":{"gitId":"MaYuehan"},"content":" private static boolean checkValid(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":390,"author":{"gitId":"MaYuehan"},"content":" return index \u003e 0 \u0026\u0026 index \u003c\u003d count;","lastModifiedDate":"2024-01-28"},{"lineNumber":391,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":392,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":393,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":394,"author":{"gitId":"MaYuehan"},"content":" public static void loadTasks() {","lastModifiedDate":"2024-01-28"},{"lineNumber":395,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":396,"author":{"gitId":"MaYuehan"},"content":" File file \u003d new File(DATA_FILE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":397,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":398,"author":{"gitId":"MaYuehan"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":399,"author":{"gitId":"MaYuehan"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-28"},{"lineNumber":400,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":401,"author":{"gitId":"MaYuehan"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":402,"author":{"gitId":"MaYuehan"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":403,"author":{"gitId":"MaYuehan"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-28"},{"lineNumber":404,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":405,"author":{"gitId":"MaYuehan"},"content":" if (parts.length \u003e\u003d 3) {","lastModifiedDate":"2024-01-28"},{"lineNumber":406,"author":{"gitId":"MaYuehan"},"content":" duke.Tasks.Task task;","lastModifiedDate":"2024-01-29"},{"lineNumber":407,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":408,"author":{"gitId":"MaYuehan"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-01-28"},{"lineNumber":409,"author":{"gitId":"MaYuehan"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":410,"author":{"gitId":"MaYuehan"},"content":" task \u003d new duke.Tasks.TodoTask(parts[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":411,"author":{"gitId":"MaYuehan"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":412,"author":{"gitId":"MaYuehan"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":413,"author":{"gitId":"MaYuehan"},"content":" task \u003d new duke.Tasks.Task.DeadlineTaskLoad(parts[2], parts[3]);","lastModifiedDate":"2024-01-29"},{"lineNumber":414,"author":{"gitId":"MaYuehan"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":415,"author":{"gitId":"MaYuehan"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":416,"author":{"gitId":"MaYuehan"},"content":" task \u003d new duke.Tasks.Task.EventTaskLoad(parts[2], parts[3]);","lastModifiedDate":"2024-01-29"},{"lineNumber":417,"author":{"gitId":"MaYuehan"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":418,"author":{"gitId":"MaYuehan"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":419,"author":{"gitId":"MaYuehan"},"content":" continue;","lastModifiedDate":"2024-01-28"},{"lineNumber":420,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":421,"author":{"gitId":"MaYuehan"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":422,"author":{"gitId":"MaYuehan"},"content":" task.markDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":423,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":424,"author":{"gitId":"MaYuehan"},"content":" add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":425,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":426,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":427,"author":{"gitId":"MaYuehan"},"content":" scanner.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":428,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":429,"author":{"gitId":"MaYuehan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":430,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\"Error loading tasks from file: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":431,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":432,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":433,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":434,"author":{"gitId":"MaYuehan"},"content":" public static void saveTasks() {","lastModifiedDate":"2024-01-28"},{"lineNumber":435,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":436,"author":{"gitId":"MaYuehan"},"content":" File file \u003d new File(DATA_FILE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":437,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":438,"author":{"gitId":"MaYuehan"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":439,"author":{"gitId":"MaYuehan"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-28"},{"lineNumber":440,"author":{"gitId":"MaYuehan"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":441,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":442,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":443,"author":{"gitId":"MaYuehan"},"content":" FileWriter writer \u003d new FileWriter(file);","lastModifiedDate":"2024-01-28"},{"lineNumber":444,"author":{"gitId":"MaYuehan"},"content":" for (int i \u003d 0; i \u003c count; i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":445,"author":{"gitId":"MaYuehan"},"content":" duke.Tasks.Task task \u003d store[i];","lastModifiedDate":"2024-01-29"},{"lineNumber":446,"author":{"gitId":"MaYuehan"},"content":" String taskType;","lastModifiedDate":"2024-01-28"},{"lineNumber":447,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":448,"author":{"gitId":"MaYuehan"},"content":" if (task instanceof duke.Tasks.TodoTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":449,"author":{"gitId":"MaYuehan"},"content":" taskType \u003d \"T\";","lastModifiedDate":"2024-01-28"},{"lineNumber":450,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof duke.Tasks.Task.DeadlineTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":451,"author":{"gitId":"MaYuehan"},"content":" taskType \u003d \"D\";","lastModifiedDate":"2024-01-28"},{"lineNumber":452,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof duke.Tasks.Task.DeadlineTaskLoad) {","lastModifiedDate":"2024-01-29"},{"lineNumber":453,"author":{"gitId":"MaYuehan"},"content":" taskType \u003d \"D\";","lastModifiedDate":"2024-01-28"},{"lineNumber":454,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof duke.Tasks.Task.EventTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":455,"author":{"gitId":"MaYuehan"},"content":" taskType \u003d \"E\";","lastModifiedDate":"2024-01-28"},{"lineNumber":456,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof duke.Tasks.Task.EventTaskLoad) {","lastModifiedDate":"2024-01-29"},{"lineNumber":457,"author":{"gitId":"MaYuehan"},"content":" taskType \u003d \"E\";","lastModifiedDate":"2024-01-28"},{"lineNumber":458,"author":{"gitId":"MaYuehan"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":459,"author":{"gitId":"MaYuehan"},"content":" continue;","lastModifiedDate":"2024-01-28"},{"lineNumber":460,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":461,"author":{"gitId":"MaYuehan"},"content":" writer.write(taskType + \" | \" + (task.marked ? \"1\" : \"0\") + \" | \" + task.getTask());","lastModifiedDate":"2024-01-28"},{"lineNumber":462,"author":{"gitId":"MaYuehan"},"content":" if (task instanceof duke.Tasks.Task.DeadlineTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":463,"author":{"gitId":"MaYuehan"},"content":" writer.write(\" | \" + ((duke.Tasks.Task.DeadlineTask) task).getDateTime());","lastModifiedDate":"2024-01-29"},{"lineNumber":464,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":465,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof duke.Tasks.Task.EventTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":466,"author":{"gitId":"MaYuehan"},"content":" writer.write(\" | \" + ((duke.Tasks.Task.EventTask) task).getDateTime());","lastModifiedDate":"2024-01-29"},{"lineNumber":467,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":468,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof duke.Tasks.Task.EventTaskLoad) {","lastModifiedDate":"2024-01-29"},{"lineNumber":469,"author":{"gitId":"MaYuehan"},"content":" writer.write(\" | \" + ((duke.Tasks.Task.EventTaskLoad) task).getTime());","lastModifiedDate":"2024-01-29"},{"lineNumber":470,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":471,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof duke.Tasks.Task.DeadlineTaskLoad) {","lastModifiedDate":"2024-01-29"},{"lineNumber":472,"author":{"gitId":"MaYuehan"},"content":" writer.write(\" | \" + ((duke.Tasks.Task.DeadlineTaskLoad) task).getBy());","lastModifiedDate":"2024-01-29"},{"lineNumber":473,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":474,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":475,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":476,"author":{"gitId":"MaYuehan"},"content":" writer.write(System.lineSeparator());","lastModifiedDate":"2024-01-28"},{"lineNumber":477,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":478,"author":{"gitId":"MaYuehan"},"content":" writer.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":479,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":480,"author":{"gitId":"MaYuehan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":481,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\"Error saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":482,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":483,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":484,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":485,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":486,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":487,"author":{"gitId":"MaYuehan"},"content":"class duke.DukeException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":488,"author":{"gitId":"MaYuehan"},"content":" public duke.DukeException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":489,"author":{"gitId":"MaYuehan"},"content":" super(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":490,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":491,"author":{"gitId":"MaYuehan"},"content":"}*/","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":491}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":" * Represents exceptions specific to the Duke chatbot application.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" * Constructs a DukeException with the specified error message.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" * @param message The error message.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":16}},{"path":"src/main/java/duke/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"public class Launcher {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"MaYuehan":13}},{"path":"src/main/java/duke/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" private Duke duke \u003d new Duke();","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" stage.show();","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"MaYuehan":35}},{"path":"src/main/java/duke/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" private Duke duke;","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaUser.png\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaDuke.png\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" public void initialize() {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" duke \u003d d;","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" );","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" userInput.clear();","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"MaYuehan":50}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.Command;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.TodoCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.EventCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.ExitCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.ListCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.MarkCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.UnmarkCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.DeleteCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.DeadlineCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.FindCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * Parses the user input and returns the corresponding command.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" * @param input The user input to be parsed.","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" * @return The command corresponding to the user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If the input cannot be parsed or an invalid command is entered.","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" public static Command parse(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" String command \u003d parts[0].toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" switch (command) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" case \"bye\":","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" case \"list\":","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" case \"mark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" return parseMarkCommand(parts);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" return parseUnmarkCommand(parts);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" case \"delete\":","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" return parseDeleteCommand(parts);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" return parseTodoCommand(parts);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" return parseDeadlineCommand(parts);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" return parseEventCommand(parts);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" case \"find\":","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" return new FindCommand(parts[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" * Parses the user input to create a MarkCommand.","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" * @param parts The input split into parts.","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" * @return The MarkCommand corresponding to the user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If the input cannot be parsed or an invalid command is entered.","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" private static Command parseMarkCommand(String[] parts) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! Please specify the task index to mark as done.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" int index \u003d Integer.parseInt(parts[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! Please enter a valid task index to mark as done.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" * Parses the user input to create an UnmarkCommand.","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" * @param parts The input split into parts.","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" * @return The UnmarkCommand corresponding to the user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If the input cannot be parsed or an invalid command is entered.","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" private static Command parseUnmarkCommand(String[] parts) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! Please specify the task index to mark as not done.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" int index \u003d Integer.parseInt(parts[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! Please enter a valid task index to mark as not done.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" * Parses the user input to create a DeleteCommand.","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" * @param parts The input split into parts.","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" * @return The DeleteCommand corresponding to the user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If the input cannot be parsed or an invalid command is entered.","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" private static Command parseDeleteCommand(String[] parts) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! Please specify the task index to delete.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" int index \u003d Integer.parseInt(parts[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! Please enter a valid task index to delete.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":" * Parses the user input to create a TodoCommand.","lastModifiedDate":"2024-02-02"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" * @param parts The input split into parts.","lastModifiedDate":"2024-02-02"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":" * @return The TodoCommand corresponding to the user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If the input cannot be parsed or an invalid command is entered.","lastModifiedDate":"2024-02-02"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":" private static Command parseTodoCommand(String[] parts) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! The description of a todo task cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" String description \u003d String.join(\" \", Arrays.copyOfRange(parts, 1, parts.length));","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" return new TodoCommand(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":135,"author":{"gitId":"MaYuehan"},"content":" * Parses the user input to create a DeadlineCommand.","lastModifiedDate":"2024-02-02"},{"lineNumber":136,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":137,"author":{"gitId":"MaYuehan"},"content":" * @param parts The input split into parts.","lastModifiedDate":"2024-02-02"},{"lineNumber":138,"author":{"gitId":"MaYuehan"},"content":" * @return The DeadlineCommand corresponding to the user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":139,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If the input cannot be parsed or an invalid command is entered.","lastModifiedDate":"2024-02-02"},{"lineNumber":140,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":141,"author":{"gitId":"MaYuehan"},"content":" private static Command parseDeadlineCommand(String[] parts) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"MaYuehan"},"content":" String task \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":143,"author":{"gitId":"MaYuehan"},"content":" String by \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":145,"author":{"gitId":"MaYuehan"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":146,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! The description of a deadline task cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":147,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":148,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":149,"author":{"gitId":"MaYuehan"},"content":" String[] split \u003d parts[1].split(\"/by\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"MaYuehan"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! The deadline of a deadline task cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":154,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"MaYuehan"},"content":" if (split.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"MaYuehan"},"content":" task \u003d split[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"MaYuehan"},"content":" by \u003d split[1].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"MaYuehan"},"content":" return new DeadlineCommand(task, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":162,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":165,"author":{"gitId":"MaYuehan"},"content":" * Parses the user input to create an EventCommand.","lastModifiedDate":"2024-02-02"},{"lineNumber":166,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":167,"author":{"gitId":"MaYuehan"},"content":" * @param parts The input split into parts.","lastModifiedDate":"2024-02-02"},{"lineNumber":168,"author":{"gitId":"MaYuehan"},"content":" * @return The EventCommand corresponding to the user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If the input cannot be parsed or an invalid command is entered.","lastModifiedDate":"2024-02-02"},{"lineNumber":170,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":171,"author":{"gitId":"MaYuehan"},"content":" private static Command parseEventCommand(String[] parts) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"MaYuehan"},"content":" String task \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":173,"author":{"gitId":"MaYuehan"},"content":" String from \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":174,"author":{"gitId":"MaYuehan"},"content":" String to \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":175,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":176,"author":{"gitId":"MaYuehan"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":177,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! The time of an event task cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":178,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":179,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"MaYuehan"},"content":" String[] split \u003d parts[1].split(\"/from\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":181,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"MaYuehan"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! The time of an event task cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":186,"author":{"gitId":"MaYuehan"},"content":" if (split.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"MaYuehan"},"content":" task \u003d split[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":189,"author":{"gitId":"MaYuehan"},"content":" String[] details \u003d split[1].split(\"/to\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":190,"author":{"gitId":"MaYuehan"},"content":" if (details.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":191,"author":{"gitId":"MaYuehan"},"content":" from \u003d details[0].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":192,"author":{"gitId":"MaYuehan"},"content":" to \u003d details[1].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":193,"author":{"gitId":"MaYuehan"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":194,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! The end time of an event task cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":195,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":196,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":197,"author":{"gitId":"MaYuehan"},"content":" return new EventCommand(task, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":198,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":199,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":200,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":200}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TodoTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.DeadlineTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.EventTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.EventTaskLoad;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.DeadlineTaskLoad;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * The Storage class handles the loading and saving of tasks to a file.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" private String filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" * Loads tasks from the file and returns them as a list.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" * @return The list of tasks loaded from the file.","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If there is an error loading tasks from the file.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" public List\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" if (parts.length \u003e\u003d 3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" Task task;","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" case \"T\":","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" task \u003d new TodoTask(parts[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" case \"D\":","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" task \u003d new DeadlineTaskLoad(parts[2], parts[3]);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" case \"E\":","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" task \u003d new EventTaskLoad(parts[2], parts[3]);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" continue;","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" task.markDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"Error loading tasks from file: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" * Saves the given list of tasks to the file.","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks to be saved.","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If there is an error saving tasks to the file.","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" public void save(List\u003cTask\u003e tasks) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" FileWriter writer \u003d new FileWriter(file);","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" String taskType;","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" if (task instanceof TodoTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" taskType \u003d \"T\";","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof DeadlineTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":" taskType \u003d \"D\";","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof DeadlineTaskLoad) {","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" taskType \u003d \"D\";","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof EventTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" taskType \u003d \"E\";","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof EventTaskLoad) {","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" taskType \u003d \"E\";","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" continue;","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":" writer.write(taskType + \" | \" + (task.marked ? \"1\" : \"0\") + \" | \" + task.getTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":" if (task instanceof DeadlineTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":" writer.write(\" | \" + ((DeadlineTask) task).getDateTime());","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof EventTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" writer.write(\" | \" + ((EventTask) task).getDateTime());","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof EventTaskLoad) {","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":" writer.write(\" | \" + ((EventTaskLoad) task).getTime());","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof DeadlineTaskLoad) {","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":" writer.write(\" | \" + ((DeadlineTaskLoad) task).getBy());","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" writer.write(System.lineSeparator());","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":" writer.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"Error saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":138}},{"path":"src/main/java/duke/Tasks/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.Locale;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" * Represents a task with a deadline.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" private final LocalDateTime deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" int CHECK \u003d 0;","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * Constructs a DeadlineTask object with the given description and deadline string.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" * @param deadlineStr The deadline string in various formats.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" public DeadlineTask(String description, String deadlineStr) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" this.deadline \u003d parseDateTime(deadlineStr);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" * Parses the deadline string into a LocalDateTime object.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" * @param time The deadline string in various formats.","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" * @return The LocalDateTime object representing the deadline.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" * @throws DateTimeParseException If the deadline string cannot be parsed.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" private LocalDateTime parseDateTime(String time) throws DateTimeParseException {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime dateTime \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter1 \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter3 \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter4 \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy\");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" CHECK \u003d 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d LocalDateTime.parse(time, formatter1);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" CHECK \u003d 2;","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d LocalDateTime.parse(time, formatter2);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" CHECK \u003d 3;","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" LocalDate date \u003d LocalDate.parse(time, formatter3);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d date.atStartOfDay();","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" CHECK \u003d 4;","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" LocalDate date \u003d LocalDate.parse(time, formatter4);","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d date.atStartOfDay();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e4) {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" throw new DateTimeParseException(\"Unable to parse date/time: \" + time, time, 0, e2);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" return dateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" * Formats the deadline date and time into a string.","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" * @param dateTime The LocalDateTime object representing the deadline.","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" * @return The formatted string representing the deadline.","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" String formatDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" if (CHECK \u003d\u003d 1 || CHECK \u003d\u003d 2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\", Locale.ENGLISH);","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\", Locale.ENGLISH);","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" return dateTime.format(formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" * Gets the formatted deadline date and time string.","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" * @return The formatted deadline date and time string.","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" public String getDateTime() {","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" return formatDateTime(deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" return \"[D]\" + super.toString() + \" (by: \" + formatDateTime(deadline) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" public String tag() {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" return \"[D]\";","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":117}},{"path":"src/main/java/duke/Tasks/DeadlineTaskLoad.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":" * Represents a deadline task loaded from storage.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"public class DeadlineTaskLoad extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" private String by;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" * Constructs a DeadlineTaskLoad object with the given task description and deadline.","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" * @param task The task description.","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" * @param by The deadline of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" public DeadlineTaskLoad(String task, String by) {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" super(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" * Gets the deadline of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * @return The deadline of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" public String getBy() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" return by;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" * Returns a string representation of the deadline task.","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" * @return The string representation of the deadline task.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" * Returns the tag for the deadline task.","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" * @return The tag for the deadline task.","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" public String tag() {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" return \"[D]\";","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":53}},{"path":"src/main/java/duke/Tasks/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.Locale;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" * Represents a task with an event duration.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"public class EventTask extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" private LocalDateTime startTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" int CHECK \u003d 0;","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" * Constructs an EventTask object with the given description, start time string, and end time string.","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" * @param description The description of the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" * @param startTimeString The start time string in various formats.","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * @param endTimeString The end time string in various formats.","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" public EventTask(String description, String startTimeString, String endTimeString) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" this.startTime \u003d parseDateTime(startTimeString);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" this.endTime \u003d parseDateTime(endTimeString);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" * Parses the time string into a LocalDateTime object.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" * @param time The time string in various formats.","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" * @return The LocalDateTime object representing the time.","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" * @throws DateTimeParseException If the time string cannot be parsed.","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" private LocalDateTime parseDateTime(String time) throws DateTimeParseException {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime dateTime \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter1 \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter3 \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter4 \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy\");","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" CHECK \u003d 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d LocalDateTime.parse(time, formatter1);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" CHECK \u003d 2;","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d LocalDateTime.parse(time, formatter2);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" CHECK \u003d 3;","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" LocalDate date \u003d LocalDate.parse(time, formatter3);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d date.atStartOfDay();","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" CHECK \u003d 4;","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" LocalDate date \u003d LocalDate.parse(time, formatter4);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d date.atStartOfDay();","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e4) {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" CHECK \u003d 5;","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" throw new DateTimeParseException(\"Unable to parse date/time: \" + time, time, 0, e2);","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" return dateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" * Formats the date and time into a string.","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" * @param dateTime The LocalDateTime object representing the date and time.","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" * @return The formatted string representing the date and time.","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" private String formatDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" if (CHECK \u003d\u003d 1 || CHECK \u003d\u003d 2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\", Locale.ENGLISH);","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\", Locale.ENGLISH);","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" return dateTime.format(formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" * Gets the formatted start time string.","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" * @return The formatted start time string.","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" public String getStartTime() {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":" String time \u003d formatDateTime(startTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" return time;","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" * Gets the formatted end time string.","lastModifiedDate":"2024-02-02"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" * @return The formatted end time string.","lastModifiedDate":"2024-02-02"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" public String getEndTime() {","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":" String time \u003d formatDateTime(endTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":" return time;","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":" * Gets the formatted event duration string.","lastModifiedDate":"2024-02-02"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":" * @return The formatted event duration string.","lastModifiedDate":"2024-02-02"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":" public String getDateTime() {","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":" return getStartTime() + \"-\" + getEndTime();","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" public String tag() {","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":" return \"[E]\";","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"MaYuehan"},"content":" return \"[E]\" + super.toString() + \" (from: \" + formatDateTime(startTime) + \" to: \" + formatDateTime(endTime) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":139}},{"path":"src/main/java/duke/Tasks/EventTaskLoad.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":" * Represents an event task loaded from storage.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"public class EventTaskLoad extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" private String time;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" private String from;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" private String to;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" * Constructs an EventTaskLoad object with the given task description and time.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * @param task The task description.","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * @param time The time of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" public EventTaskLoad(String task, String time) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" super(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" parseEventLoad(time);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" this.time \u003d time;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" * Gets the time of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" * @return The time of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" public String getTime() {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" return time;","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" * Parses the time string to extract the start and end times of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" * @param time The time string representing the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" private void parseEventLoad(String time) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" String[] split \u003d time.split(\"-\", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" if (split.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" this.from \u003d split[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" this.to \u003d split[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" * Returns a string representation of the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" * @return The string representation of the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" return tag() + mark() + \" \" + task + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" * Returns the tag for the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" * @return The tag for the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" public String tag() {","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" return \"[E]\";","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"MaYuehan":69}},{"path":"src/main/java/duke/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":" * Represents a generic task.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" String task;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" public boolean marked;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" * Constructs a Task object with the given task description.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * @param task The description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" public Task(String task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" this.marked \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" * Gets the description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * @return The description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" public String getTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" return task;","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" * Marks the task as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" public void markDone() {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" marked \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" * Marks the task as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" public void markNotDone() {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" marked \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" * Returns a string representing the task\u0027s status.","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" * @return The task\u0027s status string.","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" public String mark() {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" return (marked ? \"[X]\" : \"[ ]\");","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" * @return The string representation of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" public abstract String tag();","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" * @return The string representation of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" return mark() + \" \" + task;","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"MaYuehan":76}},{"path":"src/main/java/duke/Tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" * Represents a list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" * Constructs a TaskList object with the given list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * @param task The task to add.","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" * @param index The index of the task to delete.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" public void delete(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" tasks.remove(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" * Gets all tasks in the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" * @return The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" public List\u003cTask\u003e getAllTasks() {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" * Gets the task at the specified index in the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" * @param index The index of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" * @return The task at the specified index.","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" * @throws IndexOutOfBoundsException If the index is out of bounds.","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" public Task get(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" throw new IndexOutOfBoundsException(\"Index is out of bounds\");","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" * Gets the number of tasks in the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" * @return The number of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" public int size() {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" return tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":73}},{"path":"src/main/java/duke/Tasks/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":" * Represents a todo task.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"public class TodoTask extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" * Constructs a TodoTask object with the given task description.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" * @param task The task description.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" public TodoTask(String task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" super(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * Returns the tag for the todo task.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" * @return The tag for the todo task.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" public String tag() {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" return \"[T]\";","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" * Returns a string representation of the todo task.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" * @return The string representation of the todo task.","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" return tag() + mark() + \" \" + task;","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"MaYuehan":38}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.io.InputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" * Handles user interaction, including input and output.","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * Constructs a Ui object with a Scanner for user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" public Ui() {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" public String greet() {","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" return \"Hello! I\u0027m BotYue. \\nWhat can I do for you?\";","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" * Reads a command entered by the user.","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" * @return The command entered by the user.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" return scanner.nextLine().trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" * Displays a welcome message when the program starts.","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Hello! I\u0027m BotYue\");","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" * Displays the list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks to display.","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + (i + 1) + \". \" + tasks.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" * Displays a message confirming that a task has been marked as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" * @param task The task that has been marked as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" public void showMarkedMessage(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" * Displays a message confirming that a task has been marked as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" * @param task The task that has been marked as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" public void showUnmarkedMessage(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" * Displays a message confirming that a task has been deleted.","lastModifiedDate":"2024-02-02"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" * @param task The task that has been deleted.","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" * @param count The updated number of tasks in the list.","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" public static void showDeletedMessage(Task task, int count) {","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Now you have \" + count + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" * Displays a goodbye message when the user exits the program.","lastModifiedDate":"2024-02-02"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" public static void showGoodbyeMessage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" * Displays a message confirming that a task has been added.","lastModifiedDate":"2024-02-02"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" * @param task The task that has been added.","lastModifiedDate":"2024-02-02"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":" * @param count The updated number of tasks in the list.","lastModifiedDate":"2024-02-02"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":" public void showAddedMessage(Task task, int count) {","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Now you have \" + count + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" * Displays the tasks that match the given keyword in the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":135,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":136,"author":{"gitId":"MaYuehan"},"content":" * @param matchingTasks The task list containing tasks to search within.","lastModifiedDate":"2024-02-02"},{"lineNumber":137,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":138,"author":{"gitId":"MaYuehan"},"content":" public void showMatchingTasks(List\u003cTask\u003e matchingTasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":139,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":140,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Here are the matching tasks in your list:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":141,"author":{"gitId":"MaYuehan"},"content":" for (int i \u003d 0; i \u003c matchingTasks.size(); i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":142,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + (i + 1) + \". \" + matchingTasks.get(i));","lastModifiedDate":"2024-02-02"},{"lineNumber":143,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":144,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":145,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":146,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":147,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":148,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":149,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":150,"author":{"gitId":"MaYuehan"},"content":" * Displays an error message.","lastModifiedDate":"2024-02-02"},{"lineNumber":151,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":152,"author":{"gitId":"MaYuehan"},"content":" * @param message The error message to display.","lastModifiedDate":"2024-02-02"},{"lineNumber":153,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":154,"author":{"gitId":"MaYuehan"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + message);","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":162,"author":{"gitId":"MaYuehan"},"content":" * Displays an error message when tasks fail to load from file.","lastModifiedDate":"2024-02-02"},{"lineNumber":163,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":164,"author":{"gitId":"MaYuehan"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\"Error loading tasks from file.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":170}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"MaYuehan":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.MainWindow\"\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"MaYuehan":19}},{"path":"src/test/java/duke/Tasks/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.Locale;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" private final LocalDateTime deadline;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" int check \u003d 0;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" public DeadlineTask(String description, String deadlineStr) {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" super(description);","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" this.deadline \u003d parseDateTime(deadlineStr);","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" private LocalDateTime parseDateTime(String time) throws DateTimeParseException {","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime dateTime \u003d null;","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter1 \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter3 \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter4 \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy\");","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" check \u003d 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d LocalDateTime.parse(time, formatter1);","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" check \u003d 2;","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d LocalDateTime.parse(time, formatter2);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" check \u003d 3;","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" LocalDate date \u003d LocalDate.parse(time, formatter3);","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d date.atStartOfDay();","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e3) {","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" check \u003d 4;","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" LocalDate date \u003d LocalDate.parse(time, formatter4);","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d date.atStartOfDay();","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e4) {","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" throw new DateTimeParseException(\"Unable to parse date/time: \" + time, time, 0, e2);","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" return dateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" String formatDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" if (check \u003d\u003d 1 || check \u003d\u003d 2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\", Locale.ENGLISH);","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\", Locale.ENGLISH);","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" return dateTime.format(formatter);","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" public String getDateTime() {","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" return formatDateTime(deadline);","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" return \"[D]\" + super.toString() + \" (by: \" + formatDateTime(deadline) + \")\";","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" public String tag() {","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" return \"[D]\";","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"MaYuehan":85}},{"path":"src/test/java/duke/Tasks/DeadlineTaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"public class DeadlineTaskTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" public void testFormatDateTime() {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime dateTime \u003d LocalDateTime.of(2024, 1, 30, 15, 30);","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" DeadlineTask task \u003d new DeadlineTask(\"Test Deadline\", \"2024-01-30 1530\");","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" String formattedDateTime \u003d task.formatDateTime(dateTime);","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" assertEquals(\"Jan 30 2024 15:30\", formattedDateTime);","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"MaYuehan":18}},{"path":"src/test/java/duke/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"public abstract class Task {","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":" String task;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" public boolean marked;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" public Task(String task) {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" this.task \u003d task;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" this.marked \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" public String getTask() {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" return task;","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" public void markDone() {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" marked \u003d true;","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" public void markNotDone() {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" marked \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" public String mark() {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" return (marked ? \"[X]\" : \"[ ]\");","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" public abstract String tag();","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" return mark() + \" \" + task;","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"MaYuehan":38}},{"path":"src/test/java/duke/Tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"public class TaskList {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" public void delete(int index) {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" tasks.remove(index);","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" public List\u003cTask\u003e getAllTasks() {","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" return tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" public Task get(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" throw new IndexOutOfBoundsException(\"Index is out of bounds\");","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" return tasks.get(index);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" public int size() {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" return tasks.size();","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"MaYuehan":40}},{"path":"src/test/java/duke/Tasks/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"public class TodoTask extends Task {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":" public TodoTask(String task) {","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":" super(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" public String tag() {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" return \"[T]\";","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" return tag() + mark() + \" \" + task;","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"MaYuehan":17}},{"path":"src/test/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"public class Ui {","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" private Scanner scanner;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" public Ui() {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" public String readCommand() {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" return scanner.nextLine().trim();","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" public void showWelcome() {","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Hello! I\u0027m BotYue\");","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + (i + 1) + \". \" + tasks.get(i));","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" public void showMarkedMessage(Task task) {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" public void showUnmarkedMessage(Task task) {","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" public static void showDeletedMessage(Task task, int count) {","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Now you have \" + count + \" tasks in the list.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" public static void showGoodbyeMessage() {","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" public void showAddedMessage(Task task, int count) {","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Now you have \" + count + \" tasks in the list.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" public void showError(String message) {","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + message);","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\"Error loading tasks from file.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"MaYuehan":84}},{"path":"src/test/java/duke/UiTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.io.PrintStream;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.*;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"public class UiTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" public void testShowAddedMessage() {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" String taskDescription \u003d \"return book\";","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" Task task \u003d new TodoTask(taskDescription);","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" int count \u003d 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" String expectedMessage \u003d \" ____________________________________________________________\\n\" +","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" \" Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" \" \" + task.tag() + task.mark() + \" \" + taskDescription + \"\\n\" +","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" \" Now you have \" + count + \" tasks in the list.\\n\" +","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" \" ____________________________________________________________\\n\";","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" // Redirect System.out to capture the output","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" ByteArrayOutputStream outContent \u003d new ByteArrayOutputStream();","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" System.setOut(new PrintStream(outContent));","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" // Call the method","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" ui.showAddedMessage(task, count);","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" // Reset System.out","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" System.setOut(System.out);","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" // Check the output","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" assertEquals(expectedMessage, outContent.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"MaYuehan":38}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"todo","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"blah","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"deadline","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"event","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"delete 2","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"list","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"MaYuehan":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":"MaYuehan"},"content":"java -classpath ..\\bin duke.duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-02"},{"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":{"MaYuehan":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"# DukeProject ","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"DukeProject is a task management application designed to simplify your life. It offers a range of features to help you stay organized and productive.","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"\u003e“Your mind is for having ideas, not holding them.” – David Allen","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"**DukePro frees your mind of having to remember things you need to do. It\u0027s,**","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"- Text-based interface for quick task management","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"- Easy to learn and use","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"- Super fast performance","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"**All you need to do is:**","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"1. Download it from [here](https://github.com/MaYuehan/ip/releases/tag/A-JUnit).","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"2. Double-click it.","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"3. Add your tasks.","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"4. Let it manage your tasks for you 😉 ","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"And it is __FREE__!","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"## Key Features","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"- [x] Task tracking and management","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"- [x] Deadline management","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"If you are a Java programmer, you can use it to practice Java too. Here\u0027s the main method:","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"```java","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"public class Duke {","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" private Storage storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" private Ui ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" * Constructs a Duke object with the specified file path.","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" * @param filePath The path to the file where tasks are stored.","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" * Runs the chatbot, displaying welcome message and processing user commands.","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" public void run() {","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" ui.showWelcome();","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" while (!isExit) {","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-02-05"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-02-05"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-02-05"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-05"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" new Duke(\"./data/botYue.txt\").run();","lastModifiedDate":"2024-02-05"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"MaYuehan":75}},{"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":"MaYuehan"},"content":" //id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"/*dependencies {","lastModifiedDate":"2024-02-06"},{"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":"MaYuehan"},"content":"}*/","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" mainClass.set(\"duke.Launcher\")","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"MaYuehan":21,"-":44}},{"path":"data/botYue.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"D | 0 | return book | 2/12/2019 1800","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"T | 1 | join sports club","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"E | 0 | project meeting | Dec 02 2019 18:00-Oct 15 2019 18:00","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"D | 0 | return book | Oct 15 2019","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"D | 0 | return book | Dec 02 2019 18:00","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"D | 0 | return book | Dec 02 2019","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"E | 1 | project meeting | Oct 15 2019 00:00-Oct 15 2019 18:00","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"T | 0 | borrow book","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"D | 0 | return book | Dec 02 2019 18:00","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"E | 1 | project meeting | Dec 02 2019-Dec 02 2019","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"E | 0 | project meeting | Dec 02 2019 18:00-Dec 02 2019 18:30","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"D | 0 | return book | Dec 02 2019 18:00","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"T | 0 | return book","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"T | 0 | return book","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"MaYuehan":14}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"# duke User Guide","lastModifiedDate":"2024-02-02"},{"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":{"MaYuehan":1,"-":29}},{"path":"src/main/java/duke/Command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.DukeException;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import duke.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to be executed by Duke.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * Executes the command.","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage handler.","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If an error occurs during command execution.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" public abstract String execute(TaskList tasks, Storage storage) throws DukeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" * @return True if the command is an exit command, false otherwise.","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":29}},{"path":"src/main/java/duke/Command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.DeadlineTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import duke.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import duke.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to add a deadline task.","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" private String description;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" private String deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" * Constructs a DeadlineCommand object with the given description and deadline.","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" * @param deadline The deadline of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" public DeadlineCommand(String description, String deadline) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" * Executes the DeadlineCommand, adding a deadline task to the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage handler.","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If an error occurs during command execution.","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" /*@Override","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" Task task \u003d new DeadlineTask(description, deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" int count \u003d tasks.size();;","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" ui.showAddedMessage(task, count);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" }*/","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" public String execute(TaskList tasks, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" Task task \u003d new DeadlineTask(description, deadline);","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" int count \u003d tasks.size();","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" /*String addedMessage \u003d \" ____________________________________________________________\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" \" Got it. I\u0027ve added this task:\\n\" + \" \" + task + \"\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" \" Now you have \" + count + \" tasks in the list.\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" + \" ____________________________________________________________\";*/","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" String addedMessage \u003d \" Got it. I\u0027ve added this task:\\n\" + \" \" + task + \"\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" \" Now you have \" + count + \" tasks in the list.\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" return addedMessage;","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" * @return Always returns false, as this is not an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":78}},{"path":"src/main/java/duke/Command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to delete a task.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" private int INDEX;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * Constructs a DeleteCommand object with the given task index.","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * @param TASK_INDEX The index of the task to be deleted.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" public DeleteCommand(int TASK_INDEX) {","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" this.INDEX \u003d TASK_INDEX;","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * Executes the DeleteCommand, deleting a task from the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage handler.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If an error occurs during command execution.","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" /*@Override","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" if (INDEX \u003c 1 || INDEX \u003e tasks.size()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! duke.Tasks.Task index is out of range.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" Task deletedTask \u003d tasks.get(INDEX - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" int count \u003d tasks.size() - 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" tasks.delete(INDEX - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" Ui.showDeletedMessage(deletedTask, count);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" }*/","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" public String execute(TaskList tasks, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" if (INDEX \u003c 1 || INDEX \u003e tasks.size()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! duke.Tasks.Task index is out of range.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" Task deletedTask \u003d tasks.get(INDEX - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" int count \u003d tasks.size() - 1;","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" tasks.delete(INDEX - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" /*String deletedMessage \u003d \" ____________________________________________________________\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" \" Noted. I\u0027ve removed this task:\\n\" + \" \" + deletedTask + \"\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" \" Now you have \" + count + \" tasks in the list.\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" + \" ____________________________________________________________\";*/","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" String deletedMessage \u003d \" Noted. I\u0027ve removed this task:\\n\" + \" \" + deletedTask + \"\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" \" Now you have \" + count + \" tasks in the list.\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" return deletedMessage;","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" * @return Always returns false, as this is not an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":82}},{"path":"src/main/java/duke/Command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.EventTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import duke.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import duke.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to add an event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" private String description;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" private String startTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" private String endTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * Constructs an EventCommand object with the given description, start time, and end time.","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" * @param description The description of the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * @param startTime The start time of the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" * @param endTime The end time of the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" public EventCommand(String description, String startTime, String endTime) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" * Executes the EventCommand, adding an event task to the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage handler.","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If an error occurs during command execution.","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" /*@Override","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" Task task \u003d new EventTask(description, startTime, endTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" int count \u003d tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" ui.showAddedMessage(task, count);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" }*/","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" public String execute(TaskList tasks, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" Task task \u003d new EventTask(description, startTime, endTime);","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" int count \u003d tasks.size();","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" /*String addedMessage \u003d \" ____________________________________________________________\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" \" Got it. I\u0027ve added this task:\\n\" + \" \" + task + \"\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" \" Now you have \" + count + \" tasks in the list.\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" + \" ____________________________________________________________\";*/","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" String addedMessage \u003d \" Got it. I\u0027ve added this task:\\n\" + \" \" + task + \"\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" \" Now you have \" + count + \" tasks in the list.\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" return addedMessage;","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" * @return Always returns false, as this is not an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":83}},{"path":"src/main/java/duke/Command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to exit the application.","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"//package duke.command;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * Executes the ExitCommand, showing a goodbye message.","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks (not used).","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage handler (not used).","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" public String execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" /*String goodbyeMessage \u003d \" ____________________________________________________________\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" \" Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" + \" ____________________________________________________________\";*/","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" String goodbyeMessage \u003d \" Bye. Hope to see you again soon!\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" return goodbyeMessage;","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" * @return Always returns true, as this is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":42}},{"path":"src/main/java/duke/Command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to find tasks containing a specified keyword.","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" private String keyword;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * Constructs a FindCommand with the specified keyword.","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * @param keyword The keyword to search for in tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" public FindCommand(String keyword) {","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" * Executes the find command, searching for tasks containing the keyword.","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * Displays the matching tasks in the UI.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks to search within.","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage for saving tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" public String execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" List\u003cTask\u003e matchingTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" for (Task task : tasks.getAllTasks()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" if (task.getTask().contains(keyword)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" matchingTasks.add(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" sb.append(task.toString()).append(System.lineSeparator());","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" String matchingTasksString \u003d \" Here are the matching tasks in your list:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" + sb.toString() + \"\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" return matchingTasksString;","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" * Indicates whether this command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" * @return False, as FindCommand does not exit the application.","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"MaYuehan":65}},{"path":"src/main/java/duke/Command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to list all tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * Executes the ListCommand, displaying the list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage handler.","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" public String execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" String list \u003d \" \" + (i + 1) + \". \" + tasks.get(i);","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" sb.append(list).append(System.lineSeparator());","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" String taskList \u003d \" Here are the tasks in your list:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" + sb.toString() + \"\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" return taskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" * @return Always returns false, as this is not an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":48}},{"path":"src/main/java/duke/Command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import duke.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to mark a task as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" private int INDEX;","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" * Constructs a MarkCommand object with the given task index.","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" * @param TASK_INDEX The index of the task to mark as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" public MarkCommand(int TASK_INDEX) {","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" this.INDEX \u003d TASK_INDEX;","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" * Executes the MarkCommand, marking the specified task as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage handler.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If an error occurs during command execution.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" /* @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" if (INDEX \u003c 1 || INDEX \u003e tasks.size()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! duke.Tasks.Task index is out of range.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" Task task \u003d tasks.get(INDEX - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" task.markDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" ui.showMarkedMessage(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" }*/","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" public String execute(TaskList tasks, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" if (INDEX \u003c 1 || INDEX \u003e tasks.size()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! duke.Tasks.Task index is out of range.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" Task task \u003d tasks.get(INDEX - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" task.markDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" /*String markedMessage \u003d \" ____________________________________________________________\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" \" Nice! I\u0027ve marked this task as done:\\n\" + \" \" + task + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" + \" ____________________________________________________________\";*/","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" String markedMessage \u003d \" Nice! I\u0027ve marked this task as done:\\n\" + \" \" + task + \"\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" return markedMessage;","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" * @return Always returns false, as this is not an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":80}},{"path":"src/main/java/duke/Command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TodoTask;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to add a new todo task.","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" private String description;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * Constructs a TodoCommand object with the given task description.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" * @param description The description of the todo task to be added.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" public TodoCommand(String description) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" * Executes the TodoCommand, adding a new todo task to the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage handler.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If an error occurs during command execution.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" public String execute(TaskList tasks, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" Task task \u003d new TodoTask(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" int count \u003d tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" String addedMessage \u003d \" Got it. I\u0027ve added this task:\\n\" + \" \" + task + \"\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" \" Now you have \" + count + \" tasks in the list.\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" return addedMessage;","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" * @return Always returns false, as this is not an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":63}},{"path":"src/main/java/duke/Command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" * Represents a command to mark a task as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" private int INDEX;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * Constructs an UnmarkCommand object with the given task index.","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * @param TASK_INDEX The index of the task to mark as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" public UnmarkCommand(int TASK_INDEX) {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" this.INDEX \u003d TASK_INDEX;","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" * Executes the UnmarkCommand, marking the specified task as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" * @param storage The storage handler.","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If an error occurs during command execution.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" /*@Override","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" if (INDEX \u003c 1 || INDEX \u003e tasks.size()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! duke.Tasks.Task index is out of range.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" Task task \u003d tasks.get(INDEX - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" task.markNotDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" ui.showUnmarkedMessage(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" }*/","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" /*@Override","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" if (INDEX \u003c 1 || INDEX \u003e tasks.size()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! duke.Tasks.Task index is out of range.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" Task task \u003d tasks.get(INDEX - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" task.markNotDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" ui.showUnmarkedMessage(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" }*/","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" public String execute(TaskList tasks, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" if (INDEX \u003c 1 || INDEX \u003e tasks.size()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! duke.Tasks.Task index is out of range.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" Task task \u003d tasks.get(INDEX - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" task.markNotDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" /*String unmarkedMessage \u003d \" ____________________________________________________________\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" \" OK, I\u0027ve marked this task as not done yet:\\n\" + \" \" + task + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" + \" ____________________________________________________________\";*/","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" String unmarkedMessage \u003d \" OK, I\u0027ve marked this task as not done yet:\\n\" + \" \" + task + \"\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" storage.save(tasks.getAllTasks());","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" return unmarkedMessage;","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" * @return Always returns false, as this is not an exit command.","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":88}},{"path":"src/main/java/duke/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" * containing text from the speaker.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" private Label dialog;","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" private void flip() {","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" db.flip();","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" return db;","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"MaYuehan":61}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"public class Duke {","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" private Storage storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" private Ui ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" private Parser parser;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * Constructs a Duke object with the specified file path.","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * @param filePath The path to the file where tasks are stored.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" public Duke() {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" String filePath \u003d \"./data/botYue.txt\";","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" * Runs the chatbot, displaying welcome message and processing user commands.","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" public void run() {","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" c.execute(tasks, storage);","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" new Duke(\"./data/botYue.txt\").run();","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" * You should have your own function to generate a response to user input.","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" * Replace this stub with your completed method.","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" String getResponse(String input) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" Command com \u003d this.parser.parse(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" String res \u003d com.execute(this.tasks, this.storage);","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" return res;","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"MaYuehan":80}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":" * Represents exceptions specific to the Duke chatbot application.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" * Constructs a DukeException with the specified error message.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" * @param message The error message.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":16}},{"path":"src/main/java/duke/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"public class Launcher {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"MaYuehan":13}},{"path":"src/main/java/duke/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" private Duke duke \u003d new Duke();","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" stage.show();","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"MaYuehan":35}},{"path":"src/main/java/duke/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" private Duke duke;","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaUser.png\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaDuke.png\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" public void initialize() {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" duke \u003d d;","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" private void handleUserInput() throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" );","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" userInput.clear();","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"MaYuehan":50}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.Command;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.TodoCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.EventCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.ExitCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.ListCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.MarkCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.UnmarkCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.DeleteCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.DeadlineCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import duke.Command.FindCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"public class Parser {","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * Parses the user input and returns the corresponding command.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" * @param input The user input to be parsed.","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" * @return The command corresponding to the user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If the input cannot be parsed or an invalid command is entered.","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" public static Command parse(String input) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" String[] parts \u003d input.split(\" \", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" String command \u003d parts[0].toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" switch (command) {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" case \"bye\":","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" return new ExitCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" case \"list\":","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" case \"mark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" return parseMarkCommand(parts);","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" return parseUnmarkCommand(parts);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" case \"delete\":","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" return parseDeleteCommand(parts);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" case \"todo\":","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" return parseTodoCommand(parts);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" return parseDeadlineCommand(parts);","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" case \"event\":","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" return parseEventCommand(parts);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" case \"find\":","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" return new FindCommand(parts[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" * Parses the user input to create a MarkCommand.","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" * @param parts The input split into parts.","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" * @return The MarkCommand corresponding to the user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If the input cannot be parsed or an invalid command is entered.","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" private static Command parseMarkCommand(String[] parts) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! Please specify the task index to mark as done.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" int index \u003d Integer.parseInt(parts[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" return new MarkCommand(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! Please enter a valid task index to mark as done.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" * Parses the user input to create an UnmarkCommand.","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" * @param parts The input split into parts.","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" * @return The UnmarkCommand corresponding to the user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If the input cannot be parsed or an invalid command is entered.","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" private static Command parseUnmarkCommand(String[] parts) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! Please specify the task index to mark as not done.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" int index \u003d Integer.parseInt(parts[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" return new UnmarkCommand(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! Please enter a valid task index to mark as not done.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" * Parses the user input to create a DeleteCommand.","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" * @param parts The input split into parts.","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" * @return The DeleteCommand corresponding to the user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If the input cannot be parsed or an invalid command is entered.","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" private static Command parseDeleteCommand(String[] parts) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! Please specify the task index to delete.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" int index \u003d Integer.parseInt(parts[1].trim());","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! Please enter a valid task index to delete.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":" * Parses the user input to create a TodoCommand.","lastModifiedDate":"2024-02-02"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" * @param parts The input split into parts.","lastModifiedDate":"2024-02-02"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":" * @return The TodoCommand corresponding to the user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If the input cannot be parsed or an invalid command is entered.","lastModifiedDate":"2024-02-02"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":" private static Command parseTodoCommand(String[] parts) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! The description of a todo task cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" String description \u003d String.join(\" \", Arrays.copyOfRange(parts, 1, parts.length));","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" return new TodoCommand(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":" /*private static Command parseTodoCommand(String[] parts) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-02-07"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! The description of a todo task cannot be empty.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":135,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":136,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":137,"author":{"gitId":"MaYuehan"},"content":" String description \u003d String.join(\" \", Arrays.copyOfRange(parts, 1, parts.length));","lastModifiedDate":"2024-02-07"},{"lineNumber":138,"author":{"gitId":"MaYuehan"},"content":" return new TodoCommand(description);","lastModifiedDate":"2024-02-07"},{"lineNumber":139,"author":{"gitId":"MaYuehan"},"content":" }*/","lastModifiedDate":"2024-02-07"},{"lineNumber":140,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":143,"author":{"gitId":"MaYuehan"},"content":" * Parses the user input to create a DeadlineCommand.","lastModifiedDate":"2024-02-02"},{"lineNumber":144,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":145,"author":{"gitId":"MaYuehan"},"content":" * @param parts The input split into parts.","lastModifiedDate":"2024-02-02"},{"lineNumber":146,"author":{"gitId":"MaYuehan"},"content":" * @return The DeadlineCommand corresponding to the user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":147,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If the input cannot be parsed or an invalid command is entered.","lastModifiedDate":"2024-02-02"},{"lineNumber":148,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":149,"author":{"gitId":"MaYuehan"},"content":" private static Command parseDeadlineCommand(String[] parts) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":150,"author":{"gitId":"MaYuehan"},"content":" String task \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":151,"author":{"gitId":"MaYuehan"},"content":" String by \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":152,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":153,"author":{"gitId":"MaYuehan"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":154,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! The description of a deadline task cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"MaYuehan"},"content":" String[] split \u003d parts[1].split(\"/by\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"MaYuehan"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! The deadline of a deadline task cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":162,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":163,"author":{"gitId":"MaYuehan"},"content":" if (split.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":164,"author":{"gitId":"MaYuehan"},"content":" task \u003d split[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"MaYuehan"},"content":" by \u003d split[1].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"MaYuehan"},"content":" return new DeadlineCommand(task, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":171,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":173,"author":{"gitId":"MaYuehan"},"content":" * Parses the user input to create an EventCommand.","lastModifiedDate":"2024-02-02"},{"lineNumber":174,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":175,"author":{"gitId":"MaYuehan"},"content":" * @param parts The input split into parts.","lastModifiedDate":"2024-02-02"},{"lineNumber":176,"author":{"gitId":"MaYuehan"},"content":" * @return The EventCommand corresponding to the user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":177,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If the input cannot be parsed or an invalid command is entered.","lastModifiedDate":"2024-02-02"},{"lineNumber":178,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":179,"author":{"gitId":"MaYuehan"},"content":" private static Command parseEventCommand(String[] parts) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":180,"author":{"gitId":"MaYuehan"},"content":" String task \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":181,"author":{"gitId":"MaYuehan"},"content":" String from \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"MaYuehan"},"content":" String to \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"MaYuehan"},"content":" if (parts.length \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! The time of an event task cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":186,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"MaYuehan"},"content":" String[] split \u003d parts[1].split(\"/from\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":189,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":190,"author":{"gitId":"MaYuehan"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":191,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! The time of an event task cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":192,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":193,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":194,"author":{"gitId":"MaYuehan"},"content":" if (split.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":195,"author":{"gitId":"MaYuehan"},"content":" task \u003d split[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":196,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":197,"author":{"gitId":"MaYuehan"},"content":" String[] details \u003d split[1].split(\"/to\", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":198,"author":{"gitId":"MaYuehan"},"content":" if (details.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":199,"author":{"gitId":"MaYuehan"},"content":" from \u003d details[0].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":200,"author":{"gitId":"MaYuehan"},"content":" to \u003d details[1].trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":201,"author":{"gitId":"MaYuehan"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":202,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"OOPS!!! The end time of an event task cannot be empty.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":203,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":204,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":205,"author":{"gitId":"MaYuehan"},"content":" return new EventCommand(task, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":206,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":207,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":208,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":208}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TodoTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.DeadlineTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.EventTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.EventTaskLoad;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.DeadlineTaskLoad;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"import java.io.File;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * The Storage class handles the loading and saving of tasks to a file.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"public class Storage {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" private String filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" * Loads tasks from the file and returns them as a list.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" * @return The list of tasks loaded from the file.","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If there is an error loading tasks from the file.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" public List\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" if (file.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" if (parts.length \u003e\u003d 3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" Task task;","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" case \"T\":","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" task \u003d new TodoTask(parts[2]);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" case \"D\":","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" task \u003d new DeadlineTaskLoad(parts[2], parts[3]);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" case \"E\":","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" task \u003d new EventTaskLoad(parts[2], parts[3]);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" continue;","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" task.markDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" scanner.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"Error loading tasks from file: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" * Saves the given list of tasks to the file.","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks to be saved.","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" * @throws DukeException If there is an error saving tasks to the file.","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" public void save(List\u003cTask\u003e tasks) throws DukeException {","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" FileWriter writer \u003d new FileWriter(file);","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" String taskType;","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" if (task instanceof TodoTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" taskType \u003d \"T\";","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof DeadlineTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":" taskType \u003d \"D\";","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof DeadlineTaskLoad) {","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" taskType \u003d \"D\";","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof EventTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" taskType \u003d \"E\";","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof EventTaskLoad) {","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" taskType \u003d \"E\";","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" continue;","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":" writer.write(taskType + \" | \" + (task.marked ? \"1\" : \"0\") + \" | \" + task.getTask());","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":" if (task instanceof DeadlineTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":" writer.write(\" | \" + ((DeadlineTask) task).getDateTime());","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof EventTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" writer.write(\" | \" + ((EventTask) task).getDateTime());","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof EventTaskLoad) {","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":" writer.write(\" | \" + ((EventTaskLoad) task).getTime());","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":" } else if (task instanceof DeadlineTaskLoad) {","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":" writer.write(\" | \" + ((DeadlineTaskLoad) task).getBy());","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" writer.write(System.lineSeparator());","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":" writer.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" throw new DukeException(\"Error saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":138}},{"path":"src/main/java/duke/Tasks/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.Locale;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" * Represents a task with a deadline.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" private final LocalDateTime deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" int CHECK \u003d 0;","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" * Constructs a DeadlineTask object with the given description and deadline string.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" * @param deadlineStr The deadline string in various formats.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" public DeadlineTask(String description, String deadlineStr) {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" this.deadline \u003d parseDateTime(deadlineStr);","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" * Parses the deadline string into a LocalDateTime object.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" * @param time The deadline string in various formats.","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" * @return The LocalDateTime object representing the deadline.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" * @throws DateTimeParseException If the deadline string cannot be parsed.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" private LocalDateTime parseDateTime(String time) throws DateTimeParseException {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime dateTime \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter1 \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter3 \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter4 \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy\");","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" CHECK \u003d 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d LocalDateTime.parse(time, formatter1);","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" CHECK \u003d 2;","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d LocalDateTime.parse(time, formatter2);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" CHECK \u003d 3;","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" LocalDate date \u003d LocalDate.parse(time, formatter3);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d date.atStartOfDay();","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" CHECK \u003d 4;","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" LocalDate date \u003d LocalDate.parse(time, formatter4);","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d date.atStartOfDay();","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e4) {","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" throw new DateTimeParseException(\"Unable to parse date/time: \" + time, time, 0, e2);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" return dateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" * Formats the deadline date and time into a string.","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" * @param dateTime The LocalDateTime object representing the deadline.","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" * @return The formatted string representing the deadline.","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" String formatDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" if (CHECK \u003d\u003d 1 || CHECK \u003d\u003d 2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\", Locale.ENGLISH);","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\", Locale.ENGLISH);","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" return dateTime.format(formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" * Gets the formatted deadline date and time string.","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" * @return The formatted deadline date and time string.","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" public String getDateTime() {","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" return formatDateTime(deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" return \"[D]\" + super.toString() + \" (by: \" + formatDateTime(deadline) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" public String tag() {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" return \"[D]\";","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":117}},{"path":"src/main/java/duke/Tasks/DeadlineTaskLoad.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":" * Represents a deadline task loaded from storage.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"public class DeadlineTaskLoad extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" private String by;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" * Constructs a DeadlineTaskLoad object with the given task description and deadline.","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" * @param task The task description.","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" * @param by The deadline of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" public DeadlineTaskLoad(String task, String by) {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" super(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" * Gets the deadline of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * @return The deadline of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" public String getBy() {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" return by;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" * Returns a string representation of the deadline task.","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" * @return The string representation of the deadline task.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" * Returns the tag for the deadline task.","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" * @return The tag for the deadline task.","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" public String tag() {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" return \"[D]\";","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":53}},{"path":"src/main/java/duke/Tasks/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.Locale;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" * Represents a task with an event duration.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"public class EventTask extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" private LocalDateTime startTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" int CHECK \u003d 0;","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" * Constructs an EventTask object with the given description, start time string, and end time string.","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" * @param description The description of the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" * @param startTimeString The start time string in various formats.","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * @param endTimeString The end time string in various formats.","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" public EventTask(String description, String startTimeString, String endTimeString) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" this.startTime \u003d parseDateTime(startTimeString);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" this.endTime \u003d parseDateTime(endTimeString);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" * Parses the time string into a LocalDateTime object.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" * @param time The time string in various formats.","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" * @return The LocalDateTime object representing the time.","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" * @throws DateTimeParseException If the time string cannot be parsed.","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" private LocalDateTime parseDateTime(String time) throws DateTimeParseException {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime dateTime \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter1 \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter3 \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter4 \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy\");","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" CHECK \u003d 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d LocalDateTime.parse(time, formatter1);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" CHECK \u003d 2;","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d LocalDateTime.parse(time, formatter2);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" CHECK \u003d 3;","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" LocalDate date \u003d LocalDate.parse(time, formatter3);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d date.atStartOfDay();","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" CHECK \u003d 4;","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" LocalDate date \u003d LocalDate.parse(time, formatter4);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d date.atStartOfDay();","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e4) {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" CHECK \u003d 5;","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" throw new DateTimeParseException(\"Unable to parse date/time: \" + time, time, 0, e2);","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" return dateTime;","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" * Formats the date and time into a string.","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" * @param dateTime The LocalDateTime object representing the date and time.","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" * @return The formatted string representing the date and time.","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" private String formatDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter;","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" if (CHECK \u003d\u003d 1 || CHECK \u003d\u003d 2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\", Locale.ENGLISH);","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":" formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\", Locale.ENGLISH);","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" return dateTime.format(formatter);","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" * Gets the formatted start time string.","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" * @return The formatted start time string.","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":" public String getStartTime() {","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":" String time \u003d formatDateTime(startTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" return time;","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" * Gets the formatted end time string.","lastModifiedDate":"2024-02-02"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" * @return The formatted end time string.","lastModifiedDate":"2024-02-02"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" public String getEndTime() {","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":" String time \u003d formatDateTime(endTime);","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":" return time;","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":" * Gets the formatted event duration string.","lastModifiedDate":"2024-02-02"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":" * @return The formatted event duration string.","lastModifiedDate":"2024-02-02"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":" public String getDateTime() {","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":" return getStartTime() + \"-\" + getEndTime();","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" public String tag() {","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":" return \"[E]\";","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":135,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":136,"author":{"gitId":"MaYuehan"},"content":" return \"[E]\" + super.toString() + \" (from: \" + formatDateTime(startTime) + \" to: \" + formatDateTime(endTime) + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":137,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":139}},{"path":"src/main/java/duke/Tasks/EventTaskLoad.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":" * Represents an event task loaded from storage.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"public class EventTaskLoad extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" private String time;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" private String from;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" private String to;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" * Constructs an EventTaskLoad object with the given task description and time.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * @param task The task description.","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" * @param time The time of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" public EventTaskLoad(String task, String time) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" super(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" parseEventLoad(time);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" this.time \u003d time;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" * Gets the time of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" * @return The time of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" public String getTime() {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" return time;","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" * Parses the time string to extract the start and end times of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" * @param time The time string representing the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" private void parseEventLoad(String time) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" String[] split \u003d time.split(\"-\", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" if (split.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" this.from \u003d split[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" this.to \u003d split[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" * Returns a string representation of the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" * @return The string representation of the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" return tag() + mark() + \" \" + task + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" * Returns the tag for the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" * @return The tag for the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" public String tag() {","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" return \"[E]\";","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"MaYuehan":69}},{"path":"src/main/java/duke/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":" * Represents a generic task.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" String task;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" public boolean marked;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" * Constructs a Task object with the given task description.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * @param task The description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" public Task(String task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" this.marked \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" * Gets the description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" * @return The description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" public String getTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" return task;","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" * Marks the task as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" public void markDone() {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" marked \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" * Marks the task as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" public void markNotDone() {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" marked \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" * Returns a string representing the task\u0027s status.","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" * @return The task\u0027s status string.","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" public String mark() {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" return (marked ? \"[X]\" : \"[ ]\");","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" * @return The string representation of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" public abstract String tag();","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" * @return The string representation of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" return mark() + \" \" + task;","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"MaYuehan":76}},{"path":"src/main/java/duke/Tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" * Represents a list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"public class TaskList {","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" * Constructs a TaskList object with the given list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" * @param task The task to add.","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" * @param index The index of the task to delete.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" public void delete(int index) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" tasks.remove(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" * Gets all tasks in the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" * @return The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" public List\u003cTask\u003e getAllTasks() {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" return tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" * Gets the task at the specified index in the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" * @param index The index of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" * @return The task at the specified index.","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" * @throws IndexOutOfBoundsException If the index is out of bounds.","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" public Task get(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" throw new IndexOutOfBoundsException(\"Index is out of bounds\");","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" * Gets the number of tasks in the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" * @return The number of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" public int size() {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" return tasks.size();","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":73}},{"path":"src/main/java/duke/Tasks/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":" * Represents a todo task.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"public class TodoTask extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" * Constructs a TodoTask object with the given task description.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" * @param task The task description.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" public TodoTask(String task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" super(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * Returns the tag for the todo task.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" * @return The tag for the todo task.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" public String tag() {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" return \"[T]\";","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" * Returns a string representation of the todo task.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" * @return The string representation of the todo task.","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" return tag() + mark() + \" \" + task;","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"MaYuehan":38}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"import java.io.InputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" * Handles user interaction, including input and output.","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"public class Ui {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" * Constructs a Ui object with a Scanner for user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" public Ui() {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" public String greet() {","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" return \"Hello! I\u0027m BotYue. \\nWhat can I do for you?\";","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" * Reads a command entered by the user.","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" * @return The command entered by the user.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" return scanner.nextLine().trim();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" * Displays a welcome message when the program starts.","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Hello! I\u0027m BotYue\");","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" * Displays the list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" * @param tasks The list of tasks to display.","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + (i + 1) + \". \" + tasks.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" * Displays a message confirming that a task has been marked as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" * @param task The task that has been marked as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":" public void showMarkedMessage(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" * Displays a message confirming that a task has been marked as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":" * @param task The task that has been marked as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"MaYuehan"},"content":" public void showUnmarkedMessage(Task task) {","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":94,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":95,"author":{"gitId":"MaYuehan"},"content":" * Displays a message confirming that a task has been deleted.","lastModifiedDate":"2024-02-02"},{"lineNumber":96,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"MaYuehan"},"content":" * @param task The task that has been deleted.","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"MaYuehan"},"content":" * @param count The updated number of tasks in the list.","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"MaYuehan"},"content":" public static void showDeletedMessage(Task task, int count) {","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Now you have \" + count + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":109,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":110,"author":{"gitId":"MaYuehan"},"content":" * Displays a goodbye message when the user exits the program.","lastModifiedDate":"2024-02-02"},{"lineNumber":111,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":112,"author":{"gitId":"MaYuehan"},"content":" public static void showGoodbyeMessage() {","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":120,"author":{"gitId":"MaYuehan"},"content":" * Displays a message confirming that a task has been added.","lastModifiedDate":"2024-02-02"},{"lineNumber":121,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":122,"author":{"gitId":"MaYuehan"},"content":" * @param task The task that has been added.","lastModifiedDate":"2024-02-02"},{"lineNumber":123,"author":{"gitId":"MaYuehan"},"content":" * @param count The updated number of tasks in the list.","lastModifiedDate":"2024-02-02"},{"lineNumber":124,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":125,"author":{"gitId":"MaYuehan"},"content":" public void showAddedMessage(Task task, int count) {","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Now you have \" + count + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":134,"author":{"gitId":"MaYuehan"},"content":" * Displays the tasks that match the given keyword in the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":135,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":136,"author":{"gitId":"MaYuehan"},"content":" * @param matchingTasks The task list containing tasks to search within.","lastModifiedDate":"2024-02-02"},{"lineNumber":137,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":138,"author":{"gitId":"MaYuehan"},"content":" public void showMatchingTasks(List\u003cTask\u003e matchingTasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":139,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":140,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Here are the matching tasks in your list:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":141,"author":{"gitId":"MaYuehan"},"content":" for (int i \u003d 0; i \u003c matchingTasks.size(); i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":142,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + (i + 1) + \". \" + matchingTasks.get(i));","lastModifiedDate":"2024-02-02"},{"lineNumber":143,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":144,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":145,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":146,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":147,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":148,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":149,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":150,"author":{"gitId":"MaYuehan"},"content":" * Displays an error message.","lastModifiedDate":"2024-02-02"},{"lineNumber":151,"author":{"gitId":"MaYuehan"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":152,"author":{"gitId":"MaYuehan"},"content":" * @param message The error message to display.","lastModifiedDate":"2024-02-02"},{"lineNumber":153,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":154,"author":{"gitId":"MaYuehan"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":155,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + message);","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"MaYuehan"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":162,"author":{"gitId":"MaYuehan"},"content":" * Displays an error message when tasks fail to load from file.","lastModifiedDate":"2024-02-02"},{"lineNumber":163,"author":{"gitId":"MaYuehan"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":164,"author":{"gitId":"MaYuehan"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-29"},{"lineNumber":165,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\"Error loading tasks from file.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":166,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":167,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":168,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":169,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":170,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"MaYuehan":170}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"MaYuehan":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.MainWindow\"\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"MaYuehan":19}},{"path":"src/test/java/duke/Tasks/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.Locale;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" private final LocalDateTime deadline;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" int check \u003d 0;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" public DeadlineTask(String description, String deadlineStr) {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" super(description);","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" this.deadline \u003d parseDateTime(deadlineStr);","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" private LocalDateTime parseDateTime(String time) throws DateTimeParseException {","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime dateTime \u003d null;","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter1 \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter3 \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter4 \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy\");","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" check \u003d 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d LocalDateTime.parse(time, formatter1);","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" check \u003d 2;","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d LocalDateTime.parse(time, formatter2);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" check \u003d 3;","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" LocalDate date \u003d LocalDate.parse(time, formatter3);","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d date.atStartOfDay();","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e3) {","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" check \u003d 4;","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" LocalDate date \u003d LocalDate.parse(time, formatter4);","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" dateTime \u003d date.atStartOfDay();","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" } catch (DateTimeParseException e4) {","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" throw new DateTimeParseException(\"Unable to parse date/time: \" + time, time, 0, e2);","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" return dateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" String formatDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" DateTimeFormatter formatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" if (check \u003d\u003d 1 || check \u003d\u003d 2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\", Locale.ENGLISH);","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":" formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\", Locale.ENGLISH);","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" return dateTime.format(formatter);","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" public String getDateTime() {","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" return formatDateTime(deadline);","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" return \"[D]\" + super.toString() + \" (by: \" + formatDateTime(deadline) + \")\";","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" public String tag() {","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":" return \"[D]\";","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"MaYuehan":85}},{"path":"src/test/java/duke/Tasks/DeadlineTaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"public class DeadlineTaskTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" public void testFormatDateTime() {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" LocalDateTime dateTime \u003d LocalDateTime.of(2024, 1, 30, 15, 30);","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" DeadlineTask task \u003d new DeadlineTask(\"Test Deadline\", \"2024-01-30 1530\");","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" String formattedDateTime \u003d task.formatDateTime(dateTime);","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" assertEquals(\"Jan 30 2024 15:30\", formattedDateTime);","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"MaYuehan":18}},{"path":"src/test/java/duke/Tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"public abstract class Task {","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":" String task;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":" public boolean marked;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" public Task(String task) {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" this.task \u003d task;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" this.marked \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" public String getTask() {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" return task;","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" public void markDone() {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" marked \u003d true;","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" public void markNotDone() {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" marked \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" public String mark() {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" return (marked ? \"[X]\" : \"[ ]\");","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" public abstract String tag();","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" return mark() + \" \" + task;","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"MaYuehan":38}},{"path":"src/test/java/duke/Tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.util.List;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"public class TaskList {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" public void delete(int index) {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" tasks.remove(index);","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" public List\u003cTask\u003e getAllTasks() {","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" return tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" public Task get(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" if (index \u003c 0 || index \u003e\u003d tasks.size()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" throw new IndexOutOfBoundsException(\"Index is out of bounds\");","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" return tasks.get(index);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" public int size() {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" return tasks.size();","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"MaYuehan":40}},{"path":"src/test/java/duke/Tasks/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke.Tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"public class TodoTask extends Task {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":" public TodoTask(String task) {","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":" super(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":" public String tag() {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" return \"[T]\";","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" return tag() + mark() + \" \" + task;","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"MaYuehan":17}},{"path":"src/test/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"public class Ui {","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":" private Scanner scanner;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":" public Ui() {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" public String readCommand() {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" return scanner.nextLine().trim();","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":" public void showWelcome() {","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Hello! I\u0027m BotYue\");","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" What can I do for you?\");","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Here are the tasks in your list:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + (i + 1) + \". \" + tasks.get(i));","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" public void showMarkedMessage(Task task) {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"MaYuehan"},"content":" public void showUnmarkedMessage(Task task) {","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"MaYuehan"},"content":" public static void showDeletedMessage(Task task, int count) {","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Now you have \" + count + \" tasks in the list.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"MaYuehan"},"content":" public static void showGoodbyeMessage() {","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"MaYuehan"},"content":" public void showAddedMessage(Task task, int count) {","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" Now you have \" + count + \" tasks in the list.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"MaYuehan"},"content":" public void showError(String message) {","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" \" + message);","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"MaYuehan"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"MaYuehan"},"content":" System.out.println(\"Error loading tasks from file.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"MaYuehan":84}},{"path":"src/test/java/duke/UiTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"package duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"import java.io.PrintStream;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"import duke.Tasks.*;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"public class UiTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"MaYuehan"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"MaYuehan"},"content":" public void testShowAddedMessage() {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"MaYuehan"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"MaYuehan"},"content":" String taskDescription \u003d \"return book\";","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"MaYuehan"},"content":" Task task \u003d new TodoTask(taskDescription);","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"MaYuehan"},"content":" int count \u003d 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"MaYuehan"},"content":" String expectedMessage \u003d \" ____________________________________________________________\\n\" +","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"MaYuehan"},"content":" \" Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"MaYuehan"},"content":" \" \" + task.tag() + task.mark() + \" \" + taskDescription + \"\\n\" +","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"MaYuehan"},"content":" \" Now you have \" + count + \" tasks in the list.\\n\" +","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"MaYuehan"},"content":" \" ____________________________________________________________\\n\";","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"MaYuehan"},"content":" // Redirect System.out to capture the output","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"MaYuehan"},"content":" ByteArrayOutputStream outContent \u003d new ByteArrayOutputStream();","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"MaYuehan"},"content":" System.setOut(new PrintStream(outContent));","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"MaYuehan"},"content":" // Call the method","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"MaYuehan"},"content":" ui.showAddedMessage(task, count);","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"MaYuehan"},"content":" // Reset System.out","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"MaYuehan"},"content":" System.setOut(System.out);","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"MaYuehan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"MaYuehan"},"content":" // Check the output","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"MaYuehan"},"content":" assertEquals(expectedMessage, outContent.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"MaYuehan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"MaYuehan"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"MaYuehan":38}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"MaYuehan"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"MaYuehan"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"MaYuehan"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"MaYuehan"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"MaYuehan"},"content":"todo","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"MaYuehan"},"content":"blah","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"MaYuehan"},"content":"deadline","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"MaYuehan"},"content":"event","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"MaYuehan"},"content":"delete 2","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"MaYuehan"},"content":"list","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"MaYuehan":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":"MaYuehan"},"content":"java -classpath ..\\bin duke.duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-02"},{"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":{"MaYuehan":1,"-":20}}] diff --git a/MaYuehan_ip_master/commits.json b/MaYuehan_ip_master/commits.json index f0db7a25..b43cd87b 100644 --- a/MaYuehan_ip_master/commits.json +++ b/MaYuehan_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"MaYuehan":[{"date":"2024-01-22","commitResults":[{"hash":"9e5e584793712ea6159ffe9ca2e9c6e6a57c2b80","isMergeCommit":false,"messageTitle":"Implement an initial skeletal version of it that simply greets the user and exits.Change name to BotYue","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"e2c4b6d50bf66e58b7a0b89161e4c2b7c58a55e7","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":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":2}}},{"hash":"5f2b174fdc3ad4b35770b2d8a5aa2781129345a4","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":64,"deletions":1}}},{"hash":"87580fdd4d919d57d160aa5883d5f4be68df46c3","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"],"fileTypesAndContributionMap":{"java":{"insertions":142,"deletions":1}}}]},{"date":"2024-01-23","commitResults":[{"hash":"8691d94d9505ffe2c5a054c55767ce633174de4d","isMergeCommit":false,"messageTitle":"Add support for tracking three types of tasks: ToDos: tasks without any date/time attached to it Deadlines: tasks that need to be done before a specific date/time Events: tasks that start at a specific date/time and ends at a specific date/time","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":231,"deletions":10}}},{"hash":"8a86c2fc20b745c79e53e311a9473eed137d475f","isMergeCommit":false,"messageTitle":"fix the identation, add the input and expected output for A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":6,"deletions":6}}},{"hash":"32360bb82aaaed7b24271f5aaf16c7cba6a2f98b","isMergeCommit":false,"messageTitle":"Teach the chatbot to deal with errors such as incorrect inputs entered by the user.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":256,"deletions":1}}},{"hash":"ee609f0a0e0d9a02e39bc6b0f9760bc6ae872285","isMergeCommit":false,"messageTitle":"update the A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting(Level-5)"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1}}},{"hash":"e08fc29e3cb9df2a95e80de8737cf66fc9c499e7","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":1}}},{"hash":"e5e3633533c7f5e74d39309fbdf530374e99e818","isMergeCommit":false,"messageTitle":"update the A-TextUiTesting for level 6","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}}]},{"date":"2024-01-28","commitResults":[{"hash":"906e3165ecd9a97e3c80dde634ca2cb3a1ed5107","isMergeCommit":false,"messageTitle":"Use Java enum","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":296,"deletions":6}}},{"hash":"cf5c412a771e3f618b5dd2ccb92012d7cd3896b0","isMergeCommit":false,"messageTitle":"update enum","messageBody":"","tags":["A-Enums-update"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"f11c48c6a46668bb745b0147b368106785350fd8","isMergeCommit":false,"messageTitle":"refactor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":109}}},{"hash":"f1fa49acb5e64d70f50028c5e0446b9eb1e7653a","isMergeCommit":false,"messageTitle":"create new classes and file for level7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":58,"deletions":0}}},{"hash":"b1268beb57eaf5ed79ba2d99f4ba1a0f7d400805","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes. Load the data from the hard disk when the chatbot starts up.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":133,"deletions":10}}},{"hash":"98bbad76caac80673640424316d576c639b0847b","isMergeCommit":false,"messageTitle":"level 7 update","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"8752dc4b5601ff040b0239a13b6c549a99852525","isMergeCommit":false,"messageTitle":"update level7","messageBody":"","tags":["level7-update"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":4}}},{"hash":"14870e3929aa17e0f6ae709e06adf96fc2df8868","isMergeCommit":false,"messageTitle":"update","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":5,"deletions":5}}}]},{"date":"2024-01-29","commitResults":[{"hash":"c5c396642ac6de90faf7b30646c67b40bdd176dd","isMergeCommit":false,"messageTitle":"Teach the chatbot how to understand dates and times.","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":3},"java":{"insertions":295,"deletions":4}}},{"hash":"57acfd6788cfadd2cd282408d48f311d6d9570c2","isMergeCommit":false,"messageTitle":"update","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":1,"deletions":777}}},{"hash":"12849c185c4bb903bc2f4eb970aea00fd8566e0b","isMergeCommit":false,"messageTitle":"Refactor the code to extract out closely related code as classes.","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":3},"java":{"insertions":757,"deletions":9}}},{"hash":"9a0442db6ba7555a712ba8e564df50865fe95864","isMergeCommit":false,"messageTitle":"add packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":159,"deletions":54}}},{"hash":"f8bbfcf2a2d0c343b219422a3dca14a3295f0870","isMergeCommit":false,"messageTitle":"add package2","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":4},"java":{"insertions":19,"deletions":20},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"c1ddfdc39f9b25b38dbdf874493896cbc0defda9","isMergeCommit":false,"messageTitle":"update","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":1,"deletions":6}}},{"hash":"9dc6bf08b7b10c9207497f0f99ac29cb11884ee9","isMergeCommit":true,"messageTitle":"Merge commit \u0027a6f73244a20539e20c2189973ebf597df34ef631\u0027","messageBody":"","tags":["Merge-gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-01","commitResults":[{"hash":"b221c5f996b12ebca0fc61fc42d041f6d871f776","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":10,"deletions":4},"txt":{"insertions":2,"deletions":2},"java":{"insertions":0,"deletions":1}}}]},{"date":"2024-02-02","commitResults":[{"hash":"4b46ea28486838ba5579fa48c079bd9e2bde0e81","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":320,"deletions":0}}},{"hash":"eaf3a5c2c73d9aa8904ed4a792cc58a708157a4b","isMergeCommit":false,"messageTitle":"Add JavaDoc comments","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":20,"deletions":5},"txt":{"insertions":1,"deletions":1},"java":{"insertions":577,"deletions":110},"bat":{"insertions":1,"deletions":1},"md":{"insertions":3,"deletions":3}}},{"hash":"e834e953fcc5ae6924a05ef5085edd9d9b76cb99","isMergeCommit":false,"messageTitle":"add javadoc comment","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"c36bc62e3cd01f288126163087ac3ae89294d25c","isMergeCommit":false,"messageTitle":"Tweak the code to comply with a coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":294}}},{"hash":"2d04033e4e9ae000aa7a54f9032b4d389c36ff7e","isMergeCommit":false,"messageTitle":"conding standard update","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":8}}},{"hash":"db50359892f5034145aff6fcbb2571974aaa83ee","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Command/MarkCommand.java\n","fileTypesAndContributionMap":{}},{"hash":"ef1f4585a38d89a05801751246627c1f230fadae","isMergeCommit":false,"messageTitle":"Give users a way to find a task by searching for a keyword.","messageBody":"","tags":["Level-9","A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":7}}}]},{"date":"2024-02-05","commitResults":[{"hash":"2c10cf02c8200f8cdf3b5e02f465fe80dbe81251","isMergeCommit":false,"messageTitle":"Update the description of the ip so that it contains the following GFMD elements:a heading, a bullet list, a numbered list, a fenced code block (with syntax highlighting), a task list, an emoji, a blockquote, a hyperlink, inline code, some text formatting: bold, italic, strikethrough etc.","messageBody":"","tags":["GFMD"],"fileTypesAndContributionMap":{"md":{"insertions":36,"deletions":24}}},{"hash":"396a3951bd17e3ccb9b560677d18d575816e928b","isMergeCommit":false,"messageTitle":"update the readme file of this project, add the main classes into the readme file.","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":41,"deletions":2}}}]},{"date":"2024-02-06","commitResults":[{"hash":"5ca705fef7a15559ecfc0caf1612745bc7ea897a","isMergeCommit":false,"messageTitle":"Add a GUI to the chatbot. Use the JavaFX technology to implement the GUI.","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":10,"deletions":8},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":320,"deletions":0}}},{"hash":"a81fc7ae096882f8cefebd8e8e8879d41791acad","isMergeCommit":false,"messageTitle":"Add a GUI to the chatbot. Use the JavaFX technology to implement the GUI.","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"MaYuehan":{"java":2571,"md":76,"fxml":35,"sh":0,"bat":1,"gradle":21,"txt":23}},"authorContributionVariance":{"MaYuehan":328991.97},"authorDisplayNameMap":{"MaYuehan":"CS2103T-W08-2 MA Y..EHAN"}} +{"authorDailyContributionsMap":{"MaYuehan":[{"date":"2024-01-22","commitResults":[{"hash":"9e5e584793712ea6159ffe9ca2e9c6e6a57c2b80","isMergeCommit":false,"messageTitle":"Implement an initial skeletal version of it that simply greets the user and exits.Change name to BotYue","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":6}}},{"hash":"e2c4b6d50bf66e58b7a0b89161e4c2b7c58a55e7","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":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":2}}},{"hash":"5f2b174fdc3ad4b35770b2d8a5aa2781129345a4","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":64,"deletions":1}}},{"hash":"87580fdd4d919d57d160aa5883d5f4be68df46c3","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"],"fileTypesAndContributionMap":{"java":{"insertions":142,"deletions":1}}}]},{"date":"2024-01-23","commitResults":[{"hash":"8691d94d9505ffe2c5a054c55767ce633174de4d","isMergeCommit":false,"messageTitle":"Add support for tracking three types of tasks: ToDos: tasks without any date/time attached to it Deadlines: tasks that need to be done before a specific date/time Events: tasks that start at a specific date/time and ends at a specific date/time","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":231,"deletions":10}}},{"hash":"8a86c2fc20b745c79e53e311a9473eed137d475f","isMergeCommit":false,"messageTitle":"fix the identation, add the input and expected output for A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":6,"deletions":6}}},{"hash":"32360bb82aaaed7b24271f5aaf16c7cba6a2f98b","isMergeCommit":false,"messageTitle":"Teach the chatbot to deal with errors such as incorrect inputs entered by the user.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":256,"deletions":1}}},{"hash":"ee609f0a0e0d9a02e39bc6b0f9760bc6ae872285","isMergeCommit":false,"messageTitle":"update the A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting(Level-5)"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":1}}},{"hash":"e08fc29e3cb9df2a95e80de8737cf66fc9c499e7","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":1}}},{"hash":"e5e3633533c7f5e74d39309fbdf530374e99e818","isMergeCommit":false,"messageTitle":"update the A-TextUiTesting for level 6","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}}]},{"date":"2024-01-28","commitResults":[{"hash":"906e3165ecd9a97e3c80dde634ca2cb3a1ed5107","isMergeCommit":false,"messageTitle":"Use Java enum","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":296,"deletions":6}}},{"hash":"cf5c412a771e3f618b5dd2ccb92012d7cd3896b0","isMergeCommit":false,"messageTitle":"update enum","messageBody":"","tags":["A-Enums-update"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"f11c48c6a46668bb745b0147b368106785350fd8","isMergeCommit":false,"messageTitle":"refactor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":109}}},{"hash":"f1fa49acb5e64d70f50028c5e0446b9eb1e7653a","isMergeCommit":false,"messageTitle":"create new classes and file for level7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":58,"deletions":0}}},{"hash":"b1268beb57eaf5ed79ba2d99f4ba1a0f7d400805","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes. Load the data from the hard disk when the chatbot starts up.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":1},"java":{"insertions":133,"deletions":10}}},{"hash":"98bbad76caac80673640424316d576c639b0847b","isMergeCommit":false,"messageTitle":"level 7 update","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}},{"hash":"8752dc4b5601ff040b0239a13b6c549a99852525","isMergeCommit":false,"messageTitle":"update level7","messageBody":"","tags":["level7-update"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":4}}},{"hash":"14870e3929aa17e0f6ae709e06adf96fc2df8868","isMergeCommit":false,"messageTitle":"update","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":5,"deletions":5}}}]},{"date":"2024-01-29","commitResults":[{"hash":"c5c396642ac6de90faf7b30646c67b40bdd176dd","isMergeCommit":false,"messageTitle":"Teach the chatbot how to understand dates and times.","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":3},"java":{"insertions":295,"deletions":4}}},{"hash":"57acfd6788cfadd2cd282408d48f311d6d9570c2","isMergeCommit":false,"messageTitle":"update","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":1,"deletions":777}}},{"hash":"12849c185c4bb903bc2f4eb970aea00fd8566e0b","isMergeCommit":false,"messageTitle":"Refactor the code to extract out closely related code as classes.","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":3},"java":{"insertions":757,"deletions":9}}},{"hash":"9a0442db6ba7555a712ba8e564df50865fe95864","isMergeCommit":false,"messageTitle":"add packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":159,"deletions":54}}},{"hash":"f8bbfcf2a2d0c343b219422a3dca14a3295f0870","isMergeCommit":false,"messageTitle":"add package2","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":4},"java":{"insertions":19,"deletions":20},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"c1ddfdc39f9b25b38dbdf874493896cbc0defda9","isMergeCommit":false,"messageTitle":"update","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":1,"deletions":6}}},{"hash":"9dc6bf08b7b10c9207497f0f99ac29cb11884ee9","isMergeCommit":true,"messageTitle":"Merge commit \u0027a6f73244a20539e20c2189973ebf597df34ef631\u0027","messageBody":"","tags":["Merge-gradle"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-01","commitResults":[{"hash":"b221c5f996b12ebca0fc61fc42d041f6d871f776","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":10,"deletions":4},"txt":{"insertions":2,"deletions":2},"java":{"insertions":0,"deletions":1}}}]},{"date":"2024-02-02","commitResults":[{"hash":"4b46ea28486838ba5579fa48c079bd9e2bde0e81","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":320,"deletions":0}}},{"hash":"eaf3a5c2c73d9aa8904ed4a792cc58a708157a4b","isMergeCommit":false,"messageTitle":"Add JavaDoc comments","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":20,"deletions":5},"txt":{"insertions":1,"deletions":1},"java":{"insertions":577,"deletions":110},"bat":{"insertions":1,"deletions":1},"md":{"insertions":3,"deletions":3}}},{"hash":"e834e953fcc5ae6924a05ef5085edd9d9b76cb99","isMergeCommit":false,"messageTitle":"add javadoc comment","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"c36bc62e3cd01f288126163087ac3ae89294d25c","isMergeCommit":false,"messageTitle":"Tweak the code to comply with a coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":294}}},{"hash":"2d04033e4e9ae000aa7a54f9032b4d389c36ff7e","isMergeCommit":false,"messageTitle":"conding standard update","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":8}}},{"hash":"db50359892f5034145aff6fcbb2571974aaa83ee","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Command/MarkCommand.java\n","fileTypesAndContributionMap":{}},{"hash":"ef1f4585a38d89a05801751246627c1f230fadae","isMergeCommit":false,"messageTitle":"Give users a way to find a task by searching for a keyword.","messageBody":"","tags":["Level-9","A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":7}}}]},{"date":"2024-02-05","commitResults":[{"hash":"2c10cf02c8200f8cdf3b5e02f465fe80dbe81251","isMergeCommit":false,"messageTitle":"Update the description of the ip so that it contains the following GFMD elements:a heading, a bullet list, a numbered list, a fenced code block (with syntax highlighting), a task list, an emoji, a blockquote, a hyperlink, inline code, some text formatting: bold, italic, strikethrough etc.","messageBody":"","tags":["GFMD"],"fileTypesAndContributionMap":{"md":{"insertions":36,"deletions":24}}},{"hash":"396a3951bd17e3ccb9b560677d18d575816e928b","isMergeCommit":false,"messageTitle":"update the readme file of this project, add the main classes into the readme file.","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":41,"deletions":2}}}]},{"date":"2024-02-06","commitResults":[{"hash":"5ca705fef7a15559ecfc0caf1612745bc7ea897a","isMergeCommit":false,"messageTitle":"Add a GUI to the chatbot. Use the JavaFX technology to implement the GUI.","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":10,"deletions":8},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":320,"deletions":0}}},{"hash":"a81fc7ae096882f8cefebd8e8e8879d41791acad","isMergeCommit":false,"messageTitle":"Add a GUI to the chatbot. Use the JavaFX technology to implement the GUI.","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}}]},{"date":"2024-02-07","commitResults":[{"hash":"50e6e7bfc58fa31a712c6aa7efd1f736ebea0fe7","isMergeCommit":false,"messageTitle":"update GUI: delete the Ui class, add the show the message during the command.","messageBody":"","tags":["GUI-update"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":187,"deletions":444}}}]}]},"authorFileTypeContributionMap":{"MaYuehan":{"java":2314,"md":76,"fxml":35,"sh":0,"bat":1,"gradle":21,"txt":24}},"authorContributionVariance":{"MaYuehan":317779.7},"authorDisplayNameMap":{"MaYuehan":"CS2103T-W08-2 MA Y..EHAN"}} diff --git a/NeoHW_ip_master/authorship.json b/NeoHW_ip_master/authorship.json index 192f8cfb..e7be491f 100644 --- a/NeoHW_ip_master/authorship.json +++ b/NeoHW_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"# Bytebuddy!!!","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"\u003e \"10/10 app - a loyal fan\"","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"Bytebuddy frees your mind of having to remember things you need to do. It\u0027s,","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"* text-based","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"* Easy to learn","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"* ~FAST~ _SUPER_ FAST to use","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"All you need to do is, ","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"1. download it from [here](https://github.com/NeoHW/ip)","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"1. double-click it.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"1. add your tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"1. let it manage your tasks for you :shushing_face:","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"And it is **FREE**!","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"Features:","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"- [x] Managing tasks","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"- [x] Managing deadlines","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"- [ ] Reminders (coming soon)","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"How to use: ","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"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":26,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"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":31,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":"1. After that, locate the `src/main/java/ByteBuddy.java` file, right-click it, and choose `Run ByteBuddy.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-02-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" ____ __ __ _____ U _____ u ____ _ _ ____ ____ __ __ ","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":"U | __\")u \\ \\ / / |_ \" _| \\| ___\"|/U | __\")uU |\"|u| | | _\"\\ | _\"\\ \\ \\ / / ","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" \\| _ \\/ \\ V / | | | _|\" \\| _ \\/ \\| |\\| |/| | | | /| | | | \\ V / ","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" | |_) | U_|\"|_u /| |\\ | |___ | |_) | | |_| |U| |_| |\\U| |_| |\\U_|\"|_u ","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" |____/ |_| u |_|U |_____| |____/ \u003c\u003c\\___/ |____/ u |____/ u |_| ","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" _|| \\\\_.-,//|(_ _// \\\\_ \u003c\u003c \u003e\u003e _|| \\\\_ (__) )( |||_ |||_ .-,//|(_ ","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":"(__) (__)\\_) (__)(__) (__)(__) (__)(__) (__) (__) (__)_) (__)_) \\_) (__) ","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"NeoHW":28,"-":14}},{"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":"NeoHW"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-29"},{"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":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"checkstyle {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" // Junit","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" exclude \u0027**/TaskListTest.class\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":"tasks.withType(Test) {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" // Exclude TaskListTest from the test execution","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" exclude \u0027**/TaskListTest.class\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":"//application {","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":"// mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":"//}","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"// to fix Error: Could not find or load main class seedu.duke.Duke","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":"// use package path","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" mainClassName \u003d \u0027bytebuddy.ByteBuddy\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":"// JAR output is in build/libs","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" archiveBaseName \u003d \"bytebuddy\"","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" archiveFileName \u003d \u0027bytebuddy.jar\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":"run {","lastModifiedDate":"2020-05-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"NeoHW":39,"-":41}},{"path":"data/output.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"D | 1 | return book | 2 December 2019, 6PM","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"T | 1 | read book","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"T | 0 | run away","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"T | 0 | testGUI","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"NeoHW":4}},{"path":"src/main/java/bytebuddy/ByteBuddy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.ui.Ui.printWithSolidLineBreak;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.Command;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.parser.Parser;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" * The {@code ByteBuddy} class represents the main application class for the ByteBuddy chatbot.","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" * It initializes the chatbot, runs the main loop to process user commands, and handles exceptions.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"public class ByteBuddy {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" // class variables","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" private static Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" private static TaskList taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" private static Ui ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" * Creates a new chatbot called ByteBuddy that helps with tasking.","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" public ByteBuddy() {","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" storage \u003d new Storage();","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" taskList \u003d storage.load();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" } catch (ByteBuddyException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(\"Error loading the list from output.txt\");","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" System.out.println(\"Error loading the list from output.txt\");","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * Main method to run ByteBuddy chatbot.","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" * @param args command line arguments.","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException if there is an error during the execution of the ByteBuddy chatbot.","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" public static void main(String[] args) throws ByteBuddyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" new ByteBuddy().run();","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" * Runs the ByteBuddy chatbot.","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" public void run() {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" Ui.printStartMessage();","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" // repeating user commands","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" c.execute(taskList, ui, storage);","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" } catch (ByteBuddyException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" printWithSolidLineBreak(\"\\t \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" // bye","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" Ui.printByeMessage();","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" * Returns String reply according to user instructions","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" * @param s String input by user","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" public String getResponse(String s) {","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" Command c \u003d Parser.parse(s);","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" return c.execute(taskList, ui, storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" } catch (ByteBuddyException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" return e.getMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":82}},{"path":"src/main/java/bytebuddy/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Messages.BYE_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" * Command to exit the chatbot and say bye.","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"public class ByeCommand implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * Executes the ByeCommand, performing any necessary actions when the chatbot exits.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" * @param taskList The task list on which the command operates.","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" * @param ui The user interface for displaying information to the user.","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" * @param storage The storage for saving and loading data.","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" // No action needed for ByeCommand","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + BYE_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * Checks if the ByeCommand is an exit command, indicating that the chatbot should exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" * @return {@code true} as ByeCommand is an exit command.","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" return true;","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":37}},{"path":"src/main/java/bytebuddy/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" * Interface that represents a Command to be executed by the Bytebuddy chatbot.","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" * A command typically performs an action on the task list,","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" * interacts with the user interface, and may involve storage operations.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" * Implementing classes must provide an implementation for the {@code execute} method.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * @see bytebuddy.tasks.TaskList","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" * @see bytebuddy.ui.Ui","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * @see bytebuddy.storage.Storage","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"public interface Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" * Executes the command, affecting the provided task list, user interface, and storage.","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * @param taskList The task list on which the command operates.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" * @param ui The user interface for displaying information to the user.","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * @param storage The storage for saving and loading data.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * @return String result output after executing instruction given","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If an error occurs during the execution of the command.","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" String execute(TaskList taskList, Ui ui, Storage storage) throws ByteBuddyException;","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" * Checks if the command is an exit command,","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" * indicating whether the chatbot should exit after executing this command.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" * @return {@code true} if the command is an exit command, {@code false} otherwise.","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" boolean isExit();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":39}},{"path":"src/main/java/bytebuddy/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" * Command to create and add a Deadline task to the task list based on the provided information.","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"public class DeadlineCommand implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" private String info;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * Constructs a DeadlineCommand with the provided information.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * @param info The information containing details about the Deadline task.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" public DeadlineCommand(String info) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" this.info \u003d info;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * Executes the DeadlineCommand, adding a Deadline task to the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * @param taskList The task list to which the Deadline task will be added.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * @param ui The user interface.","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * @param storage The storage for saving and loading data.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an error executing the DeadlineCommand.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" return taskList.deadline(info);","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" * Checks if the DeadlineCommand is an exit command, indicating that the chatbot should not exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * @return {@code false} as DeadlineCommand is not an exit command.","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":45}},{"path":"src/main/java/bytebuddy/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" * Command to delete a task from the task list based on the provided task number.","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"public class DeleteCommand implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" private String info;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * Constructs a DeleteCommand with the provided information.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * @param info The information containing the task number to be deleted.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" public DeleteCommand(String info) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" this.info \u003d info;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * Executes the DeleteCommand, deleting a task from the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * @param taskList The task list from which the task will be deleted.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * @param ui The user interface.","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * @param storage The storage for saving and loading data.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an error executing the DeleteCommand.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" return taskList.delete(info);","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" * Checks if the DeleteCommand is an exit command, indicating that the chatbot should not exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * @return {@code false} as DeleteCommand is not an exit command.","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":45}},{"path":"src/main/java/bytebuddy/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" * Command to add an event task to the task list based on the provided information.","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"public class EventCommand implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" private String info;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * Constructs an EventCommand with the provided information.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * @param info The information containing details of the event task to be added.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" public EventCommand(String info) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" this.info \u003d info;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * Executes the EventCommand, adding an event task to the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * @param taskList The task list to which the event task will be added.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * @param ui The user interface.","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * @param storage The storage for saving and loading data.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an error executing the EventCommand.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" return taskList.event(info);","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" * Checks if the EventCommand is an exit command, indicating that the chatbot should not exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * @return {@code false} as EventCommand is not an exit command.","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":45}},{"path":"src/main/java/bytebuddy/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.parser.Parser.splitStringWithTrim;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" * Command to find tasks in the task list that match a specified keyword.","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" * The keyword is used to search for tasks containing the specified text in their descriptions.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * Executes the \u0027findInTaskList\u0027 method in the provided \u0027TaskList\u0027 instance.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"public class FindCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" private List\u003cString\u003e keywords;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" * Constructs a new FindCommand with the specified keyword.","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * @param info The keyword(s) or text to search for among all the tasks in the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" public FindCommand(String info) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" this.keywords \u003d splitStringWithTrim(info, \",\", 0);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" * Executes the \u0027findInTaskList\u0027 method in the provided \u0027TaskList\u0027 instance to find tasks","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" * containing the specified keyword in their descriptions.","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" * @param taskList The TaskList instance containing the list of tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" * @param ui The Ui instance for user interaction.","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" * @param storage The Storage instance for file storage operations.","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an issue executing the \u0027findInTaskList\u0027 method.","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + taskList.findTaskWithKeywordInTaskList(keywords);","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" * Checks if the DeleteCommand is an exit command, indicating that the chatbot should not exit.","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" * @return {@code false} as FindCommand is not an exit command.","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"NeoHW":53}},{"path":"src/main/java/bytebuddy/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":" * Command to display the list of tasks in the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"public class ListCommand implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" * Executes the ListCommand, displaying the list of tasks in the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * @param taskList The task list whose tasks will be displayed.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" * @param ui The user interface for displaying information.","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * @param storage The storage for saving and loading data.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" return taskList.getFormattedTaskList();","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" * Checks if the ListCommand is an exit command, indicating that the chatbot should not exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * @return {@code false} as ListCommand is not an exit command.","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":33}},{"path":"src/main/java/bytebuddy/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" * Command to mark a task as done in the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"public class MarkCommand implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" private String info;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * Constructs a MarkCommand with the specified information.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * @param info The information associated with the MarkCommand.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" public MarkCommand(String info) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" this.info \u003d info;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * Executes the MarkCommand, marking a task as done in the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * @param taskList The task list containing the tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * @param ui The user interface for displaying information.","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * @param storage The storage for saving and loading data.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an error executing the MarkCommand.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" return taskList.mark(info);","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" * Checks if the MarkCommand is an exit command, indicating that the chatbot should not exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * @return {@code false} as MarkCommand is not an exit command.","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":45}},{"path":"src/main/java/bytebuddy/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" * Command to add a todo task to the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"public class TodoCommand implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" private String info;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * Constructs a TodoCommand with the specified information.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * @param info The information associated with the TodoCommand.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" public TodoCommand(String info) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" this.info \u003d info;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * Executes the TodoCommand, adding a todo task to the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * @param taskList The task list containing the tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * @param ui The user interface for displaying information.","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * @param storage The storage for saving and loading data.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an error executing the TodoCommand.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" return taskList.todo(info);","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" * Checks if the TodoCommand is an exit command, indicating that the chatbot should not exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * @return {@code false} as TodoCommand is not an exit command.","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":45}},{"path":"src/main/java/bytebuddy/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" * Command to mark a task as not done in the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"public class UnmarkCommand implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" private String info;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * Constructs an UnmarkCommand with the specified information.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * @param info The information associated with the UnmarkCommand.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" public UnmarkCommand(String info) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" this.info \u003d info;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * Executes the UnmarkCommand, marking a task as not done in the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * @param taskList The task list containing the tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * @param ui The user interface for displaying information.","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * @param storage The storage for saving and loading data.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an error executing the UnmarkCommand.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" return taskList.unmark(info);","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" * Checks if the UnmarkCommand is an exit command, indicating that the chatbot should not exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * @return {@code false} as UnmarkCommand is not an exit command.","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":45}},{"path":"src/main/java/bytebuddy/constants/ExceptionErrorMessages.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.constants;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":" * The {@code ExceptionErrorMessages} class contains constants representing error messages for exception handling.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"public class ExceptionErrorMessages {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":" public static final String EMPTY_DESCRIPTION_ERROR_MESSAGE \u003d \"The description cannot be empty??\";","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":" public static final String EMPTY_KEYWORD_ERROR_MESSAGE \u003d \"Are you finding anything at all?\";","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" public static final String NUMBER_FORMAT_ERROR_MESSAGE \u003d \"Invalid task number format! Please enter a valid number.\";","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" public static final String NO_SUCH_TASK_NUMBER_ERROR_MESSAGE \u003d \"We do not have this task number!!\";","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" public static final String FAILED_WRITE_TO_FILE_ERROR_MESSAGE \u003d \"Failed to write to file\";","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"NeoHW":12}},{"path":"src/main/java/bytebuddy/constants/FilePaths.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.constants;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":" * The {@code FilePaths} class contains constants representing file paths used in the application for output.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"public class FilePaths {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":" public static final String RELATIVE_DATA_DIRECTORY_PATH \u003d \"./data\";","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":" public static final String RELATIVE_OUTPUT_TXT_FILE_PATH \u003d \"./data/output.txt\";","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"NeoHW":9}},{"path":"src/main/java/bytebuddy/constants/Formats.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.constants;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":" * The {@code Formats} class contains constants representing task input formats used in the application.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"public class Formats {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":" public static final String EVENT_FORMAT \u003d \"event [task] /from [date] /to [date]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":" public static final String DEADLINE_FORMAT \u003d \"deadline [task] /by [date]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" public static final String LIST_FORMAT \u003d \"list [keyword1] OR list [keyword1], [keyword2] ... for multiple values\";","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"NeoHW":10}},{"path":"src/main/java/bytebuddy/constants/Information.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.constants;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":" * The {@code Information} class contains constants representing various informational strings used in the application.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"public class Information {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":" public static final String SOLID_LINE_BREAK \u003d \"-\".repeat(90);","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":" public static final String CHATBOT_NAME \u003d \"ByteBuddy\";","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" public static final String CHATBOT_NAME_LOGO \u003d","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" \" ____ __ __ _____ U _____ u ____ _ _ ____ ____ __ __ \\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" + \"U | __\\\")u \\\\ \\\\ / / |_ \\\" _| \\\\| ___\\\"|/U | __\\\")uU |\\\"|u| | | _\\\"\\\\ | _\\\"\\\\ \\\\ \\\\ / / \\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" + \" \\\\| _ \\\\/ \\\\ V / | | | _|\\\" \\\\| _ \\\\/ \\\\| |\\\\| |/| | | | /| | | | \\\\ V / \\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" + \" | |_) | U_|\\\"|_u /| |\\\\ | |___ | |_) | | |_| |U| |_| |\\\\U| |_| |\\\\U_|\\\"|_u \\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" + \" |____/ |_| u |_|U |_____| |____/ \u003c\u003c\\\\___/ |____/ u |____/ u |_| \\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" + \" _|| \\\\\\\\_.-,//|(_ _// \\\\\\\\_ \u003c\u003c \u003e\u003e _|| \\\\\\\\_ (__) )( |||_ |||_ .-,//|(_ \\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" + \"(__) (__)\\\\_) (__)(__) (__)(__) (__)(__) (__) (__) (__)_) (__)_) \\\\_) (__) \\n\";","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"NeoHW":17}},{"path":"src/main/java/bytebuddy/constants/Messages.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.constants;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Information.CHATBOT_NAME;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":" * The {@code Messages} class contains constants representing various messages used in the application.","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"public class Messages {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" public static final String START_MESSAGE \u003d \"\\t Hello! I\u0027m \" + CHATBOT_NAME + \"!\\n\\t What can I do for you?\";","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" public static final String BYE_MESSAGE \u003d \"\\t Sad to see you leave :(\";","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"NeoHW":11}},{"path":"src/main/java/bytebuddy/exceptions/ByteBuddyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.exceptions;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" * Custom exception class for handling Duke-related exceptions.","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"public class ByteBuddyException extends Exception {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" * Constructs a ByteBuddyException with the specified error message.","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" * @param message The error message associated with the exception.","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" public ByteBuddyException(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" super(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" * Overrides the getMessage() method to prepend a specific message to the original error message.","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" * @return The formatted error message with the added prefix for personality.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" return String.format(\"\\t holup!! %s\", super.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":27}},{"path":"src/main/java/bytebuddy/gui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.gui;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" * This control represents a dialog box consisting of an ImageView to represent","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" * the speaker\u0027s face and a label","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" * containing text from the speaker.","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" private Label dialog;","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" private void flip() {","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" public static DialogBox getByteBuddyDialog(String text, Image img) {","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" db.flip();","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" return db;","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"NeoHW":63}},{"path":"src/main/java/bytebuddy/gui/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.gui;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":" * Represents the launching of GUI.","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"public class Launcher {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"NeoHW":12}},{"path":"src/main/java/bytebuddy/gui/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.gui;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ByteBuddy;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" * A GUI for ByteBuddy using FXML.","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" private ByteBuddy byteBuddy \u003d new ByteBuddy();","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setByteBuddy(byteBuddy);","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" stage.setTitle(\"ByteBuddy\");","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" stage.show();","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"NeoHW":34}},{"path":"src/main/java/bytebuddy/gui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.gui;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Messages.BYE_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Messages.START_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ByteBuddy;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import javafx.animation.PauseTransition;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import javafx.application.Platform;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import javafx.util.Duration;","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" private ByteBuddy byteBuddy;","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/user.jpeg\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" private Image byteBuddyImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/bytebuddy.jpeg\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" * Initializes the main window of the ByteBuddy GUI application.","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" * This method is automatically called by JavaFX after the FXML file is loaded","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * and the corresponding UI components are injected.","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" * @see javafx.scene.control.ScrollPane","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" * @see javafx.scene.layout.VBox","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" * @see bytebuddy.gui.DialogBox","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" * @see bytebuddy.constants.Messages","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" * @see javafx.fxml.FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" public void initialize() {","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" DialogBox.getByteBuddyDialog(START_MESSAGE, byteBuddyImage));","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" public void setByteBuddy(ByteBuddy bb) {","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" byteBuddy \u003d bb;","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" * Creates two dialog boxes, one echoing user input and","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" * the other containing main.java.ByteBuddy\u0027s reply and","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" * then appends them to the dialog container.","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" * Clears the user input after processing.","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" String response \u003d byteBuddy.getResponse(input);","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" DialogBox.getByteBuddyDialog(response, byteBuddyImage)","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" );","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" userInput.clear();","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" if (response.equals(\"\\t \" + BYE_MESSAGE)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" PauseTransition delay \u003d new PauseTransition(Duration.seconds(1.0));","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" delay.setOnFinished(event -\u003e Platform.exit());","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" delay.play();","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"NeoHW":79}},{"path":"src/main/java/bytebuddy/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.parser;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import java.util.Collections;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.ByeCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.DeadlineCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.DeleteCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.EventCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.FindCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.ListCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.MarkCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.TodoCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.UnmarkCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" * Parser class responsible for parsing user input and generating corresponding Command objects.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * Parses the given full input to create and return the appropriate Command object.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * @param fullInput The full input provided by the user.","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * @return The Command object corresponding to the parsed input.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If the input cannot be parsed into a valid Command.","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" public static Command parse(String fullInput) throws ByteBuddyException {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" String[] commandParts \u003d fullInput.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" String commandType \u003d commandParts[0].toLowerCase();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" String commandInfo \u003d commandParts.length \u003e 1 ? commandParts[1].trim() : \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" case \"bye\":","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" return new ByeCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" case \"list\":","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" case \"mark\":","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" return new MarkCommand(commandInfo);","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" return new UnmarkCommand(commandInfo);","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" case \"delete\":","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" return new DeleteCommand(commandInfo);","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" case \"todo\":","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" return new TodoCommand(commandInfo);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" return new DeadlineCommand(commandInfo);","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" case \"event\":","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" return new EventCommand(commandInfo);","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" case \"find\":","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" return new FindCommand(commandInfo);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" throw new ByteBuddyException(\"Sorry but this command does not exist~\");","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" * Splits a string into a list of trimmed substrings using a specified separator and maximum number of tokens.","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" * @param info The input string to split.","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" * @param separator The separator to use.","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" * @param maxTokens The maximum number of tokens to split the string into.","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" * @return A list of trimmed substrings.","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" public static List\u003cString\u003e splitStringWithTrim(String info, String separator, int maxTokens) {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" assert info !\u003d null : \"Input string must not be null\";","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" if (info.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" return Collections.emptyList();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" return Arrays.stream(info.split(separator, maxTokens)).map(String::trim).collect(Collectors.toList());","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":79}},{"path":"src/main/java/bytebuddy/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.FilePaths.RELATIVE_DATA_DIRECTORY_PATH;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.FilePaths.RELATIVE_OUTPUT_TXT_FILE_PATH;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" * The Storage class manages the reading and writing of tasks to a file.","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"public class Storage {","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" * Creates a new Storage instance, initializing the data directory and output file.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an issue with creating the directory or file.","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" public Storage() throws ByteBuddyException {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" init();","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" * Initializes the data directory and output file.","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an issue with creating the directory or file.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" public void init() throws ByteBuddyException {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" File dataDir \u003d new File(RELATIVE_DATA_DIRECTORY_PATH);","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" File outputTxt \u003d new File(RELATIVE_OUTPUT_TXT_FILE_PATH);","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" createOutputDirectoryAndFile(dataDir, outputTxt);","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" * Creates the output directory and file.","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" * @param dataDir The data directory.","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" * @param outputTxt The output file.","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an issue with creating the directory or file.","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" public static void createOutputDirectoryAndFile(File dataDir, File outputTxt) throws ByteBuddyException {","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" dataDir.mkdirs();","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" outputTxt.createNewFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" } catch (SecurityException | IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" throw new ByteBuddyException(e.toString());","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" * Loads tasks from the output file and returns a TaskList.","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" * @return The TaskList loaded from the output file.","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an issue with reading from the file.","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" public TaskList load() throws ByteBuddyException {","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" return initTaskList(RELATIVE_OUTPUT_TXT_FILE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" * Writes the given text to the specified file path.","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" * @param filePath The path to the file.","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" * @param textToAdd The text to write to the file.","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" * @throws IOException If there is an issue with writing to the file.","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" public static void writeToFile(String filePath, String textToAdd) throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" fw.write(textToAdd);","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" * Initializes a TaskList by reading tasks from the specified file path.","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" * @param filePath The path to the file.","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" * @return The initialized TaskList.","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an issue with reading from the file.","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" public static TaskList initTaskList(String filePath) throws ByteBuddyException {","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" try (Scanner scanner \u003d new Scanner(new File(filePath))) {","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" String[] parts \u003d scanner.nextLine().split(\" \\\\| \");","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" assert parts.length \u003e\u003d 3 : \"Invalid task format\";","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" case \"T\":","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" assert parts.length \u003d\u003d 3 : \"Invalid Todo task format\";","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" list.add(new Todo(parts[1], parts[2]));","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" case \"D\":","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" assert parts.length \u003d\u003d 4 : \"Invalid Deadline task format\";","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" list.add(new Deadline(parts[1], parts[2], parts[3]));","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" case \"E\":","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":" assert parts.length \u003d\u003d 5 : \"Invalid Event task format\";","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" list.add(new Event(parts[1], parts[2], parts[3], parts[4]));","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" assert false : \"Unknown task type\";","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"NeoHW"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" throw new ByteBuddyException(\"Error reading from file: \" + e);","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":" return list;","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"NeoHW":121}},{"path":"src/main/java/bytebuddy/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import java.util.Optional;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" * The Deadline class represents a task with a specified deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" * It extends the Task class and includes additional properties for the deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" protected String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" protected Optional\u003cLocalDate\u003e byDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" protected Optional\u003cLocalDateTime\u003e byDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" * Constructs a new Deadline task with the given description and deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" * @param by The deadline of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" this.byDate \u003d parseDate(by);","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" this.byDateTime \u003d parseDateTime(by);","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" // Initialise \u0027by\u0027 string depending on type, else use given \u0027by\u0027 string as is","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" if (byDateTime.isPresent() || byDate.isPresent()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" this.by \u003d formatByString(by);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" * Constructs a new Deadline task with completion status, description, and deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" * @param completed The completion status of the task (1 for done, 0 for not done).","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" * @param by The deadline of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" public Deadline(String completed, String description, String by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" super(description, completed.equals(\"1\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" * Parses the date and time from the input string.","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" * @param by The input string containing date and time information.","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" * @return An Optional containing LocalDateTime if parsing is successful, empty otherwise.","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" private Optional\u003cLocalDateTime\u003e parseDateTime(String by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" return Optional.of(LocalDateTime.parse(by, formatter));","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" return Optional.empty();","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" * Parses the date from the input string.","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" * @param by The input string containing date information.","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" * @return An Optional containing LocalDate if parsing is successful, empty otherwise.","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" private Optional\u003cLocalDate\u003e parseDate(String by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" return Optional.of(LocalDate.parse(by, formatter));","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" return Optional.empty();","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" * Formats the \u0027by\u0027 string based on the type of date or date-time.","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" * @param by The default string representation if no special formatting is required.","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" * @return The formatted \u0027by\u0027 string.","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" private String formatByString(String by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" if (byDateTime.isPresent()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" return byDateTime.get().format(DateTimeFormatter.ofPattern(\"d MMMM yyyy, ha\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" } else if (byDate.isPresent()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" return byDate.get().format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" return by;","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" * Returns a formatted string representation of the Deadline task for writing into output file.","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" * @return The formatted output string.","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" public String getTextFormattedOutput() {","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" int intIsDone \u003d isDone ? 1 : 0;","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" return String.format(\"D | %d | %s | %s\", intIsDone, description, by);","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" * Returns a string representation of the Deadline task.","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":" * @return The string representation.","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"NeoHW":116}},{"path":"src/main/java/bytebuddy/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import java.util.Optional;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" * The Event class represents a task that occurs within a specified time frame.","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" * It extends the Task class and includes additional properties for start and end times.","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" protected String from;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" protected String to;","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" protected Optional\u003cLocalDate\u003e fromDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" protected Optional\u003cLocalDateTime\u003e fromDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" protected Optional\u003cLocalDate\u003e toDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" protected Optional\u003cLocalDateTime\u003e toDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" * Constructs a new Event task with the given description, start, and end times.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" * @param description The description of the event.","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * @param from The start time of the event.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * @param to The end time of the event.","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" this.fromDate \u003d parseDate(from);","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" this.fromDateTime \u003d parseDateTime(from);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" // Initialise \u0027by\u0027 string depending on type, else use given \u0027by\u0027 string as is","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" if (fromDate.isPresent() || fromDateTime.isPresent()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" this.from \u003d formatFromString(from);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" this.toDate \u003d parseDate(to);","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" this.toDateTime \u003d parseDateTime(to);","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" // Initialise \u0027by\u0027 string depending on type, else use given \u0027by\u0027 string as is","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" if (toDate.isPresent() || toDateTime.isPresent()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" this.to \u003d formatToString(from);","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" * Constructs a new Event task with completion status, description, start, and end times.","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" * @param completed The completion status of the event (1 for done, 0 for not done).","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" * @param description The description of the event.","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" * @param from The start time of the event.","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" * @param to The end time of the event.","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" public Event(String completed, String description, String from, String to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" super(description, completed.equals(\"1\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" * Parses the date and time from the input string.","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" * @param s The input string containing date and time information.","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" * @return An Optional containing LocalDateTime if parsing is successful, empty otherwise.","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" private Optional\u003cLocalDateTime\u003e parseDateTime(String s) {","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" return Optional.of(LocalDateTime.parse(s, formatter));","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" return Optional.empty();","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" * Parses the date from the input string.","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" * @param s The input string containing date information.","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" * @return An Optional containing LocalDate if parsing is successful, empty otherwise.","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" private Optional\u003cLocalDate\u003e parseDate(String s) {","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" return Optional.of(LocalDate.parse(s, formatter));","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" return Optional.empty();","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" * Formats the \u0027from\u0027 string based on the type of date or date-time.","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" * @param standard The default string representation if no special formatting is required.","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" * @return The formatted \u0027from\u0027 string.","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" private String formatFromString(String standard) {","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" if (fromDateTime.isPresent()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" return fromDateTime.get().format(DateTimeFormatter.ofPattern(\"d \u0027of\u0027 MMMM yyyy, ha\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" } else if (fromDate.isPresent()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" return fromDate.get().format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":" return standard;","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"NeoHW"},"content":" * Formats the \u0027to\u0027 string based on the type of date or date-time.","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":" * @param standard The default string representation if no special formatting is required.","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":" * @return The formatted \u0027to\u0027 string.","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":" private String formatToString(String standard) {","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":" if (toDateTime.isPresent()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":" return toDateTime.get().format(DateTimeFormatter.ofPattern(\"d \u0027of\u0027 MMMM yyyy, ha\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" } else if (toDate.isPresent()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":" return toDate.get().format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"NeoHW"},"content":" return standard;","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":" * Returns a formatted string representation of the Event task for writing into output file.","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"NeoHW"},"content":" * @return The formatted output string.","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"NeoHW"},"content":" public String getTextFormattedOutput() {","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" int intIsDone \u003d isDone ? 1 : 0;","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"NeoHW"},"content":" return String.format(\"E | %d | %s | %s | %s\", intIsDone, description, from, to);","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":137,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":" * Returns a string representation of the Event task.","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"NeoHW"},"content":" * @return The string representation.","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":145,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":146,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"NeoHW":146}},{"path":"src/main/java/bytebuddy/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":" * The Task class represents a task with a description and completion status.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":" protected String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" * Constructs a new Task with the given description and sets its completion status to false.","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" * Constructs a new Task with the given description and completion status.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" * Gets the description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" * @return The description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" return this.description;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" * Checks if the task is marked as done.","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" * @return True if the task is marked as done, false otherwise.","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" public boolean isDone() {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" return this.isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" * Marks the task as done and returns a message indicating the change.","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" * @return A message indicating that the task has been marked as done.","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" public String markAsDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" return \"Nice! I\u0027ve mark this task as done:\\n\\t\\t\" + this;","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" * Marks the task as not done and returns a message indicating the change.","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" * @return A message indicating that the task has been marked as not done yet.","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" public String unmarkAsDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" return \"OK, I\u0027ve marked this task as not done yet:\\n\\t\\t\" + this;","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" * Gets the status icon representing the completion status of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" * @return The status icon (\"✓\" for done, \"✕\" for not done).","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" return (isDone ? \"✓\" : \"✕\"); // mark done task with ✓","lastModifiedDate":"2024-01-22"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" * Returns a formatted string representation of the task for writing into output file.","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" * @return A formatted string representation of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" public String getTextFormattedOutput() {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" * Returns a string representation of the task, including its status icon and description.","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" * @return A string representation of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-21"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"NeoHW":95}},{"path":"src/main/java/bytebuddy/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.ExceptionErrorMessages.EMPTY_DESCRIPTION_ERROR_MESSAGE;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.ExceptionErrorMessages.EMPTY_KEYWORD_ERROR_MESSAGE;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.ExceptionErrorMessages.FAILED_WRITE_TO_FILE_ERROR_MESSAGE;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.ExceptionErrorMessages.NO_SUCH_TASK_NUMBER_ERROR_MESSAGE;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.ExceptionErrorMessages.NUMBER_FORMAT_ERROR_MESSAGE;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.FilePaths.RELATIVE_OUTPUT_TXT_FILE_PATH;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Formats.DEADLINE_FORMAT;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Formats.EVENT_FORMAT;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Formats.LIST_FORMAT;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.parser.Parser.splitStringWithTrim;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.storage.Storage.writeToFile;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.ui.Ui.printWithSolidLineBreak;","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"import javafx.util.Pair;","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" * The TaskList class represents a collection of tasks and","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * provides methods to manipulate and interact with the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"public class TaskList {","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" * Constructs a new TaskList with an empty list of tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" public TaskList() {","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * Returns the size of the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" * @return The size of the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" public int size() {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" return taskList.size();","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" * Clears all tasks from the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" public void clear() {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" taskList.clear();","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" * Checks if the task list contains a specific task.","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" * @param t The task to check for.","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" * @return true if the task list contains the specified task, false otherwise.","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" public boolean contains(Task t) {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" return taskList.contains(t);","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" * Gets a task at a specified index in the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" * @param i The index of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" * @return The task at the specified index.","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" public Task get(int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" return taskList.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" * @param t The task to add.","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" * @return true if the task was added successfully, false otherwise.","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" public boolean add(Task t) {","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" return taskList.add(t);","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" * Removes a task at a specified index from the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" * @param index The index of the task to remove.","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" * @return The removed task.","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" public Task remove(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" return taskList.remove(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" private boolean isValidIndex(int markIndex) {","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" return markIndex \u003c 0 || markIndex \u003e\u003d taskList.size();","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" * Marks a task as done in the task list based on user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" * @param info The user input containing task information.","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If an error occurs during the marking process.","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" public String mark(String info) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" int markIndex \u003d Integer.parseInt(info.trim()) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":" if (isValidIndex(markIndex)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(NO_SUCH_TASK_NUMBER_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + NO_SUCH_TASK_NUMBER_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" String markToPrint \u003d taskList.get(markIndex).markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"NeoHW"},"content":" printWithSolidLineBreak(\"\\t \" + markToPrint);","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":" writeToFile(RELATIVE_OUTPUT_TXT_FILE_PATH, getTaskListFormattedStringOutput(taskList));","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + markToPrint;","lastModifiedDate":"2024-02-03"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(NUMBER_FORMAT_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + NUMBER_FORMAT_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(FAILED_WRITE_TO_FILE_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + FAILED_WRITE_TO_FILE_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":123,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":" * Marks a task as not done in the task list based on user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"NeoHW"},"content":" * @param info The user input containing task information.","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If an error occurs during the unmarking process.","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" public String unmark(String info) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":134,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":" int unmarkIndex \u003d Integer.parseInt(info.trim()) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"NeoHW"},"content":" if (isValidIndex(unmarkIndex)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":137,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(NO_SUCH_TASK_NUMBER_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + NO_SUCH_TASK_NUMBER_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":140,"author":{"gitId":"NeoHW"},"content":" String unmarkToPrint \u003d taskList.get(unmarkIndex).unmarkAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":" printWithSolidLineBreak(\"\\t \" + unmarkToPrint);","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" writeToFile(RELATIVE_OUTPUT_TXT_FILE_PATH, getTaskListFormattedStringOutput(taskList));","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":145,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + unmarkToPrint;","lastModifiedDate":"2024-02-03"},{"lineNumber":146,"author":{"gitId":"NeoHW"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(NUMBER_FORMAT_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + NUMBER_FORMAT_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":149,"author":{"gitId":"NeoHW"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":150,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(FAILED_WRITE_TO_FILE_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":151,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + FAILED_WRITE_TO_FILE_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":153,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"NeoHW"},"content":" * Deletes a task from the task list based on user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"NeoHW"},"content":" * @param info The user input containing task information.","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If an error occurs during the deletion process.","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"NeoHW"},"content":" public String delete(String info) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":162,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":163,"author":{"gitId":"NeoHW"},"content":" int deleteIndex \u003d Integer.parseInt(info.trim()) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":164,"author":{"gitId":"NeoHW"},"content":" if (isValidIndex(deleteIndex)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":165,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(NO_SUCH_TASK_NUMBER_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":166,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + NO_SUCH_TASK_NUMBER_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":167,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":168,"author":{"gitId":"NeoHW"},"content":" Task removed \u003d taskList.remove(deleteIndex);","lastModifiedDate":"2024-01-27"},{"lineNumber":169,"author":{"gitId":"NeoHW"},"content":" printTaskRemovedWithSolidLineBreak(removed);","lastModifiedDate":"2024-01-27"},{"lineNumber":170,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":171,"author":{"gitId":"NeoHW"},"content":" writeToFile(RELATIVE_OUTPUT_TXT_FILE_PATH, getTaskListFormattedStringOutput(taskList));","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":173,"author":{"gitId":"NeoHW"},"content":" return returnTaskRemovedString(removed);","lastModifiedDate":"2024-02-03"},{"lineNumber":174,"author":{"gitId":"NeoHW"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":175,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(NUMBER_FORMAT_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":176,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + NUMBER_FORMAT_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":177,"author":{"gitId":"NeoHW"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":178,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(FAILED_WRITE_TO_FILE_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":179,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + FAILED_WRITE_TO_FILE_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":180,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":181,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":182,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":183,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"NeoHW"},"content":" * Adds a new Todo task to the task list based on user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":186,"author":{"gitId":"NeoHW"},"content":" * @param info The user input containing task information.","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If an error occurs during the task creation process.","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":189,"author":{"gitId":"NeoHW"},"content":" public String todo(String info) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":190,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":191,"author":{"gitId":"NeoHW"},"content":" if (info.isEmpty()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":192,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(EMPTY_DESCRIPTION_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":193,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + EMPTY_DESCRIPTION_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":194,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":195,"author":{"gitId":"NeoHW"},"content":" Task todo \u003d new Todo(info);","lastModifiedDate":"2024-01-27"},{"lineNumber":196,"author":{"gitId":"NeoHW"},"content":" taskList.add(todo);","lastModifiedDate":"2024-01-27"},{"lineNumber":197,"author":{"gitId":"NeoHW"},"content":" printTaskAddedWithSolidLineBreak(todo);","lastModifiedDate":"2024-01-27"},{"lineNumber":198,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":199,"author":{"gitId":"NeoHW"},"content":" writeToFile(RELATIVE_OUTPUT_TXT_FILE_PATH, getTaskListFormattedStringOutput(taskList));","lastModifiedDate":"2024-01-29"},{"lineNumber":200,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":201,"author":{"gitId":"NeoHW"},"content":" return returnTaskAddedString(todo);","lastModifiedDate":"2024-02-03"},{"lineNumber":202,"author":{"gitId":"NeoHW"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":203,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(FAILED_WRITE_TO_FILE_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":204,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + FAILED_WRITE_TO_FILE_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":205,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":206,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":207,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":208,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":209,"author":{"gitId":"NeoHW"},"content":" * Adds a new Deadline task to the task list based on user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":210,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":211,"author":{"gitId":"NeoHW"},"content":" * @param info The user input containing task information.","lastModifiedDate":"2024-01-29"},{"lineNumber":212,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If an error occurs during the task creation process.","lastModifiedDate":"2024-01-29"},{"lineNumber":213,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":214,"author":{"gitId":"NeoHW"},"content":" public String deadline(String info) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":215,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":216,"author":{"gitId":"NeoHW"},"content":" if (info.isEmpty()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":217,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(EMPTY_DESCRIPTION_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":218,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + EMPTY_DESCRIPTION_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":219,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":220,"author":{"gitId":"NeoHW"},"content":" List\u003cString\u003e deadlineInfo \u003d splitStringWithTrim(info, \"/by\", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":221,"author":{"gitId":"NeoHW"},"content":" Task deadline \u003d new Deadline(deadlineInfo.get(0), deadlineInfo.get(1));","lastModifiedDate":"2024-01-27"},{"lineNumber":222,"author":{"gitId":"NeoHW"},"content":" taskList.add(deadline);","lastModifiedDate":"2024-01-27"},{"lineNumber":223,"author":{"gitId":"NeoHW"},"content":" printTaskAddedWithSolidLineBreak(deadline);","lastModifiedDate":"2024-01-27"},{"lineNumber":224,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":225,"author":{"gitId":"NeoHW"},"content":" writeToFile(RELATIVE_OUTPUT_TXT_FILE_PATH, getTaskListFormattedStringOutput(taskList));","lastModifiedDate":"2024-01-29"},{"lineNumber":226,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":227,"author":{"gitId":"NeoHW"},"content":" return returnTaskAddedString(deadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":228,"author":{"gitId":"NeoHW"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":229,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(\"The correct usage is: \" + DEADLINE_FORMAT);","lastModifiedDate":"2024-02-03"},{"lineNumber":230,"author":{"gitId":"NeoHW"},"content":" return \"\\t The correct usage is: \" + DEADLINE_FORMAT;","lastModifiedDate":"2024-02-03"},{"lineNumber":231,"author":{"gitId":"NeoHW"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":232,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(FAILED_WRITE_TO_FILE_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":233,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + FAILED_WRITE_TO_FILE_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":234,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":235,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":236,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":237,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":238,"author":{"gitId":"NeoHW"},"content":" * Returns String output to inform user that event has been added","lastModifiedDate":"2024-02-03"},{"lineNumber":239,"author":{"gitId":"NeoHW"},"content":" * Adds a new Event task to the task list based on user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":240,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":241,"author":{"gitId":"NeoHW"},"content":" * @param info The user input containing task information.","lastModifiedDate":"2024-01-29"},{"lineNumber":242,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If an error occurs during the task creation process.","lastModifiedDate":"2024-01-29"},{"lineNumber":243,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":244,"author":{"gitId":"NeoHW"},"content":" public String event(String info) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":245,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":246,"author":{"gitId":"NeoHW"},"content":" if (info.isEmpty()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":247,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(EMPTY_DESCRIPTION_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":248,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + EMPTY_DESCRIPTION_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":249,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":250,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":251,"author":{"gitId":"NeoHW"},"content":" List\u003cString\u003e eventInfo \u003d splitStringWithTrim(info, \"/from|/to\", 3);","lastModifiedDate":"2024-01-27"},{"lineNumber":252,"author":{"gitId":"NeoHW"},"content":" Task event \u003d new Event(eventInfo.get(0), eventInfo.get(1), eventInfo.get(2));","lastModifiedDate":"2024-01-27"},{"lineNumber":253,"author":{"gitId":"NeoHW"},"content":" taskList.add(event);","lastModifiedDate":"2024-01-27"},{"lineNumber":254,"author":{"gitId":"NeoHW"},"content":" printTaskAddedWithSolidLineBreak(event);","lastModifiedDate":"2024-01-27"},{"lineNumber":255,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":256,"author":{"gitId":"NeoHW"},"content":" writeToFile(RELATIVE_OUTPUT_TXT_FILE_PATH, getTaskListFormattedStringOutput(taskList));","lastModifiedDate":"2024-01-29"},{"lineNumber":257,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":258,"author":{"gitId":"NeoHW"},"content":" return returnTaskAddedString(event);","lastModifiedDate":"2024-02-03"},{"lineNumber":259,"author":{"gitId":"NeoHW"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":260,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(\"The correct usage is: \" + EVENT_FORMAT);","lastModifiedDate":"2024-02-03"},{"lineNumber":261,"author":{"gitId":"NeoHW"},"content":" return \"The correct usage is: \" + EVENT_FORMAT;","lastModifiedDate":"2024-02-03"},{"lineNumber":262,"author":{"gitId":"NeoHW"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":263,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(FAILED_WRITE_TO_FILE_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":264,"author":{"gitId":"NeoHW"},"content":" return FAILED_WRITE_TO_FILE_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":265,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":266,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":267,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":268,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":269,"author":{"gitId":"NeoHW"},"content":" * Returns the entire task list.","lastModifiedDate":"2024-02-03"},{"lineNumber":270,"author":{"gitId":"NeoHW"},"content":" * Each task is numbered, and its details are displayed in the format \"[task_number].[task_details]\".","lastModifiedDate":"2024-01-29"},{"lineNumber":271,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":272,"author":{"gitId":"NeoHW"},"content":" public String getFormattedTaskList() {","lastModifiedDate":"2024-02-03"},{"lineNumber":273,"author":{"gitId":"NeoHW"},"content":" StringBuilder str \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":274,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":275,"author":{"gitId":"NeoHW"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":276,"author":{"gitId":"NeoHW"},"content":" if (i \u003e 0) {","lastModifiedDate":"2024-01-29"},{"lineNumber":277,"author":{"gitId":"NeoHW"},"content":" str.append(\"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":278,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":279,"author":{"gitId":"NeoHW"},"content":" str.append(\"\\t \").append(i + 1).append(\".\").append(taskList.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":280,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":281,"author":{"gitId":"NeoHW"},"content":" return str.toString();","lastModifiedDate":"2024-02-03"},{"lineNumber":282,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":283,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":284,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":285,"author":{"gitId":"NeoHW"},"content":" * Prints the entire task list with a solid line break above and below the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":286,"author":{"gitId":"NeoHW"},"content":" * Each task is numbered, and its details are displayed in the format \"[task_number].[task_details]\".","lastModifiedDate":"2024-02-03"},{"lineNumber":287,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":288,"author":{"gitId":"NeoHW"},"content":" public void printTaskList() {","lastModifiedDate":"2024-02-03"},{"lineNumber":289,"author":{"gitId":"NeoHW"},"content":" Ui.printWithSolidLineBreak(getFormattedTaskList());","lastModifiedDate":"2024-02-03"},{"lineNumber":290,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":291,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":292,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":293,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":294,"author":{"gitId":"NeoHW"},"content":" * Formats the task list into a string with each task\u0027s formatted output on a new line","lastModifiedDate":"2024-01-29"},{"lineNumber":295,"author":{"gitId":"NeoHW"},"content":" * for writing into output file.","lastModifiedDate":"2024-01-29"},{"lineNumber":296,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":297,"author":{"gitId":"NeoHW"},"content":" * @param taskList The list of tasks to format.","lastModifiedDate":"2024-01-29"},{"lineNumber":298,"author":{"gitId":"NeoHW"},"content":" * @return A string containing the formatted output of each task in the list.","lastModifiedDate":"2024-01-29"},{"lineNumber":299,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":300,"author":{"gitId":"NeoHW"},"content":" public String getTaskListFormattedStringOutput(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":301,"author":{"gitId":"NeoHW"},"content":" StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2024-01-27"},{"lineNumber":302,"author":{"gitId":"NeoHW"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-27"},{"lineNumber":303,"author":{"gitId":"NeoHW"},"content":" s.append(task.getTextFormattedOutput()).append(\"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":304,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":305,"author":{"gitId":"NeoHW"},"content":" return s.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":306,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":307,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":308,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":309,"author":{"gitId":"NeoHW"},"content":" * Returns a confirmation message for the added task,","lastModifiedDate":"2024-02-03"},{"lineNumber":310,"author":{"gitId":"NeoHW"},"content":" * and the updated total number of tasks in the list.","lastModifiedDate":"2024-01-29"},{"lineNumber":311,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":312,"author":{"gitId":"NeoHW"},"content":" * @param task The task that was added to the list.","lastModifiedDate":"2024-01-29"},{"lineNumber":313,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":314,"author":{"gitId":"NeoHW"},"content":" public String returnTaskAddedString(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":315,"author":{"gitId":"NeoHW"},"content":" StringBuilder str \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":316,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":317,"author":{"gitId":"NeoHW"},"content":" str.append(\"\\t Got it. I\u0027ve Added this task:\\n\")","lastModifiedDate":"2024-01-29"},{"lineNumber":318,"author":{"gitId":"NeoHW"},"content":" .append(\"\\t\\t \").append(task).append(\"\\n\")","lastModifiedDate":"2024-01-29"},{"lineNumber":319,"author":{"gitId":"NeoHW"},"content":" .append(\"\\t Now you have \").append(taskList.size()).append(\" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":320,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":321,"author":{"gitId":"NeoHW"},"content":" return str.toString();","lastModifiedDate":"2024-02-03"},{"lineNumber":322,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":323,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":324,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":325,"author":{"gitId":"NeoHW"},"content":" * Prints a solid line break, followed by a confirmation message for the added task,","lastModifiedDate":"2024-02-03"},{"lineNumber":326,"author":{"gitId":"NeoHW"},"content":" * and the updated total number of tasks in the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":327,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":328,"author":{"gitId":"NeoHW"},"content":" * @param task The task that was added to the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":329,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":330,"author":{"gitId":"NeoHW"},"content":" public void printTaskAddedWithSolidLineBreak(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":331,"author":{"gitId":"NeoHW"},"content":" Ui.printWithSolidLineBreak(returnTaskAddedString(task));","lastModifiedDate":"2024-02-03"},{"lineNumber":332,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":333,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":334,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":335,"author":{"gitId":"NeoHW"},"content":" * Returns a confirmation message for the removed task,","lastModifiedDate":"2024-02-03"},{"lineNumber":336,"author":{"gitId":"NeoHW"},"content":" * and the updated total number of tasks in the list.","lastModifiedDate":"2024-01-29"},{"lineNumber":337,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":338,"author":{"gitId":"NeoHW"},"content":" * @param task The task that was removed from the list.","lastModifiedDate":"2024-01-29"},{"lineNumber":339,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":340,"author":{"gitId":"NeoHW"},"content":" public String returnTaskRemovedString(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":341,"author":{"gitId":"NeoHW"},"content":" StringBuilder str \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":342,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":343,"author":{"gitId":"NeoHW"},"content":" str.append(\"\\t Noted. I\u0027ve removed this task:\\n\")","lastModifiedDate":"2024-01-29"},{"lineNumber":344,"author":{"gitId":"NeoHW"},"content":" .append(\"\\t\\t \").append(task).append(\"\\n\")","lastModifiedDate":"2024-01-29"},{"lineNumber":345,"author":{"gitId":"NeoHW"},"content":" .append(\"\\t Now you have \").append(taskList.size()).append(\" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":346,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":347,"author":{"gitId":"NeoHW"},"content":" return str.toString();","lastModifiedDate":"2024-02-03"},{"lineNumber":348,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":349,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":350,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":351,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":352,"author":{"gitId":"NeoHW"},"content":" * Prints a solid line break, followed by a confirmation message for the removed task,","lastModifiedDate":"2024-02-03"},{"lineNumber":353,"author":{"gitId":"NeoHW"},"content":" * and the updated total number of tasks in the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":354,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":355,"author":{"gitId":"NeoHW"},"content":" * @param task The task that was removed from the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":356,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":357,"author":{"gitId":"NeoHW"},"content":" public void printTaskRemovedWithSolidLineBreak(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":358,"author":{"gitId":"NeoHW"},"content":" Ui.printWithSolidLineBreak(returnTaskRemovedString(task));","lastModifiedDate":"2024-02-03"},{"lineNumber":359,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":360,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":361,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":362,"author":{"gitId":"NeoHW"},"content":" * Finds tasks in the task list that match a specified keyword in their descriptions.","lastModifiedDate":"2024-01-29"},{"lineNumber":363,"author":{"gitId":"NeoHW"},"content":" * The method searches for tasks containing the specified text in their descriptions","lastModifiedDate":"2024-01-29"},{"lineNumber":364,"author":{"gitId":"NeoHW"},"content":" * and prints the matching tasks to the console.","lastModifiedDate":"2024-01-29"},{"lineNumber":365,"author":{"gitId":"NeoHW"},"content":" * Returns the matching tasks","lastModifiedDate":"2024-02-03"},{"lineNumber":366,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":367,"author":{"gitId":"NeoHW"},"content":" * @param keywords The keyword or text to search for among all the tasks in the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":368,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an issue with the search operation, such as an empty keyword.","lastModifiedDate":"2024-01-29"},{"lineNumber":369,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":370,"author":{"gitId":"NeoHW"},"content":" public String findTaskWithKeywordInTaskList(List\u003cString\u003e keywords) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":371,"author":{"gitId":"NeoHW"},"content":" if (keywords.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":372,"author":{"gitId":"NeoHW"},"content":" throw new ByteBuddyException(EMPTY_KEYWORD_ERROR_MESSAGE + \"\\n\\t Usage: \" + LIST_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":373,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":374,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":375,"author":{"gitId":"NeoHW"},"content":" boolean foundTask \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":376,"author":{"gitId":"NeoHW"},"content":" StringBuilder str \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":377,"author":{"gitId":"NeoHW"},"content":" for (String keyword: keywords) {","lastModifiedDate":"2024-01-29"},{"lineNumber":378,"author":{"gitId":"NeoHW"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":379,"author":{"gitId":"NeoHW"},"content":" String description \u003d taskList.get(i).getDescription().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":380,"author":{"gitId":"NeoHW"},"content":" Pair\u003cStringBuilder, Boolean\u003e pair \u003d processMatchingTask(keyword.toLowerCase(), str, foundTask, description, i);","lastModifiedDate":"2024-02-06"},{"lineNumber":381,"author":{"gitId":"NeoHW"},"content":" str \u003d pair.getKey();","lastModifiedDate":"2024-02-06"},{"lineNumber":382,"author":{"gitId":"NeoHW"},"content":" foundTask \u003d pair.getValue();","lastModifiedDate":"2024-02-06"},{"lineNumber":383,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":384,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":385,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":386,"author":{"gitId":"NeoHW"},"content":" if (!foundTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":387,"author":{"gitId":"NeoHW"},"content":" Ui.printWithSolidLineBreak(\"\\t There are no matching tasks in your list :(\");","lastModifiedDate":"2024-01-29"},{"lineNumber":388,"author":{"gitId":"NeoHW"},"content":" return \"There are no matching tasks in your list :(\";","lastModifiedDate":"2024-02-03"},{"lineNumber":389,"author":{"gitId":"NeoHW"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":390,"author":{"gitId":"NeoHW"},"content":" Ui.printWithSolidLineBreak(\"\\t \" + str.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":391,"author":{"gitId":"NeoHW"},"content":" return str.toString();","lastModifiedDate":"2024-02-03"},{"lineNumber":392,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":393,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":394,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":395,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":396,"author":{"gitId":"NeoHW"},"content":" private Pair\u003cStringBuilder, Boolean\u003e processMatchingTask(String keyword, StringBuilder str, boolean foundTask, String description, int i) {","lastModifiedDate":"2024-02-06"},{"lineNumber":397,"author":{"gitId":"NeoHW"},"content":" if (description.contains(keyword)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":398,"author":{"gitId":"NeoHW"},"content":" if (!foundTask) {","lastModifiedDate":"2024-02-06"},{"lineNumber":399,"author":{"gitId":"NeoHW"},"content":" str.append(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-02-06"},{"lineNumber":400,"author":{"gitId":"NeoHW"},"content":" foundTask \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":401,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":402,"author":{"gitId":"NeoHW"},"content":" str.append(\"\\n\\t\\t \").append(i + 1).append(\".\").append(taskList.get(i));","lastModifiedDate":"2024-02-06"},{"lineNumber":403,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":404,"author":{"gitId":"NeoHW"},"content":" return new Pair\u003c\u003e(str, foundTask);","lastModifiedDate":"2024-02-06"},{"lineNumber":405,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":406,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"NeoHW":406}},{"path":"src/main/java/bytebuddy/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":" * The Todo class represents a simple task without a specified deadline or duration.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" * It extends the Task class and provides specific implementations for task creation and string representations.","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" * Constructs a new Todo task with the given description.","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" * Constructs a new Todo task with completion status, description, and optional information.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" * @param completed The completion status of the task (1 for done, 0 for not done).","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" public Todo(String completed, String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" super(description, completed.equals(\"1\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * Returns a formatted string representation of the Todo task for writing into output file.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" * @return The formatted output string.","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" public String getTextFormattedOutput() {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" int intIsDone \u003d isDone ? 1 : 0;","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" return String.format(\"T | %d | %s\", intIsDone, description);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" * Returns a string representation of the Todo task.","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" * @return The string representation.","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"NeoHW":48}},{"path":"src/main/java/bytebuddy/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Information.SOLID_LINE_BREAK;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Messages.BYE_MESSAGE;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Messages.START_MESSAGE;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" * The Ui class handles user interface interactions, including printing messages and reading user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"public class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" private Scanner sc;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" * Creates a new Ui instance, initializing the Scanner for user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" public Ui() {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" * Prints the given string with a solid line break above and below it.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" * @param s The string to be printed.","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" public static void printWithSolidLineBreak(String s) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" System.out.println(\"\\t\" + SOLID_LINE_BREAK);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" System.out.println(s);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" System.out.println(\"\\t\" + SOLID_LINE_BREAK);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" * Prints the start message with a solid line break above and below it.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" public static void printStartMessage() {","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" printWithSolidLineBreak(\"\\t \" + START_MESSAGE);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" * Prints the bye message with a solid line break above and below it.","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" public static void printByeMessage() {","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" printWithSolidLineBreak(\"\\t \" + BYE_MESSAGE);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" * Reads a command entered by the user.","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" * @return The command entered by the user.","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" return sc.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":56}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"NeoHW":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"600.0\" xmlns\u003d\"http://javafx.com/javafx/17.0.7\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"bytebuddy.gui.MainWindow\"\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"50.0\" prefWidth\u003d\"600.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"524.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"600.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"588.0\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"NeoHW":19}},{"path":"src/test/java/bytebuddy/tasks/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.ExceptionErrorMessages.EMPTY_DESCRIPTION_ERROR_MESSAGE;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.ExceptionErrorMessages.NO_SUCH_TASK_NUMBER_ERROR_MESSAGE;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.ExceptionErrorMessages.NUMBER_FORMAT_ERROR_MESSAGE;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Formats.DEADLINE_FORMAT;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Formats.EVENT_FORMAT;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Information.SOLID_LINE_BREAK;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import java.io.PrintStream;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"public class TaskListTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" public void testTodo() throws ByteBuddyException, IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" String todoInfo \u003d \"Test\";","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" taskList.todo(todoInfo);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"[T][✕] Test\", taskList.get(0).toString());","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" assertEquals(1, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" public void testTodoEmptyDescription() {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" String emptyTodoInfo \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" ByteBuddyException exception \u003d assertThrows(ByteBuddyException.class, () -\u003e taskList.todo(emptyTodoInfo));","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"holup!! \" + EMPTY_DESCRIPTION_ERROR_MESSAGE, exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" public void testDeadline() throws ByteBuddyException, IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" String deadlineInfo \u003d \"Submit report /by 2023-02-28\";","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" taskList.deadline(deadlineInfo);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"[D][✕] Submit report (by: Feb 28 2023)\", taskList.get(0).toString());","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" assertEquals(1, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" public void testDeadlineIncorrectFormat() {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" String incorrectDeadlineInfo \u003d \"Submit report\";","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" ByteBuddyException exception \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" assertThrows(ByteBuddyException.class, () -\u003e taskList.deadline(incorrectDeadlineInfo));","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"holup!! The correct usage is: \" + DEADLINE_FORMAT, exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" public void testEvent() throws ByteBuddyException, IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" String eventInfo \u003d \"TestEvent /from 2019-10-15 /to 2/12/2019 1800\";","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" taskList.event(eventInfo);","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"[E][✕] TestEvent (from: Oct 15 2019 to: 2 of December 2019, 6PM)\", taskList.get(0).toString());","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" assertEquals(1, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" public void testEventIncorrectFormat() {","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" String incorrectEventInfo \u003d \"Project meeting /from 2023-02-28 14:00\";","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" ByteBuddyException exception \u003d assertThrows(ByteBuddyException.class, () -\u003e taskList.event(incorrectEventInfo));","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"holup!! The correct usage is: \" + EVENT_FORMAT, exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" public void testMark() throws ByteBuddyException, IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" taskList.add(new Todo(\"Test\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" taskList.mark(\"1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"[T][✓] Test\", taskList.get(0).toString());","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" public void testMarkInvalidFormat() {","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" String invalidMarkInfo \u003d \"abc\";","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" ByteBuddyException exception \u003d assertThrows(ByteBuddyException.class, () -\u003e taskList.mark(invalidMarkInfo));","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"holup!! \" + NUMBER_FORMAT_ERROR_MESSAGE, exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" public void testMarkInvalidTaskNumber() {","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" String invalidTaskNumber \u003d \"10\";","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" ByteBuddyException exception \u003d assertThrows(ByteBuddyException.class, () -\u003e taskList.mark(invalidTaskNumber));","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"holup!! \" + NO_SUCH_TASK_NUMBER_ERROR_MESSAGE, exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":" public void testUnmark() throws ByteBuddyException, IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":" taskList.add(new Todo(\"Test\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" taskList.mark(\"1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":" taskList.unmark(\"1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"[T][✕] Test\", taskList.get(0).toString());","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" public void testUnmarkInvalidFormat() {","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":" String invalidUnmarkInfo \u003d \"xyz\";","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":" ByteBuddyException exception \u003d assertThrows(ByteBuddyException.class, () -\u003e taskList.unmark(invalidUnmarkInfo));","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"holup!! \" + NUMBER_FORMAT_ERROR_MESSAGE, exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" public void testUnmarkInvalidTaskNumber() {","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":" String invalidTaskNumber \u003d \"5\";","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"NeoHW"},"content":" ByteBuddyException exception \u003d assertThrows(ByteBuddyException.class, () -\u003e taskList.unmark(invalidTaskNumber));","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"holup!! \" + NO_SUCH_TASK_NUMBER_ERROR_MESSAGE, exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":" public void testDelete() throws ByteBuddyException, IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":" taskList.add(new Todo(\"Test\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"NeoHW"},"content":" taskList.delete(\"1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":" assertEquals(0, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":150,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":151,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" public void testDeleteInvalidFormat() {","lastModifiedDate":"2024-01-28"},{"lineNumber":153,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":" String invalidDeleteInfo \u003d \"invalid\";","lastModifiedDate":"2024-01-28"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":156,"author":{"gitId":"NeoHW"},"content":" ByteBuddyException exception \u003d assertThrows(ByteBuddyException.class, () -\u003e taskList.delete(invalidDeleteInfo));","lastModifiedDate":"2024-01-28"},{"lineNumber":157,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"holup!! \" + NUMBER_FORMAT_ERROR_MESSAGE, exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":158,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":159,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":160,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":161,"author":{"gitId":"NeoHW"},"content":" public void testDeleteInvalidTaskNumber() {","lastModifiedDate":"2024-01-28"},{"lineNumber":162,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":163,"author":{"gitId":"NeoHW"},"content":" String invalidTaskNumber \u003d \"8\";","lastModifiedDate":"2024-01-28"},{"lineNumber":164,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":165,"author":{"gitId":"NeoHW"},"content":" ByteBuddyException exception \u003d assertThrows(ByteBuddyException.class, () -\u003e taskList.delete(invalidTaskNumber));","lastModifiedDate":"2024-01-28"},{"lineNumber":166,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"holup!! \" + NO_SUCH_TASK_NUMBER_ERROR_MESSAGE, exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":167,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":169,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":170,"author":{"gitId":"NeoHW"},"content":" public void testPrintTaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":171,"author":{"gitId":"NeoHW"},"content":" // Redirect System.out for testing print output","lastModifiedDate":"2024-01-28"},{"lineNumber":172,"author":{"gitId":"NeoHW"},"content":" ByteArrayOutputStream outContent \u003d new ByteArrayOutputStream();","lastModifiedDate":"2024-01-28"},{"lineNumber":173,"author":{"gitId":"NeoHW"},"content":" System.setOut(new PrintStream(outContent));","lastModifiedDate":"2024-01-28"},{"lineNumber":174,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":175,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":176,"author":{"gitId":"NeoHW"},"content":" taskList.add(new Todo(\"Test\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":177,"author":{"gitId":"NeoHW"},"content":" taskList.add(new Deadline(\"Submit report\", \"2023-02-28\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":178,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":179,"author":{"gitId":"NeoHW"},"content":" taskList.printTaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":180,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":181,"author":{"gitId":"NeoHW"},"content":" String expectedOutput \u003d \"\\t\"","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"NeoHW"},"content":" + SOLID_LINE_BREAK","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"NeoHW"},"content":" + \"\\n\\t 1.[T][✕] Test\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"NeoHW"},"content":" + \"\\t 2.[D][✕] Submit report (by: Feb 28 2023)\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"NeoHW"},"content":" + \"\\t\"","lastModifiedDate":"2024-01-29"},{"lineNumber":186,"author":{"gitId":"NeoHW"},"content":" + SOLID_LINE_BREAK","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"NeoHW"},"content":" + \"\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedOutput, outContent.toString());","lastModifiedDate":"2024-01-28"},{"lineNumber":189,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":190,"author":{"gitId":"NeoHW"},"content":" // Reset System.out","lastModifiedDate":"2024-01-28"},{"lineNumber":191,"author":{"gitId":"NeoHW"},"content":" System.setOut(System.out);","lastModifiedDate":"2024-01-28"},{"lineNumber":192,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":193,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":193}},{"path":"src/test/java/bytebuddy/tasks/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"public class TaskTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" public void testTaskMarkAsDone() {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" Task task \u003d new Task(\"Sample task\");","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" String expectedOutput \u003d \"Nice! I\u0027ve mark this task as done:\\n\\t\\t[✓] \" + task.description;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" String actualOutput \u003d task.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedOutput, actualOutput);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" assertTrue(task.isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" public void testTaskUnmarkAsDone() {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" Task task \u003d new Task(\"Sample task\", true);","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" String expectedOutput \u003d \"OK, I\u0027ve marked this task as not done yet:\\n\\t\\t[✕] \" + task.description;","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" String actualOutput \u003d task.unmarkAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedOutput, actualOutput);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" assertFalse(task.isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" public void testGetStatusIcon() {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" Task task \u003d new Task(\"Sample task\");","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" String expectedOutput \u003d \"✓\";","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" String actualOutput \u003d task.getStatusIcon();","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedOutput, actualOutput);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" public void testTaskToString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" Task task \u003d new Task(\"Sample task\", true);","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" String expectedOutput \u003d \"[\" + task.getStatusIcon() + \"] Sample task\";","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" String actualOutput \u003d task.toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedOutput, actualOutput);","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":55}},{"path":"src/test/java/bytebuddy/tasks/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"public class TodoTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" public void testTodoToString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" Todo todo \u003d new Todo(\"Buy groceries\");","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" String expectedOutput \u003d \"[T][✕] Buy groceries\";","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" String actualOutput \u003d todo.toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedOutput, actualOutput);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" public void testTodoTextFormattedOutput() {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" Todo todo \u003d new Todo(\"Buy groceries\");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" String expectedOutput \u003d \"T | 0 | Buy groceries\";","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" String actualOutput \u003d todo.getTextFormattedOutput();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedOutput, actualOutput);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":29}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"todo borrow book","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"mark 3","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"unmark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"NeoHW":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":"NeoHW"},"content":"java -classpath ..\\bin ByteBuddy \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-28"},{"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":{"NeoHW":1,"-":20}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"# ./runtest.sh to run this script in text-ui-test directory","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"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":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-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":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"NeoHW":3,"-":33}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"# Bytebuddy!!!","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"\u003e \"10/10 app - a loyal fan\"","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"Bytebuddy frees your mind of having to remember things you need to do. It\u0027s,","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"* text-based","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"* Easy to learn","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"* ~FAST~ _SUPER_ FAST to use","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"All you need to do is, ","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"1. download it from [here](https://github.com/NeoHW/ip)","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"1. double-click it.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"1. add your tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"1. let it manage your tasks for you :shushing_face:","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"And it is **FREE**!","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"Features:","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"- [x] Managing tasks","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"- [x] Managing deadlines","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"- [ ] Reminders (coming soon)","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"How to use: ","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"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":26,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"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":31,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":"1. After that, locate the `src/main/java/ByteBuddy.java` file, right-click it, and choose `Run ByteBuddy.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-02-02"},{"lineNumber":33,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" ____ __ __ _____ U _____ u ____ _ _ ____ ____ __ __ ","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":"U | __\")u \\ \\ / / |_ \" _| \\| ___\"|/U | __\")uU |\"|u| | | _\"\\ | _\"\\ \\ \\ / / ","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" \\| _ \\/ \\ V / | | | _|\" \\| _ \\/ \\| |\\| |/| | | | /| | | | \\ V / ","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" | |_) | U_|\"|_u /| |\\ | |___ | |_) | | |_| |U| |_| |\\U| |_| |\\U_|\"|_u ","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" |____/ |_| u |_|U |_____| |____/ \u003c\u003c\\___/ |____/ u |____/ u |_| ","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" _|| \\\\_.-,//|(_ _// \\\\_ \u003c\u003c \u003e\u003e _|| \\\\_ (__) )( |||_ |||_ .-,//|(_ ","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":"(__) (__)\\_) (__)(__) (__)(__) (__)(__) (__) (__) (__)_) (__)_) \\_) (__) ","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"NeoHW":28,"-":14}},{"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":"NeoHW"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-29"},{"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":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"checkstyle {","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" // Junit","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" exclude \u0027**/TaskListTest.class\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":"tasks.withType(Test) {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" // Exclude TaskListTest from the test execution","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" exclude \u0027**/TaskListTest.class\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":"//application {","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":"// mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":"//}","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"// to fix Error: Could not find or load main class seedu.duke.Duke","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":"// use package path","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" mainClassName \u003d \u0027bytebuddy.ByteBuddy\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":"// JAR output is in build/libs","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" archiveBaseName \u003d \"bytebuddy\"","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":73,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" archiveFileName \u003d \u0027bytebuddy.jar\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":77,"author":{"gitId":"-"},"content":"run {","lastModifiedDate":"2020-05-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"NeoHW":39,"-":41}},{"path":"data/output.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"D | 1 | return book | 2 December 2019, 6PM","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"T | 1 | read book","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"T | 0 | run away","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"T | 0 | testGUI","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"NeoHW":4}},{"path":"src/main/java/bytebuddy/ByteBuddy.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.ui.Ui.printWithSolidLineBreak;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.Command;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.parser.Parser;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" * The {@code ByteBuddy} class represents the main application class for the ByteBuddy chatbot.","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" * It initializes the chatbot, runs the main loop to process user commands, and handles exceptions.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"public class ByteBuddy {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" // class variables","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" private static Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" private static TaskList taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" private static Ui ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" * Creates a new chatbot called ByteBuddy that helps with tasking.","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" public ByteBuddy() {","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" storage \u003d new Storage();","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" taskList \u003d storage.load();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" } catch (ByteBuddyException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(\"Error loading the list from output.txt\");","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" System.out.println(\"Error loading the list from output.txt\");","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * Main method to run ByteBuddy chatbot.","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" * @param args command line arguments.","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException if there is an error during the execution of the ByteBuddy chatbot.","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" public static void main(String[] args) throws ByteBuddyException {","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" new ByteBuddy().run();","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" * Runs the ByteBuddy chatbot.","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" public void run() {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" Ui.printStartMessage();","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" // repeating user commands","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" c.execute(taskList, ui, storage);","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" } catch (ByteBuddyException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" printWithSolidLineBreak(\"\\t \" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" // bye","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" Ui.printByeMessage();","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" * Returns String reply according to user instructions","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" * @param s String input by user","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" public String getResponse(String s) {","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" Command c \u003d Parser.parse(s);","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" return c.execute(taskList, ui, storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" } catch (ByteBuddyException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" return e.getMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":82}},{"path":"src/main/java/bytebuddy/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Messages.BYE_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" * Command to exit the chatbot and say bye.","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"public class ByeCommand implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * Executes the ByeCommand, performing any necessary actions when the chatbot exits.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" * @param taskList The task list on which the command operates.","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" * @param ui The user interface for displaying information to the user.","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" * @param storage The storage for saving and loading data.","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" // No action needed for ByeCommand","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + BYE_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * Checks if the ByeCommand is an exit command, indicating that the chatbot should exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" * @return {@code true} as ByeCommand is an exit command.","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" return true;","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":37}},{"path":"src/main/java/bytebuddy/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" * Interface that represents a Command to be executed by the Bytebuddy chatbot.","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" * A command typically performs an action on the task list,","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" * interacts with the user interface, and may involve storage operations.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" * Implementing classes must provide an implementation for the {@code execute} method.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * @see bytebuddy.tasks.TaskList","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" * @see bytebuddy.ui.Ui","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * @see bytebuddy.storage.Storage","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"public interface Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" * Executes the command, affecting the provided task list, user interface, and storage.","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * @param taskList The task list on which the command operates.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" * @param ui The user interface for displaying information to the user.","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * @param storage The storage for saving and loading data.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * @return String result output after executing instruction given","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If an error occurs during the execution of the command.","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" String execute(TaskList taskList, Ui ui, Storage storage) throws ByteBuddyException;","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" * Checks if the command is an exit command,","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" * indicating whether the chatbot should exit after executing this command.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" * @return {@code true} if the command is an exit command, {@code false} otherwise.","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" boolean isExit();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":39}},{"path":"src/main/java/bytebuddy/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" * Command to create and add a Deadline task to the task list based on the provided information.","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"public class DeadlineCommand implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" private String info;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * Constructs a DeadlineCommand with the provided information.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * @param info The information containing details about the Deadline task.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" public DeadlineCommand(String info) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" this.info \u003d info;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * Executes the DeadlineCommand, adding a Deadline task to the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * @param taskList The task list to which the Deadline task will be added.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * @param ui The user interface.","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * @param storage The storage for saving and loading data.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an error executing the DeadlineCommand.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" return taskList.deadline(info);","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" * Checks if the DeadlineCommand is an exit command, indicating that the chatbot should not exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * @return {@code false} as DeadlineCommand is not an exit command.","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":45}},{"path":"src/main/java/bytebuddy/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" * Command to delete a task from the task list based on the provided task number.","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"public class DeleteCommand implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" private String info;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * Constructs a DeleteCommand with the provided information.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * @param info The information containing the task number to be deleted.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" public DeleteCommand(String info) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" this.info \u003d info;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * Executes the DeleteCommand, deleting a task from the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * @param taskList The task list from which the task will be deleted.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * @param ui The user interface.","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * @param storage The storage for saving and loading data.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an error executing the DeleteCommand.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" return taskList.delete(info);","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" * Checks if the DeleteCommand is an exit command, indicating that the chatbot should not exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * @return {@code false} as DeleteCommand is not an exit command.","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":45}},{"path":"src/main/java/bytebuddy/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" * Command to add an event task to the task list based on the provided information.","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"public class EventCommand implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" private String info;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * Constructs an EventCommand with the provided information.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * @param info The information containing details of the event task to be added.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" public EventCommand(String info) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" this.info \u003d info;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * Executes the EventCommand, adding an event task to the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * @param taskList The task list to which the event task will be added.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * @param ui The user interface.","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * @param storage The storage for saving and loading data.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an error executing the EventCommand.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" return taskList.event(info);","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" * Checks if the EventCommand is an exit command, indicating that the chatbot should not exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * @return {@code false} as EventCommand is not an exit command.","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":45}},{"path":"src/main/java/bytebuddy/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.parser.Parser.splitStringWithTrim;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" * Command to find tasks in the task list that match a specified keyword.","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" * The keyword is used to search for tasks containing the specified text in their descriptions.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * Executes the \u0027findInTaskList\u0027 method in the provided \u0027TaskList\u0027 instance.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"public class FindCommand implements Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" private List\u003cString\u003e keywords;","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" * Constructs a new FindCommand with the specified keyword.","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * @param info The keyword(s) or text to search for among all the tasks in the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" public FindCommand(String info) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" this.keywords \u003d splitStringWithTrim(info, \",\", 0);","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" * Executes the \u0027findInTaskList\u0027 method in the provided \u0027TaskList\u0027 instance to find tasks","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" * containing the specified keyword in their descriptions.","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" * @param taskList The TaskList instance containing the list of tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" * @param ui The Ui instance for user interaction.","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" * @param storage The Storage instance for file storage operations.","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an issue executing the \u0027findInTaskList\u0027 method.","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + taskList.findTaskWithKeywordInTaskList(keywords);","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" * Checks if the DeleteCommand is an exit command, indicating that the chatbot should not exit.","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" * @return {@code false} as FindCommand is not an exit command.","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"NeoHW":53}},{"path":"src/main/java/bytebuddy/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":" * Command to display the list of tasks in the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"public class ListCommand implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" * Executes the ListCommand, displaying the list of tasks in the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * @param taskList The task list whose tasks will be displayed.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" * @param ui The user interface for displaying information.","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * @param storage The storage for saving and loading data.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" return taskList.getFormattedTaskList();","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" * Checks if the ListCommand is an exit command, indicating that the chatbot should not exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * @return {@code false} as ListCommand is not an exit command.","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":33}},{"path":"src/main/java/bytebuddy/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" * Command to mark a task as done in the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"public class MarkCommand implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" private String info;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * Constructs a MarkCommand with the specified information.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * @param info The information associated with the MarkCommand.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" public MarkCommand(String info) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" this.info \u003d info;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * Executes the MarkCommand, marking a task as done in the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * @param taskList The task list containing the tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * @param ui The user interface for displaying information.","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * @param storage The storage for saving and loading data.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an error executing the MarkCommand.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" return taskList.mark(info);","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" * Checks if the MarkCommand is an exit command, indicating that the chatbot should not exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * @return {@code false} as MarkCommand is not an exit command.","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":45}},{"path":"src/main/java/bytebuddy/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" * Command to add a todo task to the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"public class TodoCommand implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" private String info;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * Constructs a TodoCommand with the specified information.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * @param info The information associated with the TodoCommand.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" public TodoCommand(String info) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" this.info \u003d info;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * Executes the TodoCommand, adding a todo task to the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * @param taskList The task list containing the tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * @param ui The user interface for displaying information.","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * @param storage The storage for saving and loading data.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an error executing the TodoCommand.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" return taskList.todo(info);","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" * Checks if the TodoCommand is an exit command, indicating that the chatbot should not exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * @return {@code false} as TodoCommand is not an exit command.","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":45}},{"path":"src/main/java/bytebuddy/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.storage.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" * Command to mark a task as not done in the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"public class UnmarkCommand implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" private String info;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * Constructs an UnmarkCommand with the specified information.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * @param info The information associated with the UnmarkCommand.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" public UnmarkCommand(String info) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" this.info \u003d info;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * Executes the UnmarkCommand, marking a task as not done in the task list.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * @param taskList The task list containing the tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * @param ui The user interface for displaying information.","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * @param storage The storage for saving and loading data.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an error executing the UnmarkCommand.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" return taskList.unmark(info);","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" * Checks if the UnmarkCommand is an exit command, indicating that the chatbot should not exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * @return {@code false} as UnmarkCommand is not an exit command.","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":45}},{"path":"src/main/java/bytebuddy/constants/ExceptionErrorMessages.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.constants;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":" * The {@code ExceptionErrorMessages} class contains constants representing error messages for exception handling.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"public class ExceptionErrorMessages {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":" public static final String EMPTY_DESCRIPTION_ERROR_MESSAGE \u003d \"The description cannot be empty??\";","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":" public static final String EMPTY_KEYWORD_ERROR_MESSAGE \u003d \"Are you finding anything at all?\";","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" public static final String NUMBER_FORMAT_ERROR_MESSAGE \u003d \"Invalid task number format! Please enter a valid number.\";","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" public static final String NO_SUCH_TASK_NUMBER_ERROR_MESSAGE \u003d \"We do not have this task number!!\";","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" public static final String FAILED_WRITE_TO_FILE_ERROR_MESSAGE \u003d \"Failed to write to file\";","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"NeoHW":12}},{"path":"src/main/java/bytebuddy/constants/FilePaths.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.constants;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":" * The {@code FilePaths} class contains constants representing file paths used in the application for output.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"public class FilePaths {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":" public static final String RELATIVE_DATA_DIRECTORY_PATH \u003d \"./data\";","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":" public static final String RELATIVE_OUTPUT_TXT_FILE_PATH \u003d \"./data/output.txt\";","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"NeoHW":9}},{"path":"src/main/java/bytebuddy/constants/Formats.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.constants;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":" * The {@code Formats} class contains constants representing task input formats used in the application.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"public class Formats {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":" public static final String EVENT_FORMAT \u003d \"event [task] /from [date] /to [date]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":" public static final String DEADLINE_FORMAT \u003d \"deadline [task] /by [date]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" public static final String LIST_FORMAT \u003d \"list [keyword1] OR list [keyword1], [keyword2] ... for multiple values\";","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"NeoHW":10}},{"path":"src/main/java/bytebuddy/constants/Information.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.constants;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":" * The {@code Information} class contains constants representing various informational strings used in the application.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"public class Information {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":" public static final String SOLID_LINE_BREAK \u003d \"-\".repeat(90);","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":" public static final String CHATBOT_NAME \u003d \"ByteBuddy\";","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" public static final String CHATBOT_NAME_LOGO \u003d","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" \" ____ __ __ _____ U _____ u ____ _ _ ____ ____ __ __ \\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" + \"U | __\\\")u \\\\ \\\\ / / |_ \\\" _| \\\\| ___\\\"|/U | __\\\")uU |\\\"|u| | | _\\\"\\\\ | _\\\"\\\\ \\\\ \\\\ / / \\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" + \" \\\\| _ \\\\/ \\\\ V / | | | _|\\\" \\\\| _ \\\\/ \\\\| |\\\\| |/| | | | /| | | | \\\\ V / \\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" + \" | |_) | U_|\\\"|_u /| |\\\\ | |___ | |_) | | |_| |U| |_| |\\\\U| |_| |\\\\U_|\\\"|_u \\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" + \" |____/ |_| u |_|U |_____| |____/ \u003c\u003c\\\\___/ |____/ u |____/ u |_| \\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" + \" _|| \\\\\\\\_.-,//|(_ _// \\\\\\\\_ \u003c\u003c \u003e\u003e _|| \\\\\\\\_ (__) )( |||_ |||_ .-,//|(_ \\n\"","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" + \"(__) (__)\\\\_) (__)(__) (__)(__) (__)(__) (__) (__) (__)_) (__)_) \\\\_) (__) \\n\";","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"NeoHW":17}},{"path":"src/main/java/bytebuddy/constants/Messages.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.constants;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Information.CHATBOT_NAME;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":" * The {@code Messages} class contains constants representing various messages used in the application.","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"public class Messages {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" public static final String START_MESSAGE \u003d \"\\t Hello! I\u0027m \" + CHATBOT_NAME + \"!\\n\\t What can I do for you?\";","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" public static final String BYE_MESSAGE \u003d \"\\t Sad to see you leave :(\";","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"NeoHW":11}},{"path":"src/main/java/bytebuddy/exceptions/ByteBuddyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.exceptions;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" * Custom exception class for handling Duke-related exceptions.","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"public class ByteBuddyException extends Exception {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" * Constructs a ByteBuddyException with the specified error message.","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" * @param message The error message associated with the exception.","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" public ByteBuddyException(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" super(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" * Overrides the getMessage() method to prepend a specific message to the original error message.","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" * @return The formatted error message with the added prefix for personality.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" public String getMessage() {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" return String.format(\"\\t holup!! %s\", super.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":27}},{"path":"src/main/java/bytebuddy/gui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.gui;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" * This control represents a dialog box consisting of an ImageView to represent","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" * the speaker\u0027s face and a label","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" * containing text from the speaker.","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" private Label dialog;","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" private void flip() {","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" public static DialogBox getByteBuddyDialog(String text, Image img) {","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" db.flip();","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" return db;","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"NeoHW":63}},{"path":"src/main/java/bytebuddy/gui/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.gui;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":" * Represents the launching of GUI.","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"public class Launcher {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"NeoHW":12}},{"path":"src/main/java/bytebuddy/gui/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.gui;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ByteBuddy;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" * A GUI for ByteBuddy using FXML.","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" private ByteBuddy byteBuddy \u003d new ByteBuddy();","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setByteBuddy(byteBuddy);","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" stage.setTitle(\"ByteBuddy\");","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" stage.show();","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"NeoHW":34}},{"path":"src/main/java/bytebuddy/gui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.gui;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Messages.BYE_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Messages.START_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ByteBuddy;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import javafx.animation.PauseTransition;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import javafx.application.Platform;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import javafx.util.Duration;","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" private ByteBuddy byteBuddy;","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/user.jpeg\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" private Image byteBuddyImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/bytebuddy.jpeg\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" * Initializes the main window of the ByteBuddy GUI application.","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" * This method is automatically called by JavaFX after the FXML file is loaded","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * and the corresponding UI components are injected.","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" * @see javafx.scene.control.ScrollPane","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" * @see javafx.scene.layout.VBox","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" * @see bytebuddy.gui.DialogBox","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" * @see bytebuddy.constants.Messages","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" * @see javafx.fxml.FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" public void initialize() {","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" DialogBox.getByteBuddyDialog(START_MESSAGE, byteBuddyImage));","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" public void setByteBuddy(ByteBuddy bb) {","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" byteBuddy \u003d bb;","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" * Creates two dialog boxes, one echoing user input and","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" * the other containing main.java.ByteBuddy\u0027s reply and","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" * then appends them to the dialog container.","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" * Clears the user input after processing.","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" String response \u003d byteBuddy.getResponse(input);","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" DialogBox.getByteBuddyDialog(response, byteBuddyImage)","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" );","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" userInput.clear();","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" if (response.equals(\"\\t \" + BYE_MESSAGE)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" PauseTransition delay \u003d new PauseTransition(Duration.seconds(1.0));","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" delay.setOnFinished(event -\u003e Platform.exit());","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" delay.play();","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"NeoHW":79}},{"path":"src/main/java/bytebuddy/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.parser;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import java.util.Collections;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.ByeCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.Command;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.DeadlineCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.DeleteCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.EventCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.FindCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.ListCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.MarkCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.TodoCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.commands.UnmarkCommand;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" * Parser class responsible for parsing user input and generating corresponding Command objects.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * Parses the given full input to create and return the appropriate Command object.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * @param fullInput The full input provided by the user.","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * @return The Command object corresponding to the parsed input.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If the input cannot be parsed into a valid Command.","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" public static Command parse(String fullInput) throws ByteBuddyException {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" String[] commandParts \u003d fullInput.split(\" \", 2);","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" String commandType \u003d commandParts[0].toLowerCase();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" String commandInfo \u003d commandParts.length \u003e 1 ? commandParts[1].trim() : \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" case \"bye\":","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" return new ByeCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" case \"list\":","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" case \"mark\":","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" return new MarkCommand(commandInfo);","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" return new UnmarkCommand(commandInfo);","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" case \"delete\":","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" return new DeleteCommand(commandInfo);","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" case \"todo\":","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" return new TodoCommand(commandInfo);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" return new DeadlineCommand(commandInfo);","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" case \"event\":","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" return new EventCommand(commandInfo);","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" case \"find\":","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" return new FindCommand(commandInfo);","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" throw new ByteBuddyException(\"Sorry but this command does not exist~\");","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" * Splits a string into a list of trimmed substrings using a specified separator and maximum number of tokens.","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" * @param info The input string to split.","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" * @param separator The separator to use.","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" * @param maxTokens The maximum number of tokens to split the string into.","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" * @return A list of trimmed substrings.","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" public static List\u003cString\u003e splitStringWithTrim(String info, String separator, int maxTokens) {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" assert info !\u003d null : \"Input string must not be null\";","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" if (info.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" return Collections.emptyList();","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" return Arrays.stream(info.split(separator, maxTokens)).map(String::trim).collect(Collectors.toList());","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":79}},{"path":"src/main/java/bytebuddy/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.FilePaths.RELATIVE_DATA_DIRECTORY_PATH;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.FilePaths.RELATIVE_OUTPUT_TXT_FILE_PATH;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.Deadline;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.Event;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.tasks.Todo;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" * The Storage class manages the reading and writing of tasks to a file.","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"public class Storage {","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" * Creates a new Storage instance, initializing the data directory and output file.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an issue with creating the directory or file.","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" public Storage() throws ByteBuddyException {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" init();","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" * Initializes the data directory and output file.","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an issue with creating the directory or file.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" public void init() throws ByteBuddyException {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" File dataDir \u003d new File(RELATIVE_DATA_DIRECTORY_PATH);","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" File outputTxt \u003d new File(RELATIVE_OUTPUT_TXT_FILE_PATH);","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" createOutputDirectoryAndFile(dataDir, outputTxt);","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" * Creates the output directory and file.","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" * @param dataDir The data directory.","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" * @param outputTxt The output file.","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an issue with creating the directory or file.","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" public static void createOutputDirectoryAndFile(File dataDir, File outputTxt) throws ByteBuddyException {","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" dataDir.mkdirs();","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" outputTxt.createNewFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" } catch (SecurityException | IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" throw new ByteBuddyException(e.toString());","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" * Loads tasks from the output file and returns a TaskList.","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" * @return The TaskList loaded from the output file.","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an issue with reading from the file.","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" public TaskList load() throws ByteBuddyException {","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" return initTaskList(RELATIVE_OUTPUT_TXT_FILE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" * Writes the given text to the specified file path.","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" * @param filePath The path to the file.","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" * @param textToAdd The text to write to the file.","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" * @throws IOException If there is an issue with writing to the file.","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" public static void writeToFile(String filePath, String textToAdd) throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" fw.write(textToAdd);","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" * Initializes a TaskList by reading tasks from the specified file path.","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" * @param filePath The path to the file.","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" * @return The initialized TaskList.","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an issue with reading from the file.","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" public static TaskList initTaskList(String filePath) throws ByteBuddyException {","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" TaskList list \u003d new TaskList();","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" try (Scanner scanner \u003d new Scanner(new File(filePath))) {","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" while (scanner.hasNext()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" String[] parts \u003d scanner.nextLine().split(\" \\\\| \");","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" assert parts.length \u003e\u003d 3 : \"Invalid task format\";","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" case \"T\":","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" assert parts.length \u003d\u003d 3 : \"Invalid Todo task format\";","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" list.add(new Todo(parts[1], parts[2]));","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" case \"D\":","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" assert parts.length \u003d\u003d 4 : \"Invalid Deadline task format\";","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" list.add(new Deadline(parts[1], parts[2], parts[3]));","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" case \"E\":","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":" assert parts.length \u003d\u003d 5 : \"Invalid Event task format\";","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" list.add(new Event(parts[1], parts[2], parts[3], parts[4]));","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" assert false : \"Unknown task type\";","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"NeoHW"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" throw new ByteBuddyException(\"Error reading from file: \" + e);","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":" return list;","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"NeoHW":121}},{"path":"src/main/java/bytebuddy/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import java.util.Optional;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" * The Deadline class represents a task with a specified deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" * It extends the Task class and includes additional properties for the deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" protected String by;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" protected Optional\u003cLocalDate\u003e byDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" protected Optional\u003cLocalDateTime\u003e byDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" * Constructs a new Deadline task with the given description and deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" * @param by The deadline of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" this.byDate \u003d parseDate(by);","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" this.byDateTime \u003d parseDateTime(by);","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" // Initialise \u0027by\u0027 string depending on type, else use given \u0027by\u0027 string as is","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" if (byDateTime.isPresent() || byDate.isPresent()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" this.by \u003d formatByString(by);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" * Constructs a new Deadline task with completion status, description, and deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" * @param completed The completion status of the task (1 for done, 0 for not done).","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" * @param by The deadline of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" public Deadline(String completed, String description, String by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" super(description, completed.equals(\"1\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" * Parses the date and time from the input string.","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" * @param by The input string containing date and time information.","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" * @return An Optional containing LocalDateTime if parsing is successful, empty otherwise.","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" private Optional\u003cLocalDateTime\u003e parseDateTime(String by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" return Optional.of(LocalDateTime.parse(by, formatter));","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" return Optional.empty();","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" * Parses the date from the input string.","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" * @param by The input string containing date information.","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" * @return An Optional containing LocalDate if parsing is successful, empty otherwise.","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" private Optional\u003cLocalDate\u003e parseDate(String by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" return Optional.of(LocalDate.parse(by, formatter));","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" return Optional.empty();","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" * Formats the \u0027by\u0027 string based on the type of date or date-time.","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" * @param by The default string representation if no special formatting is required.","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" * @return The formatted \u0027by\u0027 string.","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" private String formatByString(String by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" if (byDateTime.isPresent()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" return byDateTime.get().format(DateTimeFormatter.ofPattern(\"d MMMM yyyy, ha\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" } else if (byDate.isPresent()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" return byDate.get().format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" return by;","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" * Returns a formatted string representation of the Deadline task for writing into output file.","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" * @return The formatted output string.","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" public String getTextFormattedOutput() {","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" int intIsDone \u003d isDone ? 1 : 0;","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" return String.format(\"D | %d | %s | %s\", intIsDone, description, by);","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" * Returns a string representation of the Deadline task.","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":" * @return The string representation.","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"NeoHW":116}},{"path":"src/main/java/bytebuddy/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import java.util.Optional;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" * The Event class represents a task that occurs within a specified time frame.","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" * It extends the Task class and includes additional properties for start and end times.","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" protected String from;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" protected String to;","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" protected Optional\u003cLocalDate\u003e fromDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" protected Optional\u003cLocalDateTime\u003e fromDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" protected Optional\u003cLocalDate\u003e toDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" protected Optional\u003cLocalDateTime\u003e toDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" * Constructs a new Event task with the given description, start, and end times.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" * @param description The description of the event.","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * @param from The start time of the event.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * @param to The end time of the event.","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" this.fromDate \u003d parseDate(from);","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" this.fromDateTime \u003d parseDateTime(from);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" // Initialise \u0027by\u0027 string depending on type, else use given \u0027by\u0027 string as is","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" if (fromDate.isPresent() || fromDateTime.isPresent()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" this.from \u003d formatFromString(from);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" this.toDate \u003d parseDate(to);","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" this.toDateTime \u003d parseDateTime(to);","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" // Initialise \u0027by\u0027 string depending on type, else use given \u0027by\u0027 string as is","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" if (toDate.isPresent() || toDateTime.isPresent()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" this.to \u003d formatToString(from);","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" * Constructs a new Event task with completion status, description, start, and end times.","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" * @param completed The completion status of the event (1 for done, 0 for not done).","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" * @param description The description of the event.","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" * @param from The start time of the event.","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" * @param to The end time of the event.","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" public Event(String completed, String description, String from, String to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" super(description, completed.equals(\"1\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" * Parses the date and time from the input string.","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" * @param s The input string containing date and time information.","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" * @return An Optional containing LocalDateTime if parsing is successful, empty otherwise.","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" private Optional\u003cLocalDateTime\u003e parseDateTime(String s) {","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" return Optional.of(LocalDateTime.parse(s, formatter));","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" return Optional.empty();","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" * Parses the date from the input string.","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" * @param s The input string containing date information.","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" * @return An Optional containing LocalDate if parsing is successful, empty otherwise.","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" private Optional\u003cLocalDate\u003e parseDate(String s) {","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" return Optional.of(LocalDate.parse(s, formatter));","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" return Optional.empty();","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" * Formats the \u0027from\u0027 string based on the type of date or date-time.","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" * @param standard The default string representation if no special formatting is required.","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" * @return The formatted \u0027from\u0027 string.","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" private String formatFromString(String standard) {","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" if (fromDateTime.isPresent()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" return fromDateTime.get().format(DateTimeFormatter.ofPattern(\"d \u0027of\u0027 MMMM yyyy, ha\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" } else if (fromDate.isPresent()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" return fromDate.get().format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":" return standard;","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"NeoHW"},"content":" * Formats the \u0027to\u0027 string based on the type of date or date-time.","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":" * @param standard The default string representation if no special formatting is required.","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":" * @return The formatted \u0027to\u0027 string.","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":" private String formatToString(String standard) {","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":" if (toDateTime.isPresent()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":" return toDateTime.get().format(DateTimeFormatter.ofPattern(\"d \u0027of\u0027 MMMM yyyy, ha\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" } else if (toDate.isPresent()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":" return toDate.get().format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"NeoHW"},"content":" return standard;","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":" * Returns a formatted string representation of the Event task for writing into output file.","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"NeoHW"},"content":" * @return The formatted output string.","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"NeoHW"},"content":" public String getTextFormattedOutput() {","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" int intIsDone \u003d isDone ? 1 : 0;","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"NeoHW"},"content":" return String.format(\"E | %d | %s | %s | %s\", intIsDone, description, from, to);","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":137,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":" * Returns a string representation of the Event task.","lastModifiedDate":"2024-01-29"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":140,"author":{"gitId":"NeoHW"},"content":" * @return The string representation.","lastModifiedDate":"2024-01-29"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-22"},{"lineNumber":145,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":146,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"NeoHW":146}},{"path":"src/main/java/bytebuddy/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":" * The Task class represents a task with a description and completion status.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":" protected String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" * Constructs a new Task with the given description and sets its completion status to false.","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" * Constructs a new Task with the given description and completion status.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * @param isDone The completion status of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" * Gets the description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" * @return The description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" return this.description;","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" * Checks if the task is marked as done.","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" * @return True if the task is marked as done, false otherwise.","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" public boolean isDone() {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" return this.isDone;","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" * Marks the task as done and returns a message indicating the change.","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" * @return A message indicating that the task has been marked as done.","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" public String markAsDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" return \"Nice! I\u0027ve mark this task as done:\\n\\t\\t\" + this;","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" * Marks the task as not done and returns a message indicating the change.","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" * @return A message indicating that the task has been marked as not done yet.","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" public String unmarkAsDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" return \"OK, I\u0027ve marked this task as not done yet:\\n\\t\\t\" + this;","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" * Gets the status icon representing the completion status of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" * @return The status icon (\"✓\" for done, \"✕\" for not done).","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" return (isDone ? \"✓\" : \"✕\"); // mark done task with ✓","lastModifiedDate":"2024-01-22"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" * Returns a formatted string representation of the task for writing into output file.","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" * @return A formatted string representation of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" public String getTextFormattedOutput() {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" return \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" * Returns a string representation of the task, including its status icon and description.","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" * @return A string representation of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-21"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"NeoHW":95}},{"path":"src/main/java/bytebuddy/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.ExceptionErrorMessages.EMPTY_DESCRIPTION_ERROR_MESSAGE;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.ExceptionErrorMessages.EMPTY_KEYWORD_ERROR_MESSAGE;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.ExceptionErrorMessages.FAILED_WRITE_TO_FILE_ERROR_MESSAGE;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.ExceptionErrorMessages.NO_SUCH_TASK_NUMBER_ERROR_MESSAGE;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.ExceptionErrorMessages.NUMBER_FORMAT_ERROR_MESSAGE;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.FilePaths.RELATIVE_OUTPUT_TXT_FILE_PATH;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Formats.DEADLINE_FORMAT;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Formats.EVENT_FORMAT;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Formats.LIST_FORMAT;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.parser.Parser.splitStringWithTrim;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.storage.Storage.writeToFile;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.ui.Ui.printWithSolidLineBreak;","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.ui.Ui;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"import javafx.util.Pair;","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" * The TaskList class represents a collection of tasks and","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" * provides methods to manipulate and interact with the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"public class TaskList {","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" * Constructs a new TaskList with an empty list of tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" public TaskList() {","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * Returns the size of the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" * @return The size of the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" public int size() {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" return taskList.size();","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" * Clears all tasks from the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" public void clear() {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" taskList.clear();","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" * Checks if the task list contains a specific task.","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" * @param t The task to check for.","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" * @return true if the task list contains the specified task, false otherwise.","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" public boolean contains(Task t) {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" return taskList.contains(t);","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" * Gets a task at a specified index in the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" * @param i The index of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" * @return The task at the specified index.","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" public Task get(int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" return taskList.get(i);","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" * @param t The task to add.","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" * @return true if the task was added successfully, false otherwise.","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" public boolean add(Task t) {","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" return taskList.add(t);","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" * Removes a task at a specified index from the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" * @param index The index of the task to remove.","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" * @return The removed task.","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" public Task remove(int index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" return taskList.remove(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" private boolean isValidIndex(int markIndex) {","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" return markIndex \u003c 0 || markIndex \u003e\u003d taskList.size();","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" * Marks a task as done in the task list based on user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" * @param info The user input containing task information.","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If an error occurs during the marking process.","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" public String mark(String info) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" int markIndex \u003d Integer.parseInt(info.trim()) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":" if (isValidIndex(markIndex)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(NO_SUCH_TASK_NUMBER_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + NO_SUCH_TASK_NUMBER_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" String markToPrint \u003d taskList.get(markIndex).markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"NeoHW"},"content":" printWithSolidLineBreak(\"\\t \" + markToPrint);","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":" writeToFile(RELATIVE_OUTPUT_TXT_FILE_PATH, getTaskListFormattedStringOutput(taskList));","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + markToPrint;","lastModifiedDate":"2024-02-03"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(NUMBER_FORMAT_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + NUMBER_FORMAT_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(FAILED_WRITE_TO_FILE_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + FAILED_WRITE_TO_FILE_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":123,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":" * Marks a task as not done in the task list based on user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"NeoHW"},"content":" * @param info The user input containing task information.","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If an error occurs during the unmarking process.","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" public String unmark(String info) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":134,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":" int unmarkIndex \u003d Integer.parseInt(info.trim()) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"NeoHW"},"content":" if (isValidIndex(unmarkIndex)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":137,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(NO_SUCH_TASK_NUMBER_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + NO_SUCH_TASK_NUMBER_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":140,"author":{"gitId":"NeoHW"},"content":" String unmarkToPrint \u003d taskList.get(unmarkIndex).unmarkAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":" printWithSolidLineBreak(\"\\t \" + unmarkToPrint);","lastModifiedDate":"2024-01-29"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" writeToFile(RELATIVE_OUTPUT_TXT_FILE_PATH, getTaskListFormattedStringOutput(taskList));","lastModifiedDate":"2024-01-29"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":145,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + unmarkToPrint;","lastModifiedDate":"2024-02-03"},{"lineNumber":146,"author":{"gitId":"NeoHW"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(NUMBER_FORMAT_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + NUMBER_FORMAT_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":149,"author":{"gitId":"NeoHW"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":150,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(FAILED_WRITE_TO_FILE_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":151,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + FAILED_WRITE_TO_FILE_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":153,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":156,"author":{"gitId":"NeoHW"},"content":" * Deletes a task from the task list based on user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":157,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":158,"author":{"gitId":"NeoHW"},"content":" * @param info The user input containing task information.","lastModifiedDate":"2024-01-29"},{"lineNumber":159,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If an error occurs during the deletion process.","lastModifiedDate":"2024-01-29"},{"lineNumber":160,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":161,"author":{"gitId":"NeoHW"},"content":" public String delete(String info) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":162,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":163,"author":{"gitId":"NeoHW"},"content":" int deleteIndex \u003d Integer.parseInt(info.trim()) - 1;","lastModifiedDate":"2024-01-27"},{"lineNumber":164,"author":{"gitId":"NeoHW"},"content":" if (isValidIndex(deleteIndex)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":165,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(NO_SUCH_TASK_NUMBER_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":166,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + NO_SUCH_TASK_NUMBER_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":167,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":168,"author":{"gitId":"NeoHW"},"content":" Task removed \u003d taskList.remove(deleteIndex);","lastModifiedDate":"2024-01-27"},{"lineNumber":169,"author":{"gitId":"NeoHW"},"content":" printTaskRemovedWithSolidLineBreak(removed);","lastModifiedDate":"2024-01-27"},{"lineNumber":170,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":171,"author":{"gitId":"NeoHW"},"content":" writeToFile(RELATIVE_OUTPUT_TXT_FILE_PATH, getTaskListFormattedStringOutput(taskList));","lastModifiedDate":"2024-01-29"},{"lineNumber":172,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":173,"author":{"gitId":"NeoHW"},"content":" return returnTaskRemovedString(removed);","lastModifiedDate":"2024-02-03"},{"lineNumber":174,"author":{"gitId":"NeoHW"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":175,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(NUMBER_FORMAT_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":176,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + NUMBER_FORMAT_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":177,"author":{"gitId":"NeoHW"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":178,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(FAILED_WRITE_TO_FILE_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":179,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + FAILED_WRITE_TO_FILE_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":180,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":181,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":182,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":183,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"NeoHW"},"content":" * Adds a new Todo task to the task list based on user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":186,"author":{"gitId":"NeoHW"},"content":" * @param info The user input containing task information.","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If an error occurs during the task creation process.","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":189,"author":{"gitId":"NeoHW"},"content":" public String todo(String info) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":190,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":191,"author":{"gitId":"NeoHW"},"content":" if (info.isEmpty()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":192,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(EMPTY_DESCRIPTION_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":193,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + EMPTY_DESCRIPTION_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":194,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":195,"author":{"gitId":"NeoHW"},"content":" Task todo \u003d new Todo(info);","lastModifiedDate":"2024-01-27"},{"lineNumber":196,"author":{"gitId":"NeoHW"},"content":" taskList.add(todo);","lastModifiedDate":"2024-01-27"},{"lineNumber":197,"author":{"gitId":"NeoHW"},"content":" printTaskAddedWithSolidLineBreak(todo);","lastModifiedDate":"2024-01-27"},{"lineNumber":198,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":199,"author":{"gitId":"NeoHW"},"content":" writeToFile(RELATIVE_OUTPUT_TXT_FILE_PATH, getTaskListFormattedStringOutput(taskList));","lastModifiedDate":"2024-01-29"},{"lineNumber":200,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":201,"author":{"gitId":"NeoHW"},"content":" return returnTaskAddedString(todo);","lastModifiedDate":"2024-02-03"},{"lineNumber":202,"author":{"gitId":"NeoHW"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":203,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(FAILED_WRITE_TO_FILE_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":204,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + FAILED_WRITE_TO_FILE_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":205,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":206,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":207,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":208,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":209,"author":{"gitId":"NeoHW"},"content":" * Adds a new Deadline task to the task list based on user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":210,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":211,"author":{"gitId":"NeoHW"},"content":" * @param info The user input containing task information.","lastModifiedDate":"2024-01-29"},{"lineNumber":212,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If an error occurs during the task creation process.","lastModifiedDate":"2024-01-29"},{"lineNumber":213,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":214,"author":{"gitId":"NeoHW"},"content":" public String deadline(String info) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":215,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":216,"author":{"gitId":"NeoHW"},"content":" if (info.isEmpty()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":217,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(EMPTY_DESCRIPTION_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":218,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + EMPTY_DESCRIPTION_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":219,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":220,"author":{"gitId":"NeoHW"},"content":" List\u003cString\u003e deadlineInfo \u003d splitStringWithTrim(info, \"/by\", 2);","lastModifiedDate":"2024-01-27"},{"lineNumber":221,"author":{"gitId":"NeoHW"},"content":" Task deadline \u003d new Deadline(deadlineInfo.get(0), deadlineInfo.get(1));","lastModifiedDate":"2024-01-27"},{"lineNumber":222,"author":{"gitId":"NeoHW"},"content":" taskList.add(deadline);","lastModifiedDate":"2024-01-27"},{"lineNumber":223,"author":{"gitId":"NeoHW"},"content":" printTaskAddedWithSolidLineBreak(deadline);","lastModifiedDate":"2024-01-27"},{"lineNumber":224,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":225,"author":{"gitId":"NeoHW"},"content":" writeToFile(RELATIVE_OUTPUT_TXT_FILE_PATH, getTaskListFormattedStringOutput(taskList));","lastModifiedDate":"2024-01-29"},{"lineNumber":226,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":227,"author":{"gitId":"NeoHW"},"content":" return returnTaskAddedString(deadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":228,"author":{"gitId":"NeoHW"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":229,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(\"The correct usage is: \" + DEADLINE_FORMAT);","lastModifiedDate":"2024-02-03"},{"lineNumber":230,"author":{"gitId":"NeoHW"},"content":" return \"\\t The correct usage is: \" + DEADLINE_FORMAT;","lastModifiedDate":"2024-02-03"},{"lineNumber":231,"author":{"gitId":"NeoHW"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":232,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(FAILED_WRITE_TO_FILE_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":233,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + FAILED_WRITE_TO_FILE_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":234,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":235,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":236,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":237,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":238,"author":{"gitId":"NeoHW"},"content":" * Returns String output to inform user that event has been added","lastModifiedDate":"2024-02-03"},{"lineNumber":239,"author":{"gitId":"NeoHW"},"content":" * Adds a new Event task to the task list based on user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":240,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":241,"author":{"gitId":"NeoHW"},"content":" * @param info The user input containing task information.","lastModifiedDate":"2024-01-29"},{"lineNumber":242,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If an error occurs during the task creation process.","lastModifiedDate":"2024-01-29"},{"lineNumber":243,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":244,"author":{"gitId":"NeoHW"},"content":" public String event(String info) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":245,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":246,"author":{"gitId":"NeoHW"},"content":" if (info.isEmpty()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":247,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(EMPTY_DESCRIPTION_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":248,"author":{"gitId":"NeoHW"},"content":" return \"\\t \" + EMPTY_DESCRIPTION_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":249,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":250,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":251,"author":{"gitId":"NeoHW"},"content":" List\u003cString\u003e eventInfo \u003d splitStringWithTrim(info, \"/from|/to\", 3);","lastModifiedDate":"2024-01-27"},{"lineNumber":252,"author":{"gitId":"NeoHW"},"content":" Task event \u003d new Event(eventInfo.get(0), eventInfo.get(1), eventInfo.get(2));","lastModifiedDate":"2024-01-27"},{"lineNumber":253,"author":{"gitId":"NeoHW"},"content":" taskList.add(event);","lastModifiedDate":"2024-01-27"},{"lineNumber":254,"author":{"gitId":"NeoHW"},"content":" printTaskAddedWithSolidLineBreak(event);","lastModifiedDate":"2024-01-27"},{"lineNumber":255,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":256,"author":{"gitId":"NeoHW"},"content":" writeToFile(RELATIVE_OUTPUT_TXT_FILE_PATH, getTaskListFormattedStringOutput(taskList));","lastModifiedDate":"2024-01-29"},{"lineNumber":257,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":258,"author":{"gitId":"NeoHW"},"content":" return returnTaskAddedString(event);","lastModifiedDate":"2024-02-03"},{"lineNumber":259,"author":{"gitId":"NeoHW"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":260,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(\"The correct usage is: \" + EVENT_FORMAT);","lastModifiedDate":"2024-02-03"},{"lineNumber":261,"author":{"gitId":"NeoHW"},"content":" return \"The correct usage is: \" + EVENT_FORMAT;","lastModifiedDate":"2024-02-03"},{"lineNumber":262,"author":{"gitId":"NeoHW"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":263,"author":{"gitId":"NeoHW"},"content":" // throw new ByteBuddyException(FAILED_WRITE_TO_FILE_ERROR_MESSAGE);","lastModifiedDate":"2024-02-03"},{"lineNumber":264,"author":{"gitId":"NeoHW"},"content":" return FAILED_WRITE_TO_FILE_ERROR_MESSAGE;","lastModifiedDate":"2024-02-03"},{"lineNumber":265,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":266,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":267,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":268,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":269,"author":{"gitId":"NeoHW"},"content":" * Returns the entire task list.","lastModifiedDate":"2024-02-03"},{"lineNumber":270,"author":{"gitId":"NeoHW"},"content":" * Each task is numbered, and its details are displayed in the format \"[task_number].[task_details]\".","lastModifiedDate":"2024-01-29"},{"lineNumber":271,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":272,"author":{"gitId":"NeoHW"},"content":" public String getFormattedTaskList() {","lastModifiedDate":"2024-02-03"},{"lineNumber":273,"author":{"gitId":"NeoHW"},"content":" StringBuilder str \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":274,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":275,"author":{"gitId":"NeoHW"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":276,"author":{"gitId":"NeoHW"},"content":" if (i \u003e 0) {","lastModifiedDate":"2024-01-29"},{"lineNumber":277,"author":{"gitId":"NeoHW"},"content":" str.append(\"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":278,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":279,"author":{"gitId":"NeoHW"},"content":" str.append(\"\\t \").append(i + 1).append(\".\").append(taskList.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":280,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":281,"author":{"gitId":"NeoHW"},"content":" return str.toString();","lastModifiedDate":"2024-02-03"},{"lineNumber":282,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":283,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":284,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":285,"author":{"gitId":"NeoHW"},"content":" * Prints the entire task list with a solid line break above and below the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":286,"author":{"gitId":"NeoHW"},"content":" * Each task is numbered, and its details are displayed in the format \"[task_number].[task_details]\".","lastModifiedDate":"2024-02-03"},{"lineNumber":287,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":288,"author":{"gitId":"NeoHW"},"content":" public void printTaskList() {","lastModifiedDate":"2024-02-03"},{"lineNumber":289,"author":{"gitId":"NeoHW"},"content":" Ui.printWithSolidLineBreak(getFormattedTaskList());","lastModifiedDate":"2024-02-03"},{"lineNumber":290,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":291,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":292,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":293,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":294,"author":{"gitId":"NeoHW"},"content":" * Formats the task list into a string with each task\u0027s formatted output on a new line","lastModifiedDate":"2024-01-29"},{"lineNumber":295,"author":{"gitId":"NeoHW"},"content":" * for writing into output file.","lastModifiedDate":"2024-01-29"},{"lineNumber":296,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":297,"author":{"gitId":"NeoHW"},"content":" * @param taskList The list of tasks to format.","lastModifiedDate":"2024-01-29"},{"lineNumber":298,"author":{"gitId":"NeoHW"},"content":" * @return A string containing the formatted output of each task in the list.","lastModifiedDate":"2024-01-29"},{"lineNumber":299,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":300,"author":{"gitId":"NeoHW"},"content":" public String getTaskListFormattedStringOutput(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-29"},{"lineNumber":301,"author":{"gitId":"NeoHW"},"content":" StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2024-01-27"},{"lineNumber":302,"author":{"gitId":"NeoHW"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-27"},{"lineNumber":303,"author":{"gitId":"NeoHW"},"content":" s.append(task.getTextFormattedOutput()).append(\"\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":304,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":305,"author":{"gitId":"NeoHW"},"content":" return s.toString();","lastModifiedDate":"2024-01-27"},{"lineNumber":306,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":307,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":308,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":309,"author":{"gitId":"NeoHW"},"content":" * Returns a confirmation message for the added task,","lastModifiedDate":"2024-02-03"},{"lineNumber":310,"author":{"gitId":"NeoHW"},"content":" * and the updated total number of tasks in the list.","lastModifiedDate":"2024-01-29"},{"lineNumber":311,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":312,"author":{"gitId":"NeoHW"},"content":" * @param task The task that was added to the list.","lastModifiedDate":"2024-01-29"},{"lineNumber":313,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":314,"author":{"gitId":"NeoHW"},"content":" public String returnTaskAddedString(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":315,"author":{"gitId":"NeoHW"},"content":" StringBuilder str \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":316,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":317,"author":{"gitId":"NeoHW"},"content":" str.append(\"\\t Got it. I\u0027ve Added this task:\\n\")","lastModifiedDate":"2024-01-29"},{"lineNumber":318,"author":{"gitId":"NeoHW"},"content":" .append(\"\\t\\t \").append(task).append(\"\\n\")","lastModifiedDate":"2024-01-29"},{"lineNumber":319,"author":{"gitId":"NeoHW"},"content":" .append(\"\\t Now you have \").append(taskList.size()).append(\" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":320,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":321,"author":{"gitId":"NeoHW"},"content":" return str.toString();","lastModifiedDate":"2024-02-03"},{"lineNumber":322,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":323,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":324,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":325,"author":{"gitId":"NeoHW"},"content":" * Prints a solid line break, followed by a confirmation message for the added task,","lastModifiedDate":"2024-02-03"},{"lineNumber":326,"author":{"gitId":"NeoHW"},"content":" * and the updated total number of tasks in the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":327,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":328,"author":{"gitId":"NeoHW"},"content":" * @param task The task that was added to the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":329,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":330,"author":{"gitId":"NeoHW"},"content":" public void printTaskAddedWithSolidLineBreak(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":331,"author":{"gitId":"NeoHW"},"content":" Ui.printWithSolidLineBreak(returnTaskAddedString(task));","lastModifiedDate":"2024-02-03"},{"lineNumber":332,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":333,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":334,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":335,"author":{"gitId":"NeoHW"},"content":" * Returns a confirmation message for the removed task,","lastModifiedDate":"2024-02-03"},{"lineNumber":336,"author":{"gitId":"NeoHW"},"content":" * and the updated total number of tasks in the list.","lastModifiedDate":"2024-01-29"},{"lineNumber":337,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":338,"author":{"gitId":"NeoHW"},"content":" * @param task The task that was removed from the list.","lastModifiedDate":"2024-01-29"},{"lineNumber":339,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":340,"author":{"gitId":"NeoHW"},"content":" public String returnTaskRemovedString(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":341,"author":{"gitId":"NeoHW"},"content":" StringBuilder str \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":342,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":343,"author":{"gitId":"NeoHW"},"content":" str.append(\"\\t Noted. I\u0027ve removed this task:\\n\")","lastModifiedDate":"2024-01-29"},{"lineNumber":344,"author":{"gitId":"NeoHW"},"content":" .append(\"\\t\\t \").append(task).append(\"\\n\")","lastModifiedDate":"2024-01-29"},{"lineNumber":345,"author":{"gitId":"NeoHW"},"content":" .append(\"\\t Now you have \").append(taskList.size()).append(\" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":346,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":347,"author":{"gitId":"NeoHW"},"content":" return str.toString();","lastModifiedDate":"2024-02-03"},{"lineNumber":348,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":349,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":350,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":351,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":352,"author":{"gitId":"NeoHW"},"content":" * Prints a solid line break, followed by a confirmation message for the removed task,","lastModifiedDate":"2024-02-03"},{"lineNumber":353,"author":{"gitId":"NeoHW"},"content":" * and the updated total number of tasks in the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":354,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":355,"author":{"gitId":"NeoHW"},"content":" * @param task The task that was removed from the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":356,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":357,"author":{"gitId":"NeoHW"},"content":" public void printTaskRemovedWithSolidLineBreak(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":358,"author":{"gitId":"NeoHW"},"content":" Ui.printWithSolidLineBreak(returnTaskRemovedString(task));","lastModifiedDate":"2024-02-03"},{"lineNumber":359,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":360,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":361,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":362,"author":{"gitId":"NeoHW"},"content":" * Finds tasks in the task list that match a specified keyword in their descriptions.","lastModifiedDate":"2024-01-29"},{"lineNumber":363,"author":{"gitId":"NeoHW"},"content":" * The method searches for tasks containing the specified text in their descriptions","lastModifiedDate":"2024-01-29"},{"lineNumber":364,"author":{"gitId":"NeoHW"},"content":" * and prints the matching tasks to the console.","lastModifiedDate":"2024-01-29"},{"lineNumber":365,"author":{"gitId":"NeoHW"},"content":" * Returns the matching tasks","lastModifiedDate":"2024-02-03"},{"lineNumber":366,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":367,"author":{"gitId":"NeoHW"},"content":" * @param keywords The keyword or text to search for among all the tasks in the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":368,"author":{"gitId":"NeoHW"},"content":" * @throws ByteBuddyException If there is an issue with the search operation, such as an empty keyword.","lastModifiedDate":"2024-01-29"},{"lineNumber":369,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":370,"author":{"gitId":"NeoHW"},"content":" public String findTaskWithKeywordInTaskList(List\u003cString\u003e keywords) throws ByteBuddyException {","lastModifiedDate":"2024-02-03"},{"lineNumber":371,"author":{"gitId":"NeoHW"},"content":" if (keywords.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":372,"author":{"gitId":"NeoHW"},"content":" throw new ByteBuddyException(EMPTY_KEYWORD_ERROR_MESSAGE + \"\\n\\t Usage: \" + LIST_FORMAT);","lastModifiedDate":"2024-01-29"},{"lineNumber":373,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":374,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":375,"author":{"gitId":"NeoHW"},"content":" boolean foundTask \u003d false;","lastModifiedDate":"2024-01-29"},{"lineNumber":376,"author":{"gitId":"NeoHW"},"content":" StringBuilder str \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":377,"author":{"gitId":"NeoHW"},"content":" for (String keyword: keywords) {","lastModifiedDate":"2024-01-29"},{"lineNumber":378,"author":{"gitId":"NeoHW"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":379,"author":{"gitId":"NeoHW"},"content":" String description \u003d taskList.get(i).getDescription().toLowerCase();","lastModifiedDate":"2024-01-29"},{"lineNumber":380,"author":{"gitId":"NeoHW"},"content":" Pair\u003cStringBuilder, Boolean\u003e pair \u003d","lastModifiedDate":"2024-02-07"},{"lineNumber":381,"author":{"gitId":"NeoHW"},"content":" processMatchingTask(keyword.toLowerCase(), str, foundTask, description, i);","lastModifiedDate":"2024-02-07"},{"lineNumber":382,"author":{"gitId":"NeoHW"},"content":" str \u003d pair.getKey();","lastModifiedDate":"2024-02-06"},{"lineNumber":383,"author":{"gitId":"NeoHW"},"content":" foundTask \u003d pair.getValue();","lastModifiedDate":"2024-02-06"},{"lineNumber":384,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":385,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":386,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":387,"author":{"gitId":"NeoHW"},"content":" if (!foundTask) {","lastModifiedDate":"2024-01-29"},{"lineNumber":388,"author":{"gitId":"NeoHW"},"content":" Ui.printWithSolidLineBreak(\"\\t There are no matching tasks in your list :(\");","lastModifiedDate":"2024-01-29"},{"lineNumber":389,"author":{"gitId":"NeoHW"},"content":" return \"There are no matching tasks in your list :(\";","lastModifiedDate":"2024-02-03"},{"lineNumber":390,"author":{"gitId":"NeoHW"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":391,"author":{"gitId":"NeoHW"},"content":" Ui.printWithSolidLineBreak(\"\\t \" + str.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":392,"author":{"gitId":"NeoHW"},"content":" return str.toString();","lastModifiedDate":"2024-02-03"},{"lineNumber":393,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":394,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":395,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":396,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":397,"author":{"gitId":"NeoHW"},"content":" private Pair\u003cStringBuilder, Boolean\u003e processMatchingTask(String keyword, StringBuilder str,","lastModifiedDate":"2024-02-07"},{"lineNumber":398,"author":{"gitId":"NeoHW"},"content":" boolean foundTask, String description, int i) {","lastModifiedDate":"2024-02-07"},{"lineNumber":399,"author":{"gitId":"NeoHW"},"content":" if (description.contains(keyword)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":400,"author":{"gitId":"NeoHW"},"content":" if (!foundTask) {","lastModifiedDate":"2024-02-06"},{"lineNumber":401,"author":{"gitId":"NeoHW"},"content":" str.append(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-02-06"},{"lineNumber":402,"author":{"gitId":"NeoHW"},"content":" foundTask \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":403,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":404,"author":{"gitId":"NeoHW"},"content":" str.append(\"\\n\\t\\t \").append(i + 1).append(\".\").append(taskList.get(i));","lastModifiedDate":"2024-02-06"},{"lineNumber":405,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":406,"author":{"gitId":"NeoHW"},"content":" return new Pair\u003c\u003e(str, foundTask);","lastModifiedDate":"2024-02-06"},{"lineNumber":407,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":408,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"NeoHW":408}},{"path":"src/main/java/bytebuddy/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":" * The Todo class represents a simple task without a specified deadline or duration.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" * It extends the Task class and provides specific implementations for task creation and string representations.","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" * Constructs a new Todo task with the given description.","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" * Constructs a new Todo task with completion status, description, and optional information.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" * @param completed The completion status of the task (1 for done, 0 for not done).","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" public Todo(String completed, String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" super(description, completed.equals(\"1\"));","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * Returns a formatted string representation of the Todo task for writing into output file.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" * @return The formatted output string.","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" public String getTextFormattedOutput() {","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" int intIsDone \u003d isDone ? 1 : 0;","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" return String.format(\"T | %d | %s\", intIsDone, description);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" * Returns a string representation of the Todo task.","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" * @return The string representation.","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"NeoHW":48}},{"path":"src/main/java/bytebuddy/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Information.SOLID_LINE_BREAK;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Messages.BYE_MESSAGE;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Messages.START_MESSAGE;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" * The Ui class handles user interface interactions, including printing messages and reading user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"public class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" private Scanner sc;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" * Creates a new Ui instance, initializing the Scanner for user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" public Ui() {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" * Prints the given string with a solid line break above and below it.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" * @param s The string to be printed.","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" public static void printWithSolidLineBreak(String s) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" System.out.println(\"\\t\" + SOLID_LINE_BREAK);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" System.out.println(s);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" System.out.println(\"\\t\" + SOLID_LINE_BREAK);","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" * Prints the start message with a solid line break above and below it.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" public static void printStartMessage() {","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" printWithSolidLineBreak(\"\\t \" + START_MESSAGE);","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" * Prints the bye message with a solid line break above and below it.","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" public static void printByeMessage() {","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" printWithSolidLineBreak(\"\\t \" + BYE_MESSAGE);","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" * Reads a command entered by the user.","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" * @return The command entered by the user.","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" return sc.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":56}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"NeoHW":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"600.0\" xmlns\u003d\"http://javafx.com/javafx/17.0.7\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"bytebuddy.gui.MainWindow\"\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"50.0\" prefWidth\u003d\"600.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"524.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"600.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"588.0\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"NeoHW":19}},{"path":"src/test/java/bytebuddy/tasks/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.ExceptionErrorMessages.EMPTY_DESCRIPTION_ERROR_MESSAGE;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.ExceptionErrorMessages.NO_SUCH_TASK_NUMBER_ERROR_MESSAGE;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.ExceptionErrorMessages.NUMBER_FORMAT_ERROR_MESSAGE;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Formats.DEADLINE_FORMAT;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Formats.EVENT_FORMAT;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import static bytebuddy.constants.Information.SOLID_LINE_BREAK;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import java.io.PrintStream;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import bytebuddy.exceptions.ByteBuddyException;","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"public class TaskListTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" public void testTodo() throws ByteBuddyException, IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" String todoInfo \u003d \"Test\";","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" taskList.todo(todoInfo);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"[T][✕] Test\", taskList.get(0).toString());","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" assertEquals(1, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" public void testTodoEmptyDescription() {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" String emptyTodoInfo \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" ByteBuddyException exception \u003d assertThrows(ByteBuddyException.class, () -\u003e taskList.todo(emptyTodoInfo));","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"holup!! \" + EMPTY_DESCRIPTION_ERROR_MESSAGE, exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" public void testDeadline() throws ByteBuddyException, IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" String deadlineInfo \u003d \"Submit report /by 2023-02-28\";","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" taskList.deadline(deadlineInfo);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"[D][✕] Submit report (by: Feb 28 2023)\", taskList.get(0).toString());","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" assertEquals(1, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" public void testDeadlineIncorrectFormat() {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" String incorrectDeadlineInfo \u003d \"Submit report\";","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" ByteBuddyException exception \u003d","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" assertThrows(ByteBuddyException.class, () -\u003e taskList.deadline(incorrectDeadlineInfo));","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"holup!! The correct usage is: \" + DEADLINE_FORMAT, exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" public void testEvent() throws ByteBuddyException, IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" String eventInfo \u003d \"TestEvent /from 2019-10-15 /to 2/12/2019 1800\";","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" taskList.event(eventInfo);","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"[E][✕] TestEvent (from: Oct 15 2019 to: 2 of December 2019, 6PM)\", taskList.get(0).toString());","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" assertEquals(1, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" public void testEventIncorrectFormat() {","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" String incorrectEventInfo \u003d \"Project meeting /from 2023-02-28 14:00\";","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" ByteBuddyException exception \u003d assertThrows(ByteBuddyException.class, () -\u003e taskList.event(incorrectEventInfo));","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"holup!! The correct usage is: \" + EVENT_FORMAT, exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" public void testMark() throws ByteBuddyException, IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" taskList.add(new Todo(\"Test\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" taskList.mark(\"1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"[T][✓] Test\", taskList.get(0).toString());","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" public void testMarkInvalidFormat() {","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" String invalidMarkInfo \u003d \"abc\";","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" ByteBuddyException exception \u003d assertThrows(ByteBuddyException.class, () -\u003e taskList.mark(invalidMarkInfo));","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"holup!! \" + NUMBER_FORMAT_ERROR_MESSAGE, exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" public void testMarkInvalidTaskNumber() {","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" String invalidTaskNumber \u003d \"10\";","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" ByteBuddyException exception \u003d assertThrows(ByteBuddyException.class, () -\u003e taskList.mark(invalidTaskNumber));","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"holup!! \" + NO_SUCH_TASK_NUMBER_ERROR_MESSAGE, exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":" public void testUnmark() throws ByteBuddyException, IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":" taskList.add(new Todo(\"Test\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" taskList.mark(\"1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":" taskList.unmark(\"1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"[T][✕] Test\", taskList.get(0).toString());","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" public void testUnmarkInvalidFormat() {","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":" String invalidUnmarkInfo \u003d \"xyz\";","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":" ByteBuddyException exception \u003d assertThrows(ByteBuddyException.class, () -\u003e taskList.unmark(invalidUnmarkInfo));","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"holup!! \" + NUMBER_FORMAT_ERROR_MESSAGE, exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" public void testUnmarkInvalidTaskNumber() {","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":" String invalidTaskNumber \u003d \"5\";","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"NeoHW"},"content":" ByteBuddyException exception \u003d assertThrows(ByteBuddyException.class, () -\u003e taskList.unmark(invalidTaskNumber));","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"holup!! \" + NO_SUCH_TASK_NUMBER_ERROR_MESSAGE, exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":" public void testDelete() throws ByteBuddyException, IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":" taskList.add(new Todo(\"Test\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"NeoHW"},"content":" taskList.delete(\"1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":" assertEquals(0, taskList.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":150,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":151,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" public void testDeleteInvalidFormat() {","lastModifiedDate":"2024-01-28"},{"lineNumber":153,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":" String invalidDeleteInfo \u003d \"invalid\";","lastModifiedDate":"2024-01-28"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":156,"author":{"gitId":"NeoHW"},"content":" ByteBuddyException exception \u003d assertThrows(ByteBuddyException.class, () -\u003e taskList.delete(invalidDeleteInfo));","lastModifiedDate":"2024-01-28"},{"lineNumber":157,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"holup!! \" + NUMBER_FORMAT_ERROR_MESSAGE, exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":158,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":159,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":160,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":161,"author":{"gitId":"NeoHW"},"content":" public void testDeleteInvalidTaskNumber() {","lastModifiedDate":"2024-01-28"},{"lineNumber":162,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":163,"author":{"gitId":"NeoHW"},"content":" String invalidTaskNumber \u003d \"8\";","lastModifiedDate":"2024-01-28"},{"lineNumber":164,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":165,"author":{"gitId":"NeoHW"},"content":" ByteBuddyException exception \u003d assertThrows(ByteBuddyException.class, () -\u003e taskList.delete(invalidTaskNumber));","lastModifiedDate":"2024-01-28"},{"lineNumber":166,"author":{"gitId":"NeoHW"},"content":" assertEquals(\"holup!! \" + NO_SUCH_TASK_NUMBER_ERROR_MESSAGE, exception.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":167,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":169,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":170,"author":{"gitId":"NeoHW"},"content":" public void testPrintTaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":171,"author":{"gitId":"NeoHW"},"content":" // Redirect System.out for testing print output","lastModifiedDate":"2024-01-28"},{"lineNumber":172,"author":{"gitId":"NeoHW"},"content":" ByteArrayOutputStream outContent \u003d new ByteArrayOutputStream();","lastModifiedDate":"2024-01-28"},{"lineNumber":173,"author":{"gitId":"NeoHW"},"content":" System.setOut(new PrintStream(outContent));","lastModifiedDate":"2024-01-28"},{"lineNumber":174,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":175,"author":{"gitId":"NeoHW"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":176,"author":{"gitId":"NeoHW"},"content":" taskList.add(new Todo(\"Test\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":177,"author":{"gitId":"NeoHW"},"content":" taskList.add(new Deadline(\"Submit report\", \"2023-02-28\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":178,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":179,"author":{"gitId":"NeoHW"},"content":" taskList.printTaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":180,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":181,"author":{"gitId":"NeoHW"},"content":" String expectedOutput \u003d \"\\t\"","lastModifiedDate":"2024-01-29"},{"lineNumber":182,"author":{"gitId":"NeoHW"},"content":" + SOLID_LINE_BREAK","lastModifiedDate":"2024-01-29"},{"lineNumber":183,"author":{"gitId":"NeoHW"},"content":" + \"\\n\\t 1.[T][✕] Test\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":184,"author":{"gitId":"NeoHW"},"content":" + \"\\t 2.[D][✕] Submit report (by: Feb 28 2023)\\n\"","lastModifiedDate":"2024-01-29"},{"lineNumber":185,"author":{"gitId":"NeoHW"},"content":" + \"\\t\"","lastModifiedDate":"2024-01-29"},{"lineNumber":186,"author":{"gitId":"NeoHW"},"content":" + SOLID_LINE_BREAK","lastModifiedDate":"2024-01-29"},{"lineNumber":187,"author":{"gitId":"NeoHW"},"content":" + \"\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":188,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedOutput, outContent.toString());","lastModifiedDate":"2024-01-28"},{"lineNumber":189,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":190,"author":{"gitId":"NeoHW"},"content":" // Reset System.out","lastModifiedDate":"2024-01-28"},{"lineNumber":191,"author":{"gitId":"NeoHW"},"content":" System.setOut(System.out);","lastModifiedDate":"2024-01-28"},{"lineNumber":192,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":193,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":193}},{"path":"src/test/java/bytebuddy/tasks/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"public class TaskTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" public void testTaskMarkAsDone() {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" Task task \u003d new Task(\"Sample task\");","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" String expectedOutput \u003d \"Nice! I\u0027ve mark this task as done:\\n\\t\\t[✓] \" + task.description;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" String actualOutput \u003d task.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedOutput, actualOutput);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" assertTrue(task.isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" public void testTaskUnmarkAsDone() {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" Task task \u003d new Task(\"Sample task\", true);","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" String expectedOutput \u003d \"OK, I\u0027ve marked this task as not done yet:\\n\\t\\t[✕] \" + task.description;","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" String actualOutput \u003d task.unmarkAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedOutput, actualOutput);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" assertFalse(task.isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" public void testGetStatusIcon() {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" Task task \u003d new Task(\"Sample task\");","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" String expectedOutput \u003d \"✓\";","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" String actualOutput \u003d task.getStatusIcon();","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedOutput, actualOutput);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" public void testTaskToString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" Task task \u003d new Task(\"Sample task\", true);","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" String expectedOutput \u003d \"[\" + task.getStatusIcon() + \"] Sample task\";","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" String actualOutput \u003d task.toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedOutput, actualOutput);","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":55}},{"path":"src/test/java/bytebuddy/tasks/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package bytebuddy.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"public class TodoTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" public void testTodoToString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" Todo todo \u003d new Todo(\"Buy groceries\");","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" String expectedOutput \u003d \"[T][✕] Buy groceries\";","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" String actualOutput \u003d todo.toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedOutput, actualOutput);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" public void testTodoTextFormattedOutput() {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" Todo todo \u003d new Todo(\"Buy groceries\");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" String expectedOutput \u003d \"T | 0 | Buy groceries\";","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" String actualOutput \u003d todo.getTextFormattedOutput();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedOutput, actualOutput);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"NeoHW":29}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"todo borrow book","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"mark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"mark 3","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"unmark 2","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"list","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"bye","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"NeoHW":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":"NeoHW"},"content":"java -classpath ..\\bin ByteBuddy \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-28"},{"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":{"NeoHW":1,"-":20}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"# ./runtest.sh to run this script in text-ui-test directory","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"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":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-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":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"diff ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"NeoHW":3,"-":33}}] diff --git a/NeoHW_ip_master/commits.json b/NeoHW_ip_master/commits.json index 76d673a4..c5e4922d 100644 --- a/NeoHW_ip_master/commits.json +++ b/NeoHW_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"NeoHW":[{"date":"2024-01-20","commitResults":[{"hash":"2b106f035b13fcee0608754f41858e0d75da0398","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit (a) Give your chatbot a new name, to differentiate it from the placeholder name Duke. (ByteBuddy) (b) Implement an initial skeletal version of the it that simply greets the user and exits.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}}]},{"date":"2024-01-21","commitResults":[{"hash":"e2083395382e29f4c009b9eb00eccfef259b3600","isMergeCommit":false,"messageTitle":"Level 1. Echo Improve the skeletal version of Duke so that it echos commands entered by the user, and exits when the user types the command bye.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":6}}},{"hash":"ae5f2ce8215d73222029925edb638ecb32b36c59","isMergeCommit":false,"messageTitle":"Level 2. Add, List Add the ability to store whatever text entered by the user and display them back to the user when requested.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":3}}},{"hash":"8490a375665762481bc176b485610dccb3d7c03e","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done Add the ability to mark tasks as done. Optionally, add the ability to change the status back to not done.","messageBody":"1. Changed if-else to switch case\n2. markAsDone() \u0026 unmarkAsDone() returns a string that can be piped into printWithSolidLineBreak()\n","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":14}}}]},{"date":"2024-01-22","commitResults":[{"hash":"f974246acc31fe6d9f496bba52ece0eff8c1f204","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines Add support for tracking three types of tasks:","messageBody":"Level 4. ToDos, Events, Deadlines\nAdd support for tracking three types of tasks:\n\tToDos: tasks without any date/time attached to it e.g., visit new theme park\n\tDeadlines: tasks that need to be done before a specific date/time e.g., submit report by 11/10/2019 5pm\n\tEvents: tasks that start at a specific date/time and ends at a specific date/time e.g., (a) team project meeting 2/10/2019 2-4pm (b) orientation week 4/10/2019 to 11/10/2019\n","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":8}}},{"hash":"46781652528b4d9a21afbeeaa8340924d1fe3e4d","isMergeCommit":false,"messageTitle":"abstracted method splitStringWithTrim that takes in the string information, and a string separator for future ease of reuse","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"912008a5858ccadca9eaa71cb6b22f0c07702b84","isMergeCommit":false,"messageTitle":"Command to do testing : ./runtest.sh to run this script in text-ui-test directory ( if error try using sudo, should not need to) A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":0,"deletions":1},"sh":{"insertions":4,"deletions":6}}},{"hash":"d5cc486626024c2b23efd8b92c85e55d1d36ae83","isMergeCommit":false,"messageTitle":"Added DukeException class, handled marking and unmarking index errors, empty todo event deadline errors wrong command errors","messageBody":"future improvements:\nmake sure deadline and event formatting / number of tokens input are correct\n","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":36}}},{"hash":"8276f44441d75c4ba69cd2402ea29c18de9bbbe8","isMergeCommit":false,"messageTitle":"1. Caught NumberFormatException e (e.g. mark abc instead of mark 1) , where user inputs string instead of int 2. Changed task status icon : done is ✓ and not done is x","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}}]},{"date":"2024-01-23","commitResults":[{"hash":"f19217d98a08709fa0690207ccccb472e956a255","isMergeCommit":false,"messageTitle":"Level 6. Delete Add support for deleting tasks from the list.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"c589eeee651a897c8ac94b64283487aaed9a6375","isMergeCommit":false,"messageTitle":"Duke.java : Abstracted commands logic out in main and into methods\tAvoid cluttering main by abstracting logic out into function and method calls","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":39}}}]},{"date":"2024-01-25","commitResults":[{"hash":"51d0ee7529cafd0dc54b62944ceda0e738ff02b5","isMergeCommit":false,"messageTitle":"changed global class variables to private static final","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"6a68fbde0bc50de815d9f91bd9d601d6fb64faf8","isMergeCommit":false,"messageTitle":"Abstracted out main functionality into runByteBuddy method to reduce main clutter","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":4}}},{"hash":"e6437f02f3eac54be10bca9817c6b2416c9d74e9","isMergeCommit":false,"messageTitle":"fix switch case indentation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":25}}}]},{"date":"2024-01-26","commitResults":[{"hash":"6cee7a7a65c91ff4ea13f48d13c4e929b0dff433","isMergeCommit":false,"messageTitle":"minor changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"36137f9b93b3954ebc5fdbe770c40d011371a864","isMergeCommit":false,"messageTitle":"Error messages variables handle all errors possible (i hope)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":32}}},{"hash":"5070146c3aa25e1e90dc9f1d456a0459c309281a","isMergeCommit":false,"messageTitle":"cleanup: removed unused thrown exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"b6cd87c4bb32ef79d0d531736b54bb45b40856af","isMergeCommit":false,"messageTitle":"cleanup: remove unused thrown exception from main","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-27","commitResults":[{"hash":"64d9764151f57180b88b0beabb296066a6f609c8","isMergeCommit":false,"messageTitle":"minor fix","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"e70c4ed6b38534167ab94124ba9ee3ebb72e98f7","isMergeCommit":false,"messageTitle":"Add method to create data dir and output.txt file This would handle the case where data file or dir does not exist at the start","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":43,"deletions":9}}},{"hash":"830ab24935e45a217dbc7d0aebe04634e93cbb1f","isMergeCommit":false,"messageTitle":"add functionality to save tasks in data/output.txt file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":69,"deletions":12}}},{"hash":"c5a82cb958b446d8afb9c24050e63ee3ecbdc453","isMergeCommit":false,"messageTitle":"Add functionality: Load data in TaskList from info in output.txt","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":1}}},{"hash":"1cade574b4081c91f96084ee8b5e2189725e4731","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"e8e30f2dc2305266e7b7165f622b25ec0d1cf348","isMergeCommit":false,"messageTitle":"Change split delimiters to use \"/by\" \u0026 \"/from|/to\" instead of just \"/\" This fixes the issue when string info contains \"/\" such as \"2/12/2019 1800\"","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":6,"deletions":7}}},{"hash":"ebc0eb300c27ff234a93b039f2b84a4d65d989b8","isMergeCommit":false,"messageTitle":"Add support for LocalDate and LocalDateTime for Deadline class Example: 2/12/2019 1800 \u003d 2nd of December 2019, 6pm 2019-10-15 \u003d Oct 15 2019","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":44,"deletions":2}}},{"hash":"d28a488c88896da3fa0f5eea2621ab814418ed11","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"d1169256d13dc18b36c7a7eac1cafaa179ccdc10","isMergeCommit":false,"messageTitle":"Add Date and DateTime support for Event class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":66,"deletions":5}}},{"hash":"d9dc49c9ab392e09a4225fd3fdde9e65ce240e5f","isMergeCommit":false,"messageTitle":"Refactor and divide classes into packages Add TaskList class, Storage class","messageBody":"TODO: Add Ui and Parser class\n","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":359,"deletions":195}}}]},{"date":"2024-01-28","commitResults":[{"hash":"a947215d4019111bf59868f706138213b5e32d87","isMergeCommit":false,"messageTitle":"Add Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":91}}},{"hash":"0f1c237da4416b810edb019fa11696f490675812","isMergeCommit":false,"messageTitle":"Bugfix: Fix \"by from to\" in deadline \u0026 event class","messageBody":"Bug: non date or datetime would not be captured\n","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"c6b91baa69d6659f5955d5ec31d6580217e477cb","isMergeCommit":false,"messageTitle":"Minor refactoring changes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":9,"deletions":23}}},{"hash":"d674c40e1dce92f1a8e97fa857876bc0b06ca553","isMergeCommit":false,"messageTitle":"Add Parser class, Add command interface and specific command classes Rename Duke to Bytebuddy","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":272,"deletions":87},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"dd3000123de1dcdb221e6e3773184441bf4fdb87","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"c1a56b6b571d9416fdb42a1fb0772f7ff2c5d282","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":7,"deletions":7}}},{"hash":"ef0b49401a2a605a867ae13895cb8abc940f51f2","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":2,"deletions":2}}},{"hash":"bf69b6e98e37dd4ce134ab19790b6ae73f0a4618","isMergeCommit":false,"messageTitle":"ByteBuddy!","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":2}}},{"hash":"5f3db258073d9058f97c10046b9bc49a01d244c7","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/NeoHW/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1a95c677dcd6317109bf632f6428e276df99861a","isMergeCommit":false,"messageTitle":"Change application MainClassName in build.gradle to Bytebuddy Previous value of seedu.duke.Duke leads to Error: Could not find or load main class seedu.duke.Duke","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":1}}},{"hash":"ba73397c7b6bccff5f63670caece3a9032aa2e5f","isMergeCommit":false,"messageTitle":"Minor formatting changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":10}}},{"hash":"4bab6d295b1794e8156cd707eab5d1763e668b42","isMergeCommit":false,"messageTitle":"Package files into src/main/java/bytebuddy package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":91,"deletions":91}}},{"hash":"9d595171293f7b88fd557ccef2e9e41c4981c822","isMergeCommit":false,"messageTitle":"Gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}},{"hash":"aaa6e1cf3edffec7f3147a3495d45ebe639a9552","isMergeCommit":false,"messageTitle":"Add TaskTest and TodoTest that tests Task and Todo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":0}}},{"hash":"d638ebe9f90bb1db85ffc678d22a469293a2dd31","isMergeCommit":false,"messageTitle":"Add TaskListTest file","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":10,"deletions":1},"txt":{"insertions":1,"deletions":4},"java":{"insertions":189,"deletions":1}}},{"hash":"07d17239dd661e37ef52f50e6166a61f05b46f24","isMergeCommit":false,"messageTitle":"Bugfix: Remove mockito as it seems to interfere with gradle build and run","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":8},"txt":{"insertions":3,"deletions":1},"java":{"insertions":10,"deletions":10}}},{"hash":"470fdf3a11466ec056d79e55e37f78fd482f730a","isMergeCommit":false,"messageTitle":"Bugfix: `./gradlew clean build` runs tests and write testcases into output.txt Changes to `build.gradle` to separate test sources from main sources","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"txt":{"insertions":0,"deletions":2}}},{"hash":"f0e0b8bfc301398c69e29384e23319650949a3af","isMergeCommit":false,"messageTitle":"Minor changes","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":1,"deletions":1}}},{"hash":"b31a4d39627b6865dbe96a4b91bd5fdcf1dd6b19","isMergeCommit":false,"messageTitle":"Add support for packaging app as a JAR file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}},{"hash":"4cbeaa2ef96e8b50542fc3b1319532e33cb2ce3e","isMergeCommit":false,"messageTitle":"Add comment on where to find output JAR file Info: JAR output is under build/libs archiveBaseName \u003d `duke`: This sets the base name of the generated JAR file to \"duke\". The resulting JAR file will be named something like \"duke.jar\". archiveFileName \u003d `bytebuddy.jar`: With this configuration, the generated JAR file will be named \"bytebuddy.jar\" instead of the default name based on archiveBaseName and archiveClassifier. This is useful when you want more control over the naming of your artifacts. If you don\u0027t specify `archiveFileName`, the Shadow Plugin will generate a name based on `archiveBaseName`, `archiveAppendix`, `archiveVersion`, and `archiveClassifier`.","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}},{"hash":"387a1afb35caa4a1498989d1e207bcfcc7617f9d","isMergeCommit":false,"messageTitle":"Add ByteBuddy.java JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"157aecf5b61dad4bb08f7dafa0c3006add441e89","isMergeCommit":false,"messageTitle":"Add JavaDoc for commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":190,"deletions":2}}},{"hash":"bc3b4ed7918224ee068f929845162f7f6c5cca7c","isMergeCommit":false,"messageTitle":"Add JavaDoc for ByteBuddyException Refactor DukeException -\u003e ByteBuddyException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":95}}}]},{"date":"2024-01-29","commitResults":[{"hash":"a326038251e6d9222386b0184c138d57ea571d21","isMergeCommit":false,"messageTitle":"Add JavaDoc for Parser, Storage and Ui","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":6}}},{"hash":"55de8b4fc87b271d885ab8d4bb3f8757ba8d8ba1","isMergeCommit":false,"messageTitle":"Add JavaDocs for tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":267,"deletions":1}}},{"hash":"6bd36f20ad2d947624afb39373d0d96fa108826e","isMergeCommit":false,"messageTitle":"Coding standard fix: Names representing methods must be verbs","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":13}}},{"hash":"c8a8147f8c254c0eaa5986731c4cd30d287f33df","isMergeCommit":false,"messageTitle":"Implement FindCommand This allows users to find a task by searching for a keyword","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":97,"deletions":0}}},{"hash":"c864ad29828fa85e0ec26ad09a18271737aff8dc","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2230cb26b55519db0665c83404fa99c8650d5dfc","isMergeCommit":true,"messageTitle":"Merge tag \u0027Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"34985d6c49ac936886fb033f37599e3f7a13523d","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-JavaDoc\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/bytebuddy/tasks/Task.java\n#\tsrc/main/java/bytebuddy/tasks/TaskList.java\n","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"93441de7cfb65df82d41cc5b7242fa9e9e10dc60","isMergeCommit":false,"messageTitle":"Tasklist: Change from System.out.println() to using Ui write methods Change solidLineBreak to \"-\".repeat(60)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":23}}},{"hash":"cda1de1d8f5f5bf8e04ea3582548d7ec61065a1e","isMergeCommit":false,"messageTitle":"Add CheckStyle config files","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0}}},{"hash":"7567036d36fdee39640456ebcc741455b68b501f","isMergeCommit":false,"messageTitle":"Fix coding standards for main files using checkstyleMain","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":60}}},{"hash":"2fd1516f04755da6497c32bce4b08d76e2218d26","isMergeCommit":false,"messageTitle":"Fix coding standards for test files using checkstyleTest","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":19}}},{"hash":"77a7e59f87d0e4fde1a84fcdda137aa03cc413fb","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-CheckStyle\u0027","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{}},{"hash":"1fa6e2597e6b832fd38a1d520ce4b6fc047b4c6f","isMergeCommit":false,"messageTitle":"Add feature: Find command allows for multiple keywords, separated by \",\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":29}}},{"hash":"9d7314c954107f432e8a6afdddef7acd531ebfd6","isMergeCommit":false,"messageTitle":"Bugfix: \u003ccommand\u003e \u003cspace\u003e leads to CommandInfo being \"\" instead of emptyList","messageBody":"This leads to bugs such as `todo ` adding a todo task that has no description\nAdd LIST_FORMAT message to let users know how to use list command\n","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":2}}},{"hash":"cc55892ce0fcff0d8955d183ad876e38489facb7","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Varargs\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-02","commitResults":[{"hash":"0b2c96f2b13b3af584db86093a9be4cb5bf60261","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":22,"deletions":4}}},{"hash":"daace3ecb2e32602e34d3616dec0e84d21aabd26","isMergeCommit":false,"messageTitle":"Build.gradle: Add gradle dependencies","messageBody":"Create resources/images file,\nadded bytebuddy and user image\n","fileTypesAndContributionMap":{"gradle":{"insertions":17,"deletions":0}}},{"hash":"25dda79430950dfba703fe06cf5c935ef008b5cc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/NeoHW/ip into Level-10","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-03","commitResults":[{"hash":"3f6bd63327d9d275a59f97be0f6eb207e382164d","isMergeCommit":false,"messageTitle":"Add javaFX GUI for ByteBuddy chatbot","messageBody":"* Implement a graphical user interface (GUI) for the chatbot using\njavaFX technology.\n* Enhance user interaction by providing a visual interface\nfor input and output.\n* This commit focuses on creating a more user-friendly experience,\npromoting engagement.\n* The use of JavaFX ensures a modern and responsive design\nfor the chatbot interface.\n","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":325,"deletions":67}}},{"hash":"3b65fcb6784b78c79c830ca61a49a98222193a29","isMergeCommit":true,"messageTitle":"Merge branch \u0027Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}},{"hash":"a6b22def44a6d7b321aab401008e5b4934988a68","isMergeCommit":false,"messageTitle":"Refactor: Enhance code readability and adhere to Checkstyle standards","messageBody":"This commit refactors the code in accordance with Checkstyle standards\nto improve overall code readability and maintainability.\n\nKey changes include:\n- Proper indentation and spacing adjustments for consistency\n- Ensured adherence to coding conventions outlined by Checkstyle rules\n- Correct import classification and ordering\n\nThese changes contribute to a cleaner and more consistent codebase,\npromoting better collaboration and long-term maintainability.\n","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":23}}}]},{"date":"2024-02-06","commitResults":[{"hash":"ab219af187ee7f4be91f9924b6f637999b606fc6","isMergeCommit":false,"messageTitle":"Add assert statements to document important assumptions","messageBody":"The current situation lacks documentation of important assumptions in the code.\nIt is crucial to explicitly state these assumptions to improve code readability and maintainability.\n\nAssert statements have been added at various points in the code to\ndocument important assumptions that should hold true during runtime.\n\nThese assertions help clarify the expected behaviour and provide\nimmediate feedback if any assumptions are violated.\n\nThis approach is adopted to enhance code clarity and ensure that\nfuture modifications or updates adhere to the documented assumptions.\n\nAdditionally, it aids in debugging by pinpointing potential issues early in the development process.\n","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"txt":{"insertions":1,"deletions":1},"java":{"insertions":8,"deletions":0}}},{"hash":"75185322ba7946ddc51c4f3a3ffb9ec7855a2407","isMergeCommit":false,"messageTitle":"Code quality refactoring","messageBody":"Some code contains deep nesting and lacks clear logical structure,\nmaking it difficult to follow the flow of logic.\n\nDeeply nested code and lack of logical structure decrease readability\nand maintainability of the codebase.\n\nThe code is being restructured to improve readability.\nDeep nesting is being avoided, and related segments of code are being\ngrouped logically using methods, indentation, and line spacing.\n\nThis follows best practices for code quality and readability.\n","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":16}}},{"hash":"ed2933882fadcd047013c4537a45616723b9aecc","isMergeCommit":true,"messageTitle":"Merge pull request #1 from NeoHW/A-Assertions","messageBody":"Add assert statements to document important assumptions","fileTypesAndContributionMap":{}},{"hash":"7fecbddacb3a5236654c959dcd07b7361eecec43","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into A-CodeQuality","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dcc6005563800b5b0aef874c31e447d530d1e63b","isMergeCommit":true,"messageTitle":"Merge pull request #2 from NeoHW/A-CodeQuality","messageBody":"Code quality refactoring","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"NeoHW":{"java":2132,"md":28,"fxml":35,"sh":3,"bat":1,"gradle":39,"txt":14}},"authorContributionVariance":{"NeoHW":165284.45},"authorDisplayNameMap":{"NeoHW":"CS2103-F09-2 NEO ..OWEI"}} +{"authorDailyContributionsMap":{"NeoHW":[{"date":"2024-01-20","commitResults":[{"hash":"2b106f035b13fcee0608754f41858e0d75da0398","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit (a) Give your chatbot a new name, to differentiate it from the placeholder name Duke. (ByteBuddy) (b) Implement an initial skeletal version of the it that simply greets the user and exits.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}}]},{"date":"2024-01-21","commitResults":[{"hash":"e2083395382e29f4c009b9eb00eccfef259b3600","isMergeCommit":false,"messageTitle":"Level 1. Echo Improve the skeletal version of Duke so that it echos commands entered by the user, and exits when the user types the command bye.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":6}}},{"hash":"ae5f2ce8215d73222029925edb638ecb32b36c59","isMergeCommit":false,"messageTitle":"Level 2. Add, List Add the ability to store whatever text entered by the user and display them back to the user when requested.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":3}}},{"hash":"8490a375665762481bc176b485610dccb3d7c03e","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done Add the ability to mark tasks as done. Optionally, add the ability to change the status back to not done.","messageBody":"1. Changed if-else to switch case\n2. markAsDone() \u0026 unmarkAsDone() returns a string that can be piped into printWithSolidLineBreak()\n","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":14}}}]},{"date":"2024-01-22","commitResults":[{"hash":"f974246acc31fe6d9f496bba52ece0eff8c1f204","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines Add support for tracking three types of tasks:","messageBody":"Level 4. ToDos, Events, Deadlines\nAdd support for tracking three types of tasks:\n\tToDos: tasks without any date/time attached to it e.g., visit new theme park\n\tDeadlines: tasks that need to be done before a specific date/time e.g., submit report by 11/10/2019 5pm\n\tEvents: tasks that start at a specific date/time and ends at a specific date/time e.g., (a) team project meeting 2/10/2019 2-4pm (b) orientation week 4/10/2019 to 11/10/2019\n","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":8}}},{"hash":"46781652528b4d9a21afbeeaa8340924d1fe3e4d","isMergeCommit":false,"messageTitle":"abstracted method splitStringWithTrim that takes in the string information, and a string separator for future ease of reuse","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"912008a5858ccadca9eaa71cb6b22f0c07702b84","isMergeCommit":false,"messageTitle":"Command to do testing : ./runtest.sh to run this script in text-ui-test directory ( if error try using sudo, should not need to) A-TextUiTesting: Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"java":{"insertions":0,"deletions":1},"sh":{"insertions":4,"deletions":6}}},{"hash":"d5cc486626024c2b23efd8b92c85e55d1d36ae83","isMergeCommit":false,"messageTitle":"Added DukeException class, handled marking and unmarking index errors, empty todo event deadline errors wrong command errors","messageBody":"future improvements:\nmake sure deadline and event formatting / number of tokens input are correct\n","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":36}}},{"hash":"8276f44441d75c4ba69cd2402ea29c18de9bbbe8","isMergeCommit":false,"messageTitle":"1. Caught NumberFormatException e (e.g. mark abc instead of mark 1) , where user inputs string instead of int 2. Changed task status icon : done is ✓ and not done is x","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":1}}}]},{"date":"2024-01-23","commitResults":[{"hash":"f19217d98a08709fa0690207ccccb472e956a255","isMergeCommit":false,"messageTitle":"Level 6. Delete Add support for deleting tasks from the list.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"c589eeee651a897c8ac94b64283487aaed9a6375","isMergeCommit":false,"messageTitle":"Duke.java : Abstracted commands logic out in main and into methods\tAvoid cluttering main by abstracting logic out into function and method calls","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":63,"deletions":39}}}]},{"date":"2024-01-25","commitResults":[{"hash":"51d0ee7529cafd0dc54b62944ceda0e738ff02b5","isMergeCommit":false,"messageTitle":"changed global class variables to private static final","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}},{"hash":"6a68fbde0bc50de815d9f91bd9d601d6fb64faf8","isMergeCommit":false,"messageTitle":"Abstracted out main functionality into runByteBuddy method to reduce main clutter","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":4}}},{"hash":"e6437f02f3eac54be10bca9817c6b2416c9d74e9","isMergeCommit":false,"messageTitle":"fix switch case indentation","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":25}}}]},{"date":"2024-01-26","commitResults":[{"hash":"6cee7a7a65c91ff4ea13f48d13c4e929b0dff433","isMergeCommit":false,"messageTitle":"minor changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":3}}},{"hash":"36137f9b93b3954ebc5fdbe770c40d011371a864","isMergeCommit":false,"messageTitle":"Error messages variables handle all errors possible (i hope)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":32}}},{"hash":"5070146c3aa25e1e90dc9f1d456a0459c309281a","isMergeCommit":false,"messageTitle":"cleanup: removed unused thrown exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"b6cd87c4bb32ef79d0d531736b54bb45b40856af","isMergeCommit":false,"messageTitle":"cleanup: remove unused thrown exception from main","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}}]},{"date":"2024-01-27","commitResults":[{"hash":"64d9764151f57180b88b0beabb296066a6f609c8","isMergeCommit":false,"messageTitle":"minor fix","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"e70c4ed6b38534167ab94124ba9ee3ebb72e98f7","isMergeCommit":false,"messageTitle":"Add method to create data dir and output.txt file This would handle the case where data file or dir does not exist at the start","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":43,"deletions":9}}},{"hash":"830ab24935e45a217dbc7d0aebe04634e93cbb1f","isMergeCommit":false,"messageTitle":"add functionality to save tasks in data/output.txt file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":69,"deletions":12}}},{"hash":"c5a82cb958b446d8afb9c24050e63ee3ecbdc453","isMergeCommit":false,"messageTitle":"Add functionality: Load data in TaskList from info in output.txt","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":1}}},{"hash":"1cade574b4081c91f96084ee8b5e2189725e4731","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"e8e30f2dc2305266e7b7165f622b25ec0d1cf348","isMergeCommit":false,"messageTitle":"Change split delimiters to use \"/by\" \u0026 \"/from|/to\" instead of just \"/\" This fixes the issue when string info contains \"/\" such as \"2/12/2019 1800\"","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":6,"deletions":7}}},{"hash":"ebc0eb300c27ff234a93b039f2b84a4d65d989b8","isMergeCommit":false,"messageTitle":"Add support for LocalDate and LocalDateTime for Deadline class Example: 2/12/2019 1800 \u003d 2nd of December 2019, 6pm 2019-10-15 \u003d Oct 15 2019","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":44,"deletions":2}}},{"hash":"d28a488c88896da3fa0f5eea2621ab814418ed11","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"d1169256d13dc18b36c7a7eac1cafaa179ccdc10","isMergeCommit":false,"messageTitle":"Add Date and DateTime support for Event class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":66,"deletions":5}}},{"hash":"d9dc49c9ab392e09a4225fd3fdde9e65ce240e5f","isMergeCommit":false,"messageTitle":"Refactor and divide classes into packages Add TaskList class, Storage class","messageBody":"TODO: Add Ui and Parser class\n","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":359,"deletions":195}}}]},{"date":"2024-01-28","commitResults":[{"hash":"a947215d4019111bf59868f706138213b5e32d87","isMergeCommit":false,"messageTitle":"Add Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":91}}},{"hash":"0f1c237da4416b810edb019fa11696f490675812","isMergeCommit":false,"messageTitle":"Bugfix: Fix \"by from to\" in deadline \u0026 event class","messageBody":"Bug: non date or datetime would not be captured\n","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"c6b91baa69d6659f5955d5ec31d6580217e477cb","isMergeCommit":false,"messageTitle":"Minor refactoring changes","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":9,"deletions":23}}},{"hash":"d674c40e1dce92f1a8e97fa857876bc0b06ca553","isMergeCommit":false,"messageTitle":"Add Parser class, Add command interface and specific command classes Rename Duke to Bytebuddy","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":272,"deletions":87},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"dd3000123de1dcdb221e6e3773184441bf4fdb87","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"c1a56b6b571d9416fdb42a1fb0772f7ff2c5d282","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":7,"deletions":7}}},{"hash":"ef0b49401a2a605a867ae13895cb8abc940f51f2","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":2,"deletions":2}}},{"hash":"bf69b6e98e37dd4ce134ab19790b6ae73f0a4618","isMergeCommit":false,"messageTitle":"ByteBuddy!","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":2}}},{"hash":"5f3db258073d9058f97c10046b9bc49a01d244c7","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/NeoHW/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1a95c677dcd6317109bf632f6428e276df99861a","isMergeCommit":false,"messageTitle":"Change application MainClassName in build.gradle to Bytebuddy Previous value of seedu.duke.Duke leads to Error: Could not find or load main class seedu.duke.Duke","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":1}}},{"hash":"ba73397c7b6bccff5f63670caece3a9032aa2e5f","isMergeCommit":false,"messageTitle":"Minor formatting changes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":10}}},{"hash":"4bab6d295b1794e8156cd707eab5d1763e668b42","isMergeCommit":false,"messageTitle":"Package files into src/main/java/bytebuddy package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":91,"deletions":91}}},{"hash":"9d595171293f7b88fd557ccef2e9e41c4981c822","isMergeCommit":false,"messageTitle":"Gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}},{"hash":"aaa6e1cf3edffec7f3147a3495d45ebe639a9552","isMergeCommit":false,"messageTitle":"Add TaskTest and TodoTest that tests Task and Todo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":0}}},{"hash":"d638ebe9f90bb1db85ffc678d22a469293a2dd31","isMergeCommit":false,"messageTitle":"Add TaskListTest file","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":10,"deletions":1},"txt":{"insertions":1,"deletions":4},"java":{"insertions":189,"deletions":1}}},{"hash":"07d17239dd661e37ef52f50e6166a61f05b46f24","isMergeCommit":false,"messageTitle":"Bugfix: Remove mockito as it seems to interfere with gradle build and run","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":8},"txt":{"insertions":3,"deletions":1},"java":{"insertions":10,"deletions":10}}},{"hash":"470fdf3a11466ec056d79e55e37f78fd482f730a","isMergeCommit":false,"messageTitle":"Bugfix: `./gradlew clean build` runs tests and write testcases into output.txt Changes to `build.gradle` to separate test sources from main sources","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"txt":{"insertions":0,"deletions":2}}},{"hash":"f0e0b8bfc301398c69e29384e23319650949a3af","isMergeCommit":false,"messageTitle":"Minor changes","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":1,"deletions":1}}},{"hash":"b31a4d39627b6865dbe96a4b91bd5fdcf1dd6b19","isMergeCommit":false,"messageTitle":"Add support for packaging app as a JAR file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}},{"hash":"4cbeaa2ef96e8b50542fc3b1319532e33cb2ce3e","isMergeCommit":false,"messageTitle":"Add comment on where to find output JAR file Info: JAR output is under build/libs archiveBaseName \u003d `duke`: This sets the base name of the generated JAR file to \"duke\". The resulting JAR file will be named something like \"duke.jar\". archiveFileName \u003d `bytebuddy.jar`: With this configuration, the generated JAR file will be named \"bytebuddy.jar\" instead of the default name based on archiveBaseName and archiveClassifier. This is useful when you want more control over the naming of your artifacts. If you don\u0027t specify `archiveFileName`, the Shadow Plugin will generate a name based on `archiveBaseName`, `archiveAppendix`, `archiveVersion`, and `archiveClassifier`.","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}},{"hash":"387a1afb35caa4a1498989d1e207bcfcc7617f9d","isMergeCommit":false,"messageTitle":"Add ByteBuddy.java JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":0}}},{"hash":"157aecf5b61dad4bb08f7dafa0c3006add441e89","isMergeCommit":false,"messageTitle":"Add JavaDoc for commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":190,"deletions":2}}},{"hash":"bc3b4ed7918224ee068f929845162f7f6c5cca7c","isMergeCommit":false,"messageTitle":"Add JavaDoc for ByteBuddyException Refactor DukeException -\u003e ByteBuddyException","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":110,"deletions":95}}}]},{"date":"2024-01-29","commitResults":[{"hash":"a326038251e6d9222386b0184c138d57ea571d21","isMergeCommit":false,"messageTitle":"Add JavaDoc for Parser, Storage and Ui","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":6}}},{"hash":"55de8b4fc87b271d885ab8d4bb3f8757ba8d8ba1","isMergeCommit":false,"messageTitle":"Add JavaDocs for tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":267,"deletions":1}}},{"hash":"6bd36f20ad2d947624afb39373d0d96fa108826e","isMergeCommit":false,"messageTitle":"Coding standard fix: Names representing methods must be verbs","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":13}}},{"hash":"c8a8147f8c254c0eaa5986731c4cd30d287f33df","isMergeCommit":false,"messageTitle":"Implement FindCommand This allows users to find a task by searching for a keyword","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":97,"deletions":0}}},{"hash":"c864ad29828fa85e0ec26ad09a18271737aff8dc","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2230cb26b55519db0665c83404fa99c8650d5dfc","isMergeCommit":true,"messageTitle":"Merge tag \u0027Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"34985d6c49ac936886fb033f37599e3f7a13523d","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-JavaDoc\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/bytebuddy/tasks/Task.java\n#\tsrc/main/java/bytebuddy/tasks/TaskList.java\n","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"93441de7cfb65df82d41cc5b7242fa9e9e10dc60","isMergeCommit":false,"messageTitle":"Tasklist: Change from System.out.println() to using Ui write methods Change solidLineBreak to \"-\".repeat(60)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":23}}},{"hash":"cda1de1d8f5f5bf8e04ea3582548d7ec61065a1e","isMergeCommit":false,"messageTitle":"Add CheckStyle config files","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0}}},{"hash":"7567036d36fdee39640456ebcc741455b68b501f","isMergeCommit":false,"messageTitle":"Fix coding standards for main files using checkstyleMain","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":60}}},{"hash":"2fd1516f04755da6497c32bce4b08d76e2218d26","isMergeCommit":false,"messageTitle":"Fix coding standards for test files using checkstyleTest","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":19}}},{"hash":"77a7e59f87d0e4fde1a84fcdda137aa03cc413fb","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-CheckStyle\u0027","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{}},{"hash":"1fa6e2597e6b832fd38a1d520ce4b6fc047b4c6f","isMergeCommit":false,"messageTitle":"Add feature: Find command allows for multiple keywords, separated by \",\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":29}}},{"hash":"9d7314c954107f432e8a6afdddef7acd531ebfd6","isMergeCommit":false,"messageTitle":"Bugfix: \u003ccommand\u003e \u003cspace\u003e leads to CommandInfo being \"\" instead of emptyList","messageBody":"This leads to bugs such as `todo ` adding a todo task that has no description\nAdd LIST_FORMAT message to let users know how to use list command\n","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":2}}},{"hash":"cc55892ce0fcff0d8955d183ad876e38489facb7","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Varargs\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-02","commitResults":[{"hash":"0b2c96f2b13b3af584db86093a9be4cb5bf60261","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":22,"deletions":4}}},{"hash":"daace3ecb2e32602e34d3616dec0e84d21aabd26","isMergeCommit":false,"messageTitle":"Build.gradle: Add gradle dependencies","messageBody":"Create resources/images file,\nadded bytebuddy and user image\n","fileTypesAndContributionMap":{"gradle":{"insertions":17,"deletions":0}}},{"hash":"25dda79430950dfba703fe06cf5c935ef008b5cc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/NeoHW/ip into Level-10","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-03","commitResults":[{"hash":"3f6bd63327d9d275a59f97be0f6eb207e382164d","isMergeCommit":false,"messageTitle":"Add javaFX GUI for ByteBuddy chatbot","messageBody":"* Implement a graphical user interface (GUI) for the chatbot using\njavaFX technology.\n* Enhance user interaction by providing a visual interface\nfor input and output.\n* This commit focuses on creating a more user-friendly experience,\npromoting engagement.\n* The use of JavaFX ensures a modern and responsive design\nfor the chatbot interface.\n","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":325,"deletions":67}}},{"hash":"3b65fcb6784b78c79c830ca61a49a98222193a29","isMergeCommit":true,"messageTitle":"Merge branch \u0027Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}},{"hash":"a6b22def44a6d7b321aab401008e5b4934988a68","isMergeCommit":false,"messageTitle":"Refactor: Enhance code readability and adhere to Checkstyle standards","messageBody":"This commit refactors the code in accordance with Checkstyle standards\nto improve overall code readability and maintainability.\n\nKey changes include:\n- Proper indentation and spacing adjustments for consistency\n- Ensured adherence to coding conventions outlined by Checkstyle rules\n- Correct import classification and ordering\n\nThese changes contribute to a cleaner and more consistent codebase,\npromoting better collaboration and long-term maintainability.\n","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":23}}}]},{"date":"2024-02-06","commitResults":[{"hash":"ab219af187ee7f4be91f9924b6f637999b606fc6","isMergeCommit":false,"messageTitle":"Add assert statements to document important assumptions","messageBody":"The current situation lacks documentation of important assumptions in the code.\nIt is crucial to explicitly state these assumptions to improve code readability and maintainability.\n\nAssert statements have been added at various points in the code to\ndocument important assumptions that should hold true during runtime.\n\nThese assertions help clarify the expected behaviour and provide\nimmediate feedback if any assumptions are violated.\n\nThis approach is adopted to enhance code clarity and ensure that\nfuture modifications or updates adhere to the documented assumptions.\n\nAdditionally, it aids in debugging by pinpointing potential issues early in the development process.\n","tags":["A-FullCommitMessage"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"txt":{"insertions":1,"deletions":1},"java":{"insertions":8,"deletions":0}}},{"hash":"75185322ba7946ddc51c4f3a3ffb9ec7855a2407","isMergeCommit":false,"messageTitle":"Code quality refactoring","messageBody":"Some code contains deep nesting and lacks clear logical structure,\nmaking it difficult to follow the flow of logic.\n\nDeeply nested code and lack of logical structure decrease readability\nand maintainability of the codebase.\n\nThe code is being restructured to improve readability.\nDeep nesting is being avoided, and related segments of code are being\ngrouped logically using methods, indentation, and line spacing.\n\nThis follows best practices for code quality and readability.\n","fileTypesAndContributionMap":{"java":{"insertions":32,"deletions":16}}},{"hash":"ed2933882fadcd047013c4537a45616723b9aecc","isMergeCommit":true,"messageTitle":"Merge pull request #1 from NeoHW/A-Assertions","messageBody":"Add assert statements to document important assumptions","fileTypesAndContributionMap":{}},{"hash":"7fecbddacb3a5236654c959dcd07b7361eecec43","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into A-CodeQuality","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dcc6005563800b5b0aef874c31e447d530d1e63b","isMergeCommit":true,"messageTitle":"Merge pull request #2 from NeoHW/A-CodeQuality","messageBody":"Code quality refactoring","fileTypesAndContributionMap":{}}]},{"date":"2024-02-07","commitResults":[{"hash":"a15db839a3f84815ea2c061dc937464a22b9547c","isMergeCommit":false,"messageTitle":"Fix checkstyle issue and test CI workflow with GitHub Actions","messageBody":"Ensure that no line exceeds 120 characters per line to adhere to\ncommit message style guidelines and improve readability.\n\nCI workflow failed due to a line exceeding 120 characters.\nBy resolving this issue, we ensure that the codebase complies with\nthe defined coding standards and that the CI workflow\nsuccessfully executes without errors.\n\nAdditionally, this commit demonstrates the effectiveness of the CI setup\nby triggering a build and ensuring that the codebase is continuously\nintegrated and tested throughout the development process.\n","tags":["A-CI"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"NeoHW":{"java":2134,"md":28,"fxml":35,"sh":3,"bat":1,"gradle":39,"txt":14}},"authorContributionVariance":{"NeoHW":159566.48},"authorDisplayNameMap":{"NeoHW":"CS2103-F09-2 NEO ..OWEI"}} diff --git a/R-Laksh_ip_master/authorship.json b/R-Laksh_ip_master/authorship.json index 01d4b85b..35ab7194 100644 --- a/R-Laksh_ip_master/authorship.json +++ b/R-Laksh_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":"R-Laksh"},"content":" mainClass.set(\"Quacky.Quacky\")","lastModifiedDate":"2024-02-02"},{"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":"R-Laksh"},"content":" archiveBaseName \u003d \"quacky\"","lastModifiedDate":"2024-02-02"},{"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":{"R-Laksh":2,"-":40}},{"path":"data/data.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"T | 1 | hi","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"R-Laksh":1}},{"path":"src/main/java/Quacky/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":"public class Parser {","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":" public static void parseCommand(String command, TaskList tasks, UI ui) throws QuackyException {","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" String[] keywords \u003d command.split(\" \", 2);","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":" String commandWord \u003d keywords[0];","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" switch (commandWord.toLowerCase()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" case \"list\": {","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":" ui.showList(tasks);","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":" case \"find\": {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":" String keyword \u003d keywords[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" TaskList foundTasks \u003d tasks.findTasksByKeyword(keyword);","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":" if (foundTasks.taskNumber() \u003d\u003d 0) {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":" ui.say(\"No tasks found with the keyword: \" + keyword);","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":" ui.showList(foundTasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"R-Laksh"},"content":" case \"mark\": {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"R-Laksh"},"content":" int taskNumber \u003d Integer.parseInt(keywords[1]) - 1;","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"R-Laksh"},"content":" tasks.markCompleteTask(taskNumber);","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"R-Laksh"},"content":" ui.showMarkDone(tasks.printTask(taskNumber));","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"R-Laksh"},"content":" } catch (QuackyException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"R-Laksh"},"content":" ui.showErrorMessage(e);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"R-Laksh"},"content":" } finally {","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"R-Laksh"},"content":" case \"unmark\": {","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"R-Laksh"},"content":" int taskNumber \u003d Integer.parseInt(keywords[1]) - 1;","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"R-Laksh"},"content":" tasks.unmarkCompleteTask(taskNumber);","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"R-Laksh"},"content":" ui.showUnmarkDone(tasks.printTask(taskNumber));","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"R-Laksh"},"content":" case \"delete\": {","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"R-Laksh"},"content":" int taskNumber \u003d Integer.parseInt(keywords[1]) - 1;","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"R-Laksh"},"content":" tasks.deleteTask(taskNumber);","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"R-Laksh"},"content":" ui.showDeleteTask(tasks.taskNumber(), tasks.printTask(taskNumber));","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"R-Laksh"},"content":" case \"todo\": {","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"R-Laksh"},"content":" if (command.trim().equals(\"todo\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"R-Laksh"},"content":" throw new QuackyException(\"Quack? (Please provide a description for your task)\");","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"R-Laksh"},"content":" Task newTask \u003d new Todo(keywords[1]);","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"R-Laksh"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"R-Laksh"},"content":" ui.showAddTask(tasks.taskNumber(), newTask.toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"R-Laksh"},"content":" } catch (QuackyException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"R-Laksh"},"content":" ui.showErrorMessage(e);","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"R-Laksh"},"content":" case \"deadline\": {","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"R-Laksh"},"content":" if (command.trim().equals(\"deadline\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"R-Laksh"},"content":" throw new QuackyException(\"Quack? (Please provide a description for your task)\");","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"R-Laksh"},"content":" String[] parts \u003d command.substring(9).split(\" /by \");","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"R-Laksh"},"content":" Task newTask \u003d new Deadline(parts[0], LocalDate.parse(parts[1]));","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"R-Laksh"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"R-Laksh"},"content":" ui.showAddTask(tasks.taskNumber(), newTask.toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"R-Laksh"},"content":" } catch (QuackyException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"R-Laksh"},"content":" ui.showErrorMessage(e);","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"R-Laksh"},"content":" case \"event\": {","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"R-Laksh"},"content":" if (command.trim().equals(\"event\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"R-Laksh"},"content":" throw new QuackyException(\"Quack? (Please provide a description for your task)\");","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"R-Laksh"},"content":" String[] parts \u003d keywords[1].split(\" /from | /to \");","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"R-Laksh"},"content":" Task newTask \u003d new Event(parts[0], LocalDate.parse(parts[1]), LocalDate.parse(parts[2]));","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"R-Laksh"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"R-Laksh"},"content":" ui.showAddTask(tasks.taskNumber(), newTask.toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"R-Laksh"},"content":" } catch (QuackyException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"R-Laksh"},"content":" ui.showErrorMessage(e);","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"R-Laksh"},"content":" case \"bye\": {","lastModifiedDate":"2024-02-01"},{"lineNumber":99,"author":{"gitId":"R-Laksh"},"content":" ui.showFarewell();","lastModifiedDate":"2024-02-01"},{"lineNumber":100,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":101,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":102,"author":{"gitId":"R-Laksh"},"content":" default: {","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"R-Laksh"},"content":" throw new QuackyException(\"Quack? (In confusion)\");","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":107,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"R-Laksh":107}},{"path":"src/main/java/quacky/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":" * Represents a deadline task in the Quacky application. A deadline task is a task that needs","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":" * to be completed before a specific date.","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" protected LocalDate by;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" protected String stringBy;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":" * Constructs a new Deadline task with the specified description and deadline date.","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":" * @param description The text description of the deadline task.","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" * @param by The date the task needs to be completed by.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"R-Laksh"},"content":" this.stringBy \u003d by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"R-Laksh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"R-Laksh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"R-Laksh"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.stringBy + \")\";","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"R-Laksh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"R-Laksh"},"content":" protected String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"R-Laksh"},"content":" return \"D | \" + super.toFileString() + \" | \" + this.by;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"R-Laksh":35}},{"path":"src/main/java/quacky/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":" * Represents an event task in the Quacky application. An event task is a task","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":" * that occurs over a period of time, from a start date to an end date.","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" protected LocalDate from;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" protected String stringFrom;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":" protected LocalDate to;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" protected String stringTo;","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":" * Constructs a new Event task with the specified description, start date, and end date.","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":" * @param description The textual description of the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":" * @param from The start date of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":" * @param to The end date of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"R-Laksh"},"content":" public Event(String description, LocalDate from, LocalDate to) {","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"R-Laksh"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"R-Laksh"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"R-Laksh"},"content":" this.stringFrom \u003d from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"R-Laksh"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"R-Laksh"},"content":" this.stringTo \u003d to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"R-Laksh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"R-Laksh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"R-Laksh"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.stringFrom + \" to: \" + this.stringTo + \")\";","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"R-Laksh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"R-Laksh"},"content":" protected String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"R-Laksh"},"content":" return \"E | \" + super.toFileString() + \" | \" + this.from + \" | \" + this.to;","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"R-Laksh":40}},{"path":"src/main/java/quacky/IllegalValueException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":" * Signals that some given data does not fulfill some constraints.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":"public class IllegalValueException extends Exception {","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":" * @param message should contain relevant information on the failed constraint(s)","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":" public IllegalValueException(String message) {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" super(message);","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"R-Laksh":13}},{"path":"src/main/java/quacky/Quacky.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":" * The main class for the Quacky application.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":" * Initializes the application\u0027s user interface, storage system, and task list,","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":" * and orchestrates the main application flow.","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":"public class Quacky {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" private static TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" private Storage storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" private UI ui;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":" * Constructs a new Quacky application instance.","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":" * Attempts to load tasks from the specified file path upon instantiation.","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" * @param filePath The path to the file from which tasks should be loaded.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":" public Quacky(String filePath) {","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":" ui \u003d new UI();","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"R-Laksh"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"R-Laksh"},"content":" // Use the filePath parameter instead of hardcoding","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"R-Laksh"},"content":" tasks \u003d storage.load();","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"R-Laksh"},"content":" } catch (Storage.InvalidStorageFilePathException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"R-Laksh"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"R-Laksh"},"content":" } catch (Storage.StorageOperationException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"R-Laksh"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"R-Laksh"},"content":" * Starts the main application loop, processing user commands until termination.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"R-Laksh"},"content":" * Handles command parsing, execution, and any resulting exceptions.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"R-Laksh"},"content":" public void run() {","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"R-Laksh"},"content":" ui.showGreeting();","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"R-Laksh"},"content":" while (ui.isRunning) {","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"R-Laksh"},"content":" String command \u003d ui.readCommand();","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"R-Laksh"},"content":" Parser.parseCommand(command, tasks, ui);","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"R-Laksh"},"content":" } catch (QuackyException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"R-Laksh"},"content":" ui.showErrorMessage(e);","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"R-Laksh"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"R-Laksh"},"content":" } catch (Storage.StorageOperationException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"R-Laksh"},"content":" ui.showErrorMessage(e);","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"R-Laksh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"R-Laksh"},"content":" new Quacky(\"./data/data.txt\").run();","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"R-Laksh":57}},{"path":"src/main/java/quacky/QuackyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"import java.lang.Exception;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":" * Represents exceptions specific to the Quacky application.","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":"public class QuackyException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" public QuackyException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"R-Laksh":12}},{"path":"src/main/java/quacky/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"import java.io.File;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" * Represents the file used to store task data","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":" * adapted from:https://github.com/se-edu/addressbook-level2/blob/master/src/seedu/addressbook/storage/StorageFile.java","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":"public class Storage {","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":" * Default file path used if the user doesn\u0027t provide the file name.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":" public static final String DEFAULT_STORAGE_FILEPATH \u003d \"./data.txt\";","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":" public final File file;","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"R-Laksh"},"content":" public final Path path;","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"R-Laksh"},"content":" * @throws InvalidStorageFilePathException if the default path is invalid","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"R-Laksh"},"content":" public Storage() throws InvalidStorageFilePathException {","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"R-Laksh"},"content":" this(DEFAULT_STORAGE_FILEPATH);","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"R-Laksh"},"content":" * @throws InvalidStorageFilePathException if the given file path is invalid","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"R-Laksh"},"content":" public Storage(String filePath) throws InvalidStorageFilePathException {","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"R-Laksh"},"content":" path \u003d Paths.get(filePath);","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"R-Laksh"},"content":" if (!isValidPath(path)) {","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"R-Laksh"},"content":" throw new InvalidStorageFilePathException(\"Quacky.Quacky.Storage file should end with \u0027.txt\u0027\");","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"R-Laksh"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"R-Laksh"},"content":" * Saves the {@code addressBook} data to the storage file.","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"R-Laksh"},"content":" * @throws StorageOperationException if there were errors converting and/or storing data to file.","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"R-Laksh"},"content":" public void save(TaskList tasks) throws StorageOperationException {","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"R-Laksh"},"content":" FileWriter fw \u003d new FileWriter(this.file, false);","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"R-Laksh"},"content":" String textToAdd \u003d tasks.printSimplified();","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"R-Laksh"},"content":" fw.write(textToAdd);","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"R-Laksh"},"content":" fw.close();","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"R-Laksh"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"R-Laksh"},"content":" throw new StorageOperationException(\"Error writing to file: \" + path);","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"R-Laksh"},"content":" * Loads the {@code Quacky.Quacky.TaskList} data from this storage file, and then returns it.","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"R-Laksh"},"content":" * Returns an empty {@code Quacky.Quacky.TaskList} if the file does not exist, or is not a regular file.","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"R-Laksh"},"content":" * @throws StorageOperationException if there were errors reading and/or converting data from file.","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"R-Laksh"},"content":" public TaskList load() throws StorageOperationException {","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"R-Laksh"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"R-Laksh"},"content":" if (!Files.exists(path) || !Files.isRegularFile(path)) {","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"R-Laksh"},"content":" return tasks;","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"R-Laksh"},"content":" Scanner fileReader \u003d new Scanner(file);","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"R-Laksh"},"content":" while (fileReader.hasNext()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"R-Laksh"},"content":" String line \u003d fileReader.nextLine();","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"R-Laksh"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"R-Laksh"},"content":" Task task \u003d null;","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"R-Laksh"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"R-Laksh"},"content":" case \"E\":","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"R-Laksh"},"content":" task \u003d new Event(parts[2], LocalDate.parse(parts[3]), LocalDate.parse(parts[4]));","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"R-Laksh"},"content":" case \"D\":","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"R-Laksh"},"content":" task \u003d new Deadline(parts[2], LocalDate.parse(parts[3]));","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"R-Laksh"},"content":" case \"T\":","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"R-Laksh"},"content":" task \u003d new Todo(parts[2]);","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"R-Laksh"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"R-Laksh"},"content":" if (parts[1].equals(\"0\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"R-Laksh"},"content":" task.markDone();","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"R-Laksh"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"R-Laksh"},"content":" fileReader.close();","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"R-Laksh"},"content":" return tasks;","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"R-Laksh"},"content":" } catch (FileNotFoundException fnfe) {","lastModifiedDate":"2024-02-01"},{"lineNumber":99,"author":{"gitId":"R-Laksh"},"content":" return tasks;","lastModifiedDate":"2024-02-01"},{"lineNumber":100,"author":{"gitId":"R-Laksh"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-02-01"},{"lineNumber":101,"author":{"gitId":"R-Laksh"},"content":" throw new StorageOperationException(\"Error writing to file: \" + path);","lastModifiedDate":"2024-02-01"},{"lineNumber":102,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":107,"author":{"gitId":"R-Laksh"},"content":" * Returns true if the given path is acceptable as a storage file.","lastModifiedDate":"2024-02-01"},{"lineNumber":108,"author":{"gitId":"R-Laksh"},"content":" * The file path is considered acceptable if it ends with \u0027.txt\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":109,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":110,"author":{"gitId":"R-Laksh"},"content":" private static boolean isValidPath(Path filePath) {","lastModifiedDate":"2024-02-01"},{"lineNumber":111,"author":{"gitId":"R-Laksh"},"content":" return filePath.toString().endsWith(\".txt\");","lastModifiedDate":"2024-02-01"},{"lineNumber":112,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":113,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":114,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":115,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":116,"author":{"gitId":"R-Laksh"},"content":" * Signals that the given file path does not fulfill the storage filepath constraints.","lastModifiedDate":"2024-02-01"},{"lineNumber":117,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":118,"author":{"gitId":"R-Laksh"},"content":" public static class InvalidStorageFilePathException extends IllegalValueException {","lastModifiedDate":"2024-02-01"},{"lineNumber":119,"author":{"gitId":"R-Laksh"},"content":" public InvalidStorageFilePathException(String message) {","lastModifiedDate":"2024-02-01"},{"lineNumber":120,"author":{"gitId":"R-Laksh"},"content":" super(message);","lastModifiedDate":"2024-02-01"},{"lineNumber":121,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":122,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":123,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":124,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":125,"author":{"gitId":"R-Laksh"},"content":" * Signals that some error has occured while trying to convert and read/write data between the application","lastModifiedDate":"2024-02-01"},{"lineNumber":126,"author":{"gitId":"R-Laksh"},"content":" * and the storage file.","lastModifiedDate":"2024-02-01"},{"lineNumber":127,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":128,"author":{"gitId":"R-Laksh"},"content":" public static class StorageOperationException extends Exception {","lastModifiedDate":"2024-02-01"},{"lineNumber":129,"author":{"gitId":"R-Laksh"},"content":" public StorageOperationException(String message) {","lastModifiedDate":"2024-02-01"},{"lineNumber":130,"author":{"gitId":"R-Laksh"},"content":" super(message);","lastModifiedDate":"2024-02-01"},{"lineNumber":131,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":132,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":133,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"R-Laksh":133}},{"path":"src/main/java/quacky/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":" * Represents an abstract task in the Quacky application. This class provides","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":" * the common structure for tasks, including their description and completion status.","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":" protected final String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" * Constructs a new Task with the specified description. By default, the task is not completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" * @param description The textual description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":" * Returns the status icon of the task. An \"X\" represents a completed task,","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"R-Laksh"},"content":" * while a space (\" \") indicates an incomplete task.","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"R-Laksh"},"content":" * @return A string representing the completion status of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"R-Laksh"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"R-Laksh"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"R-Laksh"},"content":" * This method returns a value of the status for a given task","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"R-Laksh"},"content":" * @return 0 if the task is done and 1 otherwise","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"R-Laksh"},"content":" public int getStatusValue() {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"R-Laksh"},"content":" return (isDone ? 0 : 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"R-Laksh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"R-Laksh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"R-Laksh"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), description);","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"R-Laksh"},"content":" * Marks the task as completed by setting its completion status to {@code true}.","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"R-Laksh"},"content":" public void markDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"R-Laksh"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"R-Laksh"},"content":" public void unmarkDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"R-Laksh"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"R-Laksh"},"content":" * This method is used to return a string that is easy to parse to recover the tasks data","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"R-Laksh"},"content":" * @return the parsible string representation of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"R-Laksh"},"content":" protected String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"R-Laksh"},"content":" return getStatusValue() + \" | \" + this.description;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"R-Laksh"},"content":" ;","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"R-Laksh":67}},{"path":"src/main/java/quacky/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":" * Represents a to-do task in the Quacky application. A to-do task is a basic task","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":" * without a specific deadline or time frame.","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" * Constructs a new Todo task with the specified description.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" * @param description The textual description of the to-do task.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"R-Laksh"},"content":" protected String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"R-Laksh"},"content":" return \"T | \" + super.toFileString();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"R-Laksh":26}},{"path":"src/main/java/quacky/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":" * Handles user interactions for the Quacky application. This class is responsible for","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":" * input/output operations, including reading commands from the user and displaying messages.","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":"public class UI {","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" public boolean isRunning;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":" private final Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" public UI() {","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":" this.isRunning \u003d true;","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":" public String readCommand() {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":" * Formats the given text with a standardized header and footer for display.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"R-Laksh"},"content":" * @param text The text to be formatted and displayed.","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"R-Laksh"},"content":" * @return The formatted text string.","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"R-Laksh"},"content":" private String format(String text) {","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"R-Laksh"},"content":" String[] lines \u003d text.split(\"\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"R-Laksh"},"content":" StringBuilder sb \u003d new StringBuilder(\"\\t____________________________________________________________\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"R-Laksh"},"content":" for (String line : lines) {","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"R-Laksh"},"content":" sb.append(\"\\t\").append(line).append(\"\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"R-Laksh"},"content":" sb.append(\"\\t____________________________________________________________\");","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"R-Laksh"},"content":" return sb.toString();","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"R-Laksh"},"content":" public void say(String response) {","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"R-Laksh"},"content":" System.out.println(format(response));","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"R-Laksh"},"content":" public void showGreeting() {","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"R-Laksh"},"content":" this.say(\"Quack! how u doing, Im Quacky How can I help you?\");","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"R-Laksh"},"content":" public void showFarewell() {","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"R-Laksh"},"content":" this.isRunning \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"R-Laksh"},"content":" this.say(\"Quack Quack\");","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"R-Laksh"},"content":" public void showList(TaskList tasks) {","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"R-Laksh"},"content":" this.say(tasks.toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"R-Laksh"},"content":" public void showMarkDone(String task) {","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"R-Laksh"},"content":" this.say(\"Quack! I marked this task as done \\n\\t\" + task);","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"R-Laksh"},"content":" public void showUnmarkDone(String task) {","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"R-Laksh"},"content":" this.say(\"Quack! I marked this task as not done \\n\\t\" + task);","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"R-Laksh"},"content":" public void showDeleteTask(int taskNumber, String task) {","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"R-Laksh"},"content":" String message \u003d \"Quack! I removed this task: \\n\\t\" + task","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"R-Laksh"},"content":" + \"\\nNow you have \" + taskNumber + \" tasks in the list.\";","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"R-Laksh"},"content":" this.say(message);","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"R-Laksh"},"content":" public void showAddTask(int taskNumber, String task) {","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"R-Laksh"},"content":" String message \u003d \"Got it. I\u0027ve added this task:\\n\\t\" + task +","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"R-Laksh"},"content":" \"\\nNow you have \" + taskNumber + \" tasks in the list.\";","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"R-Laksh"},"content":" this.say(message);","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"R-Laksh"},"content":" void showErrorMessage(Exception e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"R-Laksh"},"content":" this.say(e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"R-Laksh":80}},{"path":"src/test/java/quacky/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" public void toFileString_success() {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":" Deadline deadline \u003d new Deadline(\"Finish Assignments\", LocalDate.parse(\"2023-01-01\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" assertEquals(deadline.toFileString(), \"D | 1 | Finish Assignments | 2023-01-01\");","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" public void toString_success() {","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":" Deadline deadline \u003d new Deadline(\"Finish Assignments\", LocalDate.parse(\"2023-01-01\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":" assertEquals(deadline.toString(), \"[D][ ] Finish Assignments (by: Jan 1 2023)\");","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"R-Laksh":22}},{"path":"src/test/java/quacky/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":"public class TaskListTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":" public void markTask_outOfBounds_throwsException() throws Exception {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":" tasks.markCompleteTask(50);","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" fail(); // the test should not reach this line","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":" assertEquals(\"Quack. The task is not found\", e.getMessage());","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":" public void addTask_taskNotMutated_success() {","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"R-Laksh"},"content":" Task todo1 \u003d new Todo(\"Finish Assignments\");","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"R-Laksh"},"content":" tasks.addTask(todo1);","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"R-Laksh"},"content":" assertEquals(tasks.printTask(0), new Todo(\"Finish Assignments\").toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"R-Laksh":27}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"todo test todo","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"deadline buy books /by 20th August","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":"event event /from 25/1/2023 1450 /from 25/1/2023 1750","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":"deadline deadline /by 12/10/2016 1500","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":"mark 4","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"R-Laksh":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":"R-Laksh"},"content":"java -classpath ..\\bin quacky.quacky \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-02"},{"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":{"R-Laksh":1,"-":20}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"R-Laksh"},"content":" mainClass.set(\"Quacky.Quacky\")","lastModifiedDate":"2024-02-02"},{"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":"R-Laksh"},"content":" archiveBaseName \u003d \"quacky\"","lastModifiedDate":"2024-02-02"},{"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":{"R-Laksh":2,"-":40}},{"path":"data/data.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"T | 1 | hi","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"R-Laksh":1}},{"path":"src/main/java/Quacky/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":"public class Parser {","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":" public static void parseCommand(String command, TaskList tasks, UI ui) throws QuackyException {","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" String[] keywords \u003d command.split(\" \", 2);","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":" String commandWord \u003d keywords[0];","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" switch (commandWord.toLowerCase()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" case \"list\": {","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":" ui.showList(tasks);","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":" case \"find\": {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":" String keyword \u003d keywords[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" TaskList foundTasks \u003d tasks.findTasksByKeyword(keyword);","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":" if (foundTasks.taskNumber() \u003d\u003d 0) {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":" ui.say(\"No tasks found with the keyword: \" + keyword);","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":" ui.showList(foundTasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"R-Laksh"},"content":" case \"mark\": {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"R-Laksh"},"content":" int taskNumber \u003d Integer.parseInt(keywords[1]) - 1;","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"R-Laksh"},"content":" tasks.markCompleteTask(taskNumber);","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"R-Laksh"},"content":" ui.showMarkDone(tasks.printTask(taskNumber));","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"R-Laksh"},"content":" } catch (QuackyException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"R-Laksh"},"content":" ui.showErrorMessage(e);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"R-Laksh"},"content":" } finally {","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"R-Laksh"},"content":" case \"unmark\": {","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"R-Laksh"},"content":" int taskNumber \u003d Integer.parseInt(keywords[1]) - 1;","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"R-Laksh"},"content":" tasks.unmarkCompleteTask(taskNumber);","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"R-Laksh"},"content":" ui.showUnmarkDone(tasks.printTask(taskNumber));","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"R-Laksh"},"content":" case \"delete\": {","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"R-Laksh"},"content":" int taskNumber \u003d Integer.parseInt(keywords[1]) - 1;","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"R-Laksh"},"content":" tasks.deleteTask(taskNumber);","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"R-Laksh"},"content":" ui.showDeleteTask(tasks.taskNumber(), tasks.printTask(taskNumber));","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"R-Laksh"},"content":" case \"todo\": {","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"R-Laksh"},"content":" if (command.trim().equals(\"todo\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"R-Laksh"},"content":" throw new QuackyException(\"Quack? (Please provide a description for your task)\");","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"R-Laksh"},"content":" Task newTask \u003d new Todo(keywords[1]);","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"R-Laksh"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"R-Laksh"},"content":" ui.showAddTask(tasks.taskNumber(), newTask.toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"R-Laksh"},"content":" } catch (QuackyException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"R-Laksh"},"content":" ui.showErrorMessage(e);","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"R-Laksh"},"content":" case \"deadline\": {","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"R-Laksh"},"content":" if (command.trim().equals(\"deadline\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"R-Laksh"},"content":" throw new QuackyException(\"Quack? (Please provide a description for your task)\");","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"R-Laksh"},"content":" String[] parts \u003d command.substring(9).split(\" /by \");","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"R-Laksh"},"content":" Task newTask \u003d new Deadline(parts[0], LocalDate.parse(parts[1]));","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"R-Laksh"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"R-Laksh"},"content":" ui.showAddTask(tasks.taskNumber(), newTask.toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"R-Laksh"},"content":" } catch (QuackyException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"R-Laksh"},"content":" ui.showErrorMessage(e);","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"R-Laksh"},"content":" case \"event\": {","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"R-Laksh"},"content":" if (command.trim().equals(\"event\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"R-Laksh"},"content":" throw new QuackyException(\"Quack? (Please provide a description for your task)\");","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"R-Laksh"},"content":" String[] parts \u003d keywords[1].split(\" /from | /to \");","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"R-Laksh"},"content":" Task newTask \u003d new Event(parts[0], LocalDate.parse(parts[1]), LocalDate.parse(parts[2]));","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"R-Laksh"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"R-Laksh"},"content":" ui.showAddTask(tasks.taskNumber(), newTask.toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"R-Laksh"},"content":" } catch (QuackyException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"R-Laksh"},"content":" ui.showErrorMessage(e);","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"R-Laksh"},"content":" case \"bye\": {","lastModifiedDate":"2024-02-01"},{"lineNumber":99,"author":{"gitId":"R-Laksh"},"content":" ui.showFarewell();","lastModifiedDate":"2024-02-01"},{"lineNumber":100,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":101,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":102,"author":{"gitId":"R-Laksh"},"content":" default: {","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"R-Laksh"},"content":" throw new QuackyException(\"Quack? (In confusion)\");","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":107,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"R-Laksh":107}},{"path":"src/main/java/Quacky/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":"import java.util.List;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":"import java.io.File;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":"public class TaskList {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" public TaskList() {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" public void addTask(Task task){","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":" /*","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":" This method prints a given task at position i","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"R-Laksh"},"content":" public String printTask(int i){","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"R-Laksh"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"R-Laksh"},"content":" return task.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"R-Laksh"},"content":" public int taskNumber() {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"R-Laksh"},"content":" return tasks.size();","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"R-Laksh"},"content":" public void markCompleteTask(int i) throws QuackyException {","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"R-Laksh"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"R-Laksh"},"content":" task.markDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"R-Laksh"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"R-Laksh"},"content":" throw new QuackyException(\"Quack. The task is not found\");","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"R-Laksh"},"content":" public void unmarkCompleteTask (int i){","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"R-Laksh"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"R-Laksh"},"content":" task.unmarkDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"R-Laksh"},"content":" public void deleteTask(int i){","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"R-Laksh"},"content":" tasks.remove(i);","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"R-Laksh"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"R-Laksh"},"content":" public String toString() {","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"R-Laksh"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"R-Laksh"},"content":" for(int i \u003d 0; i \u003c tasks.size();i++){","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"R-Laksh"},"content":" sb.append(i + 1)","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"R-Laksh"},"content":" .append(\". \")","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"R-Laksh"},"content":" .append(tasks.get(i).toString())","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"R-Laksh"},"content":" .append(\"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"R-Laksh"},"content":" return sb.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"R-Laksh"},"content":" protected String printSimplified() {","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"R-Laksh"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"R-Laksh"},"content":" for(int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"R-Laksh"},"content":" sb.append(tasks.get(i).toFileString()).append(\"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"R-Laksh"},"content":" String simplifiedString \u003d sb.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"R-Laksh"},"content":" return simplifiedString;","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"R-Laksh"},"content":" protected void writeToFile(String filePath) throws IOException {","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"R-Laksh"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"R-Laksh"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"R-Laksh"},"content":" sb.append(tasks.get(i).toFileString()).append(\"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"R-Laksh"},"content":" String textToAdd \u003d sb.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"R-Laksh"},"content":" System.out.println(this.printSimplified());","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"R-Laksh"},"content":" FileWriter fw \u003d new FileWriter(filePath, false);","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"R-Laksh"},"content":" fw.write(textToAdd);","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"R-Laksh"},"content":" fw.close();","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"R-Laksh"},"content":" public void loadFromFile(String filePath) {","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"R-Laksh"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"R-Laksh"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"R-Laksh"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"R-Laksh"},"content":" file.createNewFile();","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"R-Laksh"},"content":" Scanner fileReader \u003d new Scanner(file);","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"R-Laksh"},"content":" while (fileReader.hasNext()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"R-Laksh"},"content":" String line \u003d fileReader.nextLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"R-Laksh"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"R-Laksh"},"content":" Task task \u003d null;","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"R-Laksh"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"R-Laksh"},"content":" case \"E\":","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"R-Laksh"},"content":" task \u003d new Event(parts[2], LocalDate.parse(parts[3]), LocalDate.parse(parts[4]));","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"R-Laksh"},"content":" case \"D\":","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"R-Laksh"},"content":" task \u003d new Deadline(parts[2], LocalDate.parse(parts[3]));","lastModifiedDate":"2024-02-07"},{"lineNumber":102,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"R-Laksh"},"content":" case \"T\":","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"R-Laksh"},"content":" task \u003d new Todo(parts[2]);","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":106,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":107,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":108,"author":{"gitId":"R-Laksh"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-02-07"},{"lineNumber":109,"author":{"gitId":"R-Laksh"},"content":" if (parts[1].equals(\"0\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":110,"author":{"gitId":"R-Laksh"},"content":" task.markDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":111,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":112,"author":{"gitId":"R-Laksh"},"content":" this.addTask(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":113,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":114,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":115,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":116,"author":{"gitId":"R-Laksh"},"content":" fileReader.close();","lastModifiedDate":"2024-02-07"},{"lineNumber":117,"author":{"gitId":"R-Laksh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":118,"author":{"gitId":"R-Laksh"},"content":" System.out.println(\"An error has occurred\");","lastModifiedDate":"2024-02-07"},{"lineNumber":119,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":120,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":121,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":122,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":123,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":124,"author":{"gitId":"R-Laksh"},"content":" * Finds and returns a TaskList of tasks that contain the given keyword in their description.","lastModifiedDate":"2024-02-07"},{"lineNumber":125,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":126,"author":{"gitId":"R-Laksh"},"content":" * @param keyword The keyword to search for in task descriptions.","lastModifiedDate":"2024-02-07"},{"lineNumber":127,"author":{"gitId":"R-Laksh"},"content":" * @return A TaskList containing the tasks that match the keyword.","lastModifiedDate":"2024-02-07"},{"lineNumber":128,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":129,"author":{"gitId":"R-Laksh"},"content":" public TaskList findTasksByKeyword(String keyword) {","lastModifiedDate":"2024-02-07"},{"lineNumber":130,"author":{"gitId":"R-Laksh"},"content":" TaskList matchingTasks \u003d new TaskList();","lastModifiedDate":"2024-02-07"},{"lineNumber":131,"author":{"gitId":"R-Laksh"},"content":" for (Task task : this.tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":132,"author":{"gitId":"R-Laksh"},"content":" if (task.toString().toLowerCase().contains(keyword.toLowerCase())) {","lastModifiedDate":"2024-02-07"},{"lineNumber":133,"author":{"gitId":"R-Laksh"},"content":" matchingTasks.addTask(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":134,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":135,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":136,"author":{"gitId":"R-Laksh"},"content":" return matchingTasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":137,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":138,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"R-Laksh":138}},{"path":"src/main/java/quacky/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":" * Represents a deadline task in the Quacky application. A deadline task is a task that needs","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":" * to be completed before a specific date.","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" protected LocalDate by;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" protected String stringBy;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":" * Constructs a new Deadline task with the specified description and deadline date.","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":" * @param description The text description of the deadline task.","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" * @param by The date the task needs to be completed by.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"R-Laksh"},"content":" this.stringBy \u003d by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"R-Laksh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"R-Laksh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"R-Laksh"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.stringBy + \")\";","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"R-Laksh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"R-Laksh"},"content":" protected String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"R-Laksh"},"content":" return \"D | \" + super.toFileString() + \" | \" + this.by;","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"R-Laksh":35}},{"path":"src/main/java/quacky/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":" * Represents an event task in the Quacky application. An event task is a task","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":" * that occurs over a period of time, from a start date to an end date.","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":"public class Event extends Task{","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" protected LocalDate from;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" protected String stringFrom;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":" protected LocalDate to;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" protected String stringTo;","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":" * Constructs a new Event task with the specified description, start date, and end date.","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":" * @param description The textual description of the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":" * @param from The start date of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":" * @param to The end date of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"R-Laksh"},"content":" public Event(String description, LocalDate from, LocalDate to) {","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"R-Laksh"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"R-Laksh"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"R-Laksh"},"content":" this.stringFrom \u003d from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"R-Laksh"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"R-Laksh"},"content":" this.stringTo \u003d to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"R-Laksh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"R-Laksh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"R-Laksh"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.stringFrom + \" to: \" + this.stringTo + \")\";","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"R-Laksh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"R-Laksh"},"content":" protected String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"R-Laksh"},"content":" return \"E | \" + super.toFileString() + \" | \" + this.from + \" | \" + this.to;","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"R-Laksh":40}},{"path":"src/main/java/quacky/IllegalValueException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":" * Signals that some given data does not fulfill some constraints.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":"public class IllegalValueException extends Exception {","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":" * @param message should contain relevant information on the failed constraint(s)","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":" public IllegalValueException(String message) {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" super(message);","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"R-Laksh":13}},{"path":"src/main/java/quacky/Quacky.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":" * The main class for the Quacky application.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":" * Initializes the application\u0027s user interface, storage system, and task list,","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":" * and orchestrates the main application flow.","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":"public class Quacky {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" private static TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" private Storage storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" private UI ui;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":" * Constructs a new Quacky application instance.","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":" * Attempts to load tasks from the specified file path upon instantiation.","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" * @param filePath The path to the file from which tasks should be loaded.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":" public Quacky(String filePath) {","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":" ui \u003d new UI();","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"R-Laksh"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"R-Laksh"},"content":" // Use the filePath parameter instead of hardcoding","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"R-Laksh"},"content":" tasks \u003d storage.load();","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"R-Laksh"},"content":" } catch (Storage.InvalidStorageFilePathException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"R-Laksh"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"R-Laksh"},"content":" } catch (Storage.StorageOperationException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"R-Laksh"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"R-Laksh"},"content":" * Starts the main application loop, processing user commands until termination.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"R-Laksh"},"content":" * Handles command parsing, execution, and any resulting exceptions.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"R-Laksh"},"content":" public void run() {","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"R-Laksh"},"content":" ui.showGreeting();","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"R-Laksh"},"content":" while (ui.isRunning) {","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"R-Laksh"},"content":" String command \u003d ui.readCommand();","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"R-Laksh"},"content":" Parser.parseCommand(command, tasks, ui);","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"R-Laksh"},"content":" } catch (QuackyException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"R-Laksh"},"content":" ui.showErrorMessage(e);","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"R-Laksh"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"R-Laksh"},"content":" } catch (Storage.StorageOperationException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"R-Laksh"},"content":" ui.showErrorMessage(e);","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"R-Laksh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"R-Laksh"},"content":" new Quacky(\"./data/data.txt\").run();","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"R-Laksh":57}},{"path":"src/main/java/quacky/QuackyException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"import java.lang.Exception;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":" * Represents exceptions specific to the Quacky application.","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":"public class QuackyException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" public QuackyException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"R-Laksh":12}},{"path":"src/main/java/quacky/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"import java.io.File;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" * Represents the file used to store task data","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":" * adapted from:https://github.com/se-edu/addressbook-level2/blob/master/src/seedu/addressbook/storage/StorageFile.java","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":"public class Storage {","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":" * Default file path used if the user doesn\u0027t provide the file name.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":" public static final String DEFAULT_STORAGE_FILEPATH \u003d \"./data.txt\";","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":" public final File file;","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"R-Laksh"},"content":" public final Path path;","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"R-Laksh"},"content":" * @throws InvalidStorageFilePathException if the default path is invalid","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"R-Laksh"},"content":" public Storage() throws InvalidStorageFilePathException {","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"R-Laksh"},"content":" this(DEFAULT_STORAGE_FILEPATH);","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"R-Laksh"},"content":" * @throws InvalidStorageFilePathException if the given file path is invalid","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"R-Laksh"},"content":" public Storage(String filePath) throws InvalidStorageFilePathException {","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"R-Laksh"},"content":" path \u003d Paths.get(filePath);","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"R-Laksh"},"content":" if (!isValidPath(path)) {","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"R-Laksh"},"content":" throw new InvalidStorageFilePathException(\"Quacky.Quacky.Storage file should end with \u0027.txt\u0027\");","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"R-Laksh"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"R-Laksh"},"content":" * Saves the {@code addressBook} data to the storage file.","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"R-Laksh"},"content":" * @throws StorageOperationException if there were errors converting and/or storing data to file.","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"R-Laksh"},"content":" public void save(TaskList tasks) throws StorageOperationException {","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"R-Laksh"},"content":" FileWriter fw \u003d new FileWriter(this.file, false);","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"R-Laksh"},"content":" String textToAdd \u003d tasks.printSimplified();","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"R-Laksh"},"content":" fw.write(textToAdd);","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"R-Laksh"},"content":" fw.close();","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"R-Laksh"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"R-Laksh"},"content":" throw new StorageOperationException(\"Error writing to file: \" + path);","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"R-Laksh"},"content":" * Loads the {@code Quacky.Quacky.TaskList} data from this storage file, and then returns it.","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"R-Laksh"},"content":" * Returns an empty {@code Quacky.Quacky.TaskList} if the file does not exist, or is not a regular file.","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"R-Laksh"},"content":" * @throws StorageOperationException if there were errors reading and/or converting data from file.","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"R-Laksh"},"content":" public TaskList load() throws StorageOperationException {","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"R-Laksh"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"R-Laksh"},"content":" if (!Files.exists(path) || !Files.isRegularFile(path)) {","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"R-Laksh"},"content":" return tasks;","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"R-Laksh"},"content":" Scanner fileReader \u003d new Scanner(file);","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"R-Laksh"},"content":" while (fileReader.hasNext()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"R-Laksh"},"content":" String line \u003d fileReader.nextLine();","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"R-Laksh"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"R-Laksh"},"content":" Task task \u003d null;","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"R-Laksh"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"R-Laksh"},"content":" case \"E\":","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"R-Laksh"},"content":" task \u003d new Event(parts[2], LocalDate.parse(parts[3]), LocalDate.parse(parts[4]));","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"R-Laksh"},"content":" case \"D\":","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"R-Laksh"},"content":" task \u003d new Deadline(parts[2], LocalDate.parse(parts[3]));","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"R-Laksh"},"content":" case \"T\":","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"R-Laksh"},"content":" task \u003d new Todo(parts[2]);","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"R-Laksh"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"R-Laksh"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"R-Laksh"},"content":" if (parts[1].equals(\"0\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"R-Laksh"},"content":" task.markDone();","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"R-Laksh"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"R-Laksh"},"content":" fileReader.close();","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"R-Laksh"},"content":" return tasks;","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"R-Laksh"},"content":" } catch (FileNotFoundException fnfe) {","lastModifiedDate":"2024-02-01"},{"lineNumber":99,"author":{"gitId":"R-Laksh"},"content":" return tasks;","lastModifiedDate":"2024-02-01"},{"lineNumber":100,"author":{"gitId":"R-Laksh"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-02-01"},{"lineNumber":101,"author":{"gitId":"R-Laksh"},"content":" throw new StorageOperationException(\"Error writing to file: \" + path);","lastModifiedDate":"2024-02-01"},{"lineNumber":102,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":107,"author":{"gitId":"R-Laksh"},"content":" * Returns true if the given path is acceptable as a storage file.","lastModifiedDate":"2024-02-01"},{"lineNumber":108,"author":{"gitId":"R-Laksh"},"content":" * The file path is considered acceptable if it ends with \u0027.txt\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":109,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":110,"author":{"gitId":"R-Laksh"},"content":" private static boolean isValidPath(Path filePath) {","lastModifiedDate":"2024-02-01"},{"lineNumber":111,"author":{"gitId":"R-Laksh"},"content":" return filePath.toString().endsWith(\".txt\");","lastModifiedDate":"2024-02-01"},{"lineNumber":112,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":113,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":114,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":115,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":116,"author":{"gitId":"R-Laksh"},"content":" * Signals that the given file path does not fulfill the storage filepath constraints.","lastModifiedDate":"2024-02-01"},{"lineNumber":117,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":118,"author":{"gitId":"R-Laksh"},"content":" public static class InvalidStorageFilePathException extends IllegalValueException {","lastModifiedDate":"2024-02-01"},{"lineNumber":119,"author":{"gitId":"R-Laksh"},"content":" public InvalidStorageFilePathException(String message) {","lastModifiedDate":"2024-02-01"},{"lineNumber":120,"author":{"gitId":"R-Laksh"},"content":" super(message);","lastModifiedDate":"2024-02-01"},{"lineNumber":121,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":122,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":123,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":124,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":125,"author":{"gitId":"R-Laksh"},"content":" * Signals that some error has occured while trying to convert and read/write data between the application","lastModifiedDate":"2024-02-01"},{"lineNumber":126,"author":{"gitId":"R-Laksh"},"content":" * and the storage file.","lastModifiedDate":"2024-02-01"},{"lineNumber":127,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":128,"author":{"gitId":"R-Laksh"},"content":" public static class StorageOperationException extends Exception {","lastModifiedDate":"2024-02-01"},{"lineNumber":129,"author":{"gitId":"R-Laksh"},"content":" public StorageOperationException(String message) {","lastModifiedDate":"2024-02-01"},{"lineNumber":130,"author":{"gitId":"R-Laksh"},"content":" super(message);","lastModifiedDate":"2024-02-01"},{"lineNumber":131,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":132,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":133,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"R-Laksh":133}},{"path":"src/main/java/quacky/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":" * Represents an abstract task in the Quacky application. This class provides","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":" * the common structure for tasks, including their description and completion status.","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":" protected final String description;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" * Constructs a new Task with the specified description. By default, the task is not completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" * @param description The textual description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":" * Returns the status icon of the task. An \"X\" represents a completed task,","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"R-Laksh"},"content":" * while a space (\" \") indicates an incomplete task.","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"R-Laksh"},"content":" * @return A string representing the completion status of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"R-Laksh"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"R-Laksh"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"R-Laksh"},"content":" * This method returns a value of the status for a given task","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"R-Laksh"},"content":" * @return 0 if the task is done and 1 otherwise","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"R-Laksh"},"content":" public int getStatusValue() {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"R-Laksh"},"content":" return (isDone ? 0 : 1);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"R-Laksh"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"R-Laksh"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"R-Laksh"},"content":" return String.format(\"[%s] %s\", this.getStatusIcon(), description);","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"R-Laksh"},"content":" * Marks the task as completed by setting its completion status to {@code true}.","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"R-Laksh"},"content":" public void markDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"R-Laksh"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"R-Laksh"},"content":" public void unmarkDone() {","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"R-Laksh"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"R-Laksh"},"content":" * This method is used to return a string that is easy to parse to recover the tasks data","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"R-Laksh"},"content":" * @return the parsible string representation of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"R-Laksh"},"content":" protected String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"R-Laksh"},"content":" return getStatusValue() + \" | \" + this.description;","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"R-Laksh"},"content":" ;","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"R-Laksh":67}},{"path":"src/main/java/quacky/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":" * Represents a to-do task in the Quacky application. A to-do task is a basic task","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":" * without a specific deadline or time frame.","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" * Constructs a new Todo task with the specified description.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" * @param description The textual description of the to-do task.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"R-Laksh"},"content":" protected String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"R-Laksh"},"content":" return \"T | \" + super.toFileString();","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"R-Laksh":26}},{"path":"src/main/java/quacky/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":" * Handles user interactions for the Quacky application. This class is responsible for","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":" * input/output operations, including reading commands from the user and displaying messages.","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":"public class UI {","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" public boolean isRunning;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":" private final Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" public UI() {","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":" this.isRunning \u003d true;","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":" public String readCommand() {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":" * Formats the given text with a standardized header and footer for display.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"R-Laksh"},"content":" * @param text The text to be formatted and displayed.","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"R-Laksh"},"content":" * @return The formatted text string.","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"R-Laksh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"R-Laksh"},"content":" private String format(String text) {","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"R-Laksh"},"content":" String[] lines \u003d text.split(\"\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"R-Laksh"},"content":" StringBuilder sb \u003d new StringBuilder(\"\\t____________________________________________________________\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"R-Laksh"},"content":" for (String line : lines) {","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"R-Laksh"},"content":" sb.append(\"\\t\").append(line).append(\"\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"R-Laksh"},"content":" sb.append(\"\\t____________________________________________________________\");","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"R-Laksh"},"content":" return sb.toString();","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"R-Laksh"},"content":" public void say(String response) {","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"R-Laksh"},"content":" System.out.println(format(response));","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"R-Laksh"},"content":" public void showGreeting() {","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"R-Laksh"},"content":" this.say(\"Quack! how u doing, Im Quacky How can I help you?\");","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"R-Laksh"},"content":" public void showFarewell() {","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"R-Laksh"},"content":" this.isRunning \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"R-Laksh"},"content":" this.say(\"Quack Quack\");","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"R-Laksh"},"content":" public void showList(TaskList tasks) {","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"R-Laksh"},"content":" this.say(tasks.toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"R-Laksh"},"content":" public void showMarkDone(String task) {","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"R-Laksh"},"content":" this.say(\"Quack! I marked this task as done \\n\\t\" + task);","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"R-Laksh"},"content":" public void showUnmarkDone(String task) {","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"R-Laksh"},"content":" this.say(\"Quack! I marked this task as not done \\n\\t\" + task);","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"R-Laksh"},"content":" public void showDeleteTask(int taskNumber, String task) {","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"R-Laksh"},"content":" String message \u003d \"Quack! I removed this task: \\n\\t\" + task","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"R-Laksh"},"content":" + \"\\nNow you have \" + taskNumber + \" tasks in the list.\";","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"R-Laksh"},"content":" this.say(message);","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"R-Laksh"},"content":" public void showAddTask(int taskNumber, String task) {","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"R-Laksh"},"content":" String message \u003d \"Got it. I\u0027ve added this task:\\n\\t\" + task +","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"R-Laksh"},"content":" \"\\nNow you have \" + taskNumber + \" tasks in the list.\";","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"R-Laksh"},"content":" this.say(message);","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"R-Laksh"},"content":" void showErrorMessage(Exception e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"R-Laksh"},"content":" this.say(e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"R-Laksh":80}},{"path":"src/test/java/quacky/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" public void toFileString_success() {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":" Deadline deadline \u003d new Deadline(\"Finish Assignments\", LocalDate.parse(\"2023-01-01\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" assertEquals(deadline.toFileString(), \"D | 1 | Finish Assignments | 2023-01-01\");","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" public void toString_success() {","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":" Deadline deadline \u003d new Deadline(\"Finish Assignments\", LocalDate.parse(\"2023-01-01\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":" assertEquals(deadline.toString(), \"[D][ ] Finish Assignments (by: Jan 1 2023)\");","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"R-Laksh":22}},{"path":"src/test/java/quacky/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"package quacky;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":"public class TaskListTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":" public void markTask_outOfBounds_throwsException() throws Exception {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":" tasks.markCompleteTask(50);","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"R-Laksh"},"content":" fail(); // the test should not reach this line","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"R-Laksh"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"R-Laksh"},"content":" assertEquals(\"Quack. The task is not found\", e.getMessage());","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"R-Laksh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"R-Laksh"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"R-Laksh"},"content":" public void addTask_taskNotMutated_success() {","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"R-Laksh"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"R-Laksh"},"content":" Task todo1 \u003d new Todo(\"Finish Assignments\");","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"R-Laksh"},"content":" tasks.addTask(todo1);","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"R-Laksh"},"content":" assertEquals(tasks.printTask(0), new Todo(\"Finish Assignments\").toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"R-Laksh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"R-Laksh"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"R-Laksh":27}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"R-Laksh"},"content":"todo test todo","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"R-Laksh"},"content":"deadline buy books /by 20th August","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"R-Laksh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"R-Laksh"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"R-Laksh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"R-Laksh"},"content":"event event /from 25/1/2023 1450 /from 25/1/2023 1750","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"R-Laksh"},"content":"deadline deadline /by 12/10/2016 1500","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"R-Laksh"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"R-Laksh"},"content":"mark 4","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"R-Laksh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"R-Laksh"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"R-Laksh"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"R-Laksh"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"R-Laksh":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":"R-Laksh"},"content":"java -classpath ..\\bin quacky.quacky \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-02"},{"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":{"R-Laksh":1,"-":20}}] diff --git a/R-Laksh_ip_master/commits.json b/R-Laksh_ip_master/commits.json index b462a411..6fd3aa70 100644 --- a/R-Laksh_ip_master/commits.json +++ b/R-Laksh_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"R-Laksh":[{"date":"2024-01-24","commitResults":[{"hash":"0c15365d9bc4bfa90b8bdf0eeb02dfd11aa6c860","isMergeCommit":false,"messageTitle":" implemented level 1","messageBody":"","tags":["level-0","Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":6}}},{"hash":"5d16dc9c5f7dbe59abed35919218636ce60e0db1","isMergeCommit":false,"messageTitle":"Add,List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":1}}},{"hash":"1fd5ba06d7b30bd0e6a7d305863712774b137018","isMergeCommit":false,"messageTitle":"fixed formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":4}}},{"hash":"6915000d21308a24e88cf74a2c3ff600cbaf3eb7","isMergeCommit":false,"messageTitle":"added TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":45}}}]},{"date":"2024-01-25","commitResults":[{"hash":"a5ad689d81f45a43e07cb19dac7afad84abef6a4","isMergeCommit":false,"messageTitle":"implemented v3.0","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":1}}},{"hash":"bcfa900126c9cf16a28a13c1b13de77593de45bb","isMergeCommit":false,"messageTitle":"added Deadline, Event, and Todo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}},{"hash":"8e29fc46ab16286c37dca5400207cb21f25b879e","isMergeCommit":false,"messageTitle":"implemented v4.0","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":5}}},{"hash":"753207b7553381c35e8dbd60e6e46c361760332e","isMergeCommit":false,"messageTitle":"implemented A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"12fe0f19363ef7f6d633b4d2892f5172d4258f6b","isMergeCommit":false,"messageTitle":"implemented v5.0","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":37}}},{"hash":"2ff5272cce0d13621f89a6a3a14ca2acb3a8c64b","isMergeCommit":false,"messageTitle":"implemented v5.0","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}}]},{"date":"2024-01-30","commitResults":[{"hash":"d394aa481af52ba3f270f795de1bdefcd942907d","isMergeCommit":false,"messageTitle":"Add ability to save tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":69,"deletions":10}}},{"hash":"a55a2937f4d2c4d1ba9d317034ae8b78e9893ce2","isMergeCommit":false,"messageTitle":"Add a read feature for Todos","messageBody":"The commit adds the ability to recover saved todo lists from past runs\nto ensure that users can keep track of tasks\n\nAchieved by adding a method to TaskList class to read the saved txt file\nand parse it to recover todos\n","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":44,"deletions":0}}}]},{"date":"2024-01-31","commitResults":[{"hash":"27002ff1386b9252bc01b76b1332a38ee77b04dc","isMergeCommit":false,"messageTitle":"Add LocalDate for tasks","messageBody":"Local date enables a more accurate representation of time for tasks and\nminimises unexpected behaviour compared to using a string. The Deadline\nand Event classes now take a LocalTime object in their constructor\n","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":2},"java":{"insertions":40,"deletions":28}}}]},{"date":"2024-02-01","commitResults":[{"hash":"aa17f652f2b76a8ab5ae52a3397a35aa7fe235d1","isMergeCommit":false,"messageTitle":"Add Implementation for UI and Parser classes","messageBody":"Current implementation of Quacky does not abide by the single responsibility principle. Hence the parsing logic is abstracted to the Parser class and the printed messages are abstracted to the UI class\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":331,"deletions":73}}},{"hash":"8d5154b148798ab5a94110baf0017ce3c80be9ff","isMergeCommit":false,"messageTitle":"Implement Storage class Currently Tasklist also has the behaviour of saving and loading. Storage class is implemented to handle file reading and writing for previous runs","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"7e666737561986d4e57ed181f999c25a641a8d44","isMergeCommit":false,"messageTitle":"Organise into Package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":10},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-02","commitResults":[{"hash":"d09057884bed3071b35940231a0f18f94cee3177","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"73fa5666f112390ffb19b13ee310b3d9137532c8","isMergeCommit":false,"messageTitle":"Add JUnit Tests","messageBody":"","tags":["v0.1","A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":2},"java":{"insertions":70,"deletions":11}}},{"hash":"49741967dd2321a4c35f6305f1131ba7f192fcbb","isMergeCommit":false,"messageTitle":"Add javadocs for Quacky and Task class","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"java":{"insertions":34,"deletions":1}}},{"hash":"c1471953ea45937f68f3241c13447af87ed052d5","isMergeCommit":false,"messageTitle":"Add javadocs for all methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":61}}},{"hash":"87f268c6fb62a076c480f2a6ae7cba65ce2dc60d","isMergeCommit":false,"messageTitle":"Follow Coding Standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":176,"deletions":151},"bat":{"insertions":1,"deletions":1}}},{"hash":"51fa7442d94995113901d5ecb55bb64e8e751cb9","isMergeCommit":false,"messageTitle":"Add find feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":1}}},{"hash":"983395940078a52cdb16fcbdc1b8d7ae5199f38d","isMergeCommit":true,"messageTitle":"fixed merge conflicts","messageBody":"","tags":["branch-A-CodingStandard","A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"53dc438c347803a292e340fdbe13051030823234","isMergeCommit":true,"messageTitle":"merge find into main","messageBody":"","tags":["c147195","Level-9","A-JavaDoc"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"R-Laksh":{"java":619,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":2,"txt":14}},"authorContributionVariance":{"R-Laksh":36504.64},"authorDisplayNameMap":{"R-Laksh":"CS2103T-F13-4 RAMU..ANAN"}} +{"authorDailyContributionsMap":{"R-Laksh":[{"date":"2024-01-24","commitResults":[{"hash":"0c15365d9bc4bfa90b8bdf0eeb02dfd11aa6c860","isMergeCommit":false,"messageTitle":" implemented level 1","messageBody":"","tags":["level-0","Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":6}}},{"hash":"5d16dc9c5f7dbe59abed35919218636ce60e0db1","isMergeCommit":false,"messageTitle":"Add,List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":1}}},{"hash":"1fd5ba06d7b30bd0e6a7d305863712774b137018","isMergeCommit":false,"messageTitle":"fixed formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":4}}},{"hash":"6915000d21308a24e88cf74a2c3ff600cbaf3eb7","isMergeCommit":false,"messageTitle":"added TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":84,"deletions":45}}}]},{"date":"2024-01-25","commitResults":[{"hash":"a5ad689d81f45a43e07cb19dac7afad84abef6a4","isMergeCommit":false,"messageTitle":"implemented v3.0","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":1}}},{"hash":"bcfa900126c9cf16a28a13c1b13de77593de45bb","isMergeCommit":false,"messageTitle":"added Deadline, Event, and Todo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":0}}},{"hash":"8e29fc46ab16286c37dca5400207cb21f25b879e","isMergeCommit":false,"messageTitle":"implemented v4.0","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":5}}},{"hash":"753207b7553381c35e8dbd60e6e46c361760332e","isMergeCommit":false,"messageTitle":"implemented A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"12fe0f19363ef7f6d633b4d2892f5172d4258f6b","isMergeCommit":false,"messageTitle":"implemented v5.0","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":37}}},{"hash":"2ff5272cce0d13621f89a6a3a14ca2acb3a8c64b","isMergeCommit":false,"messageTitle":"implemented v5.0","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}}]},{"date":"2024-01-30","commitResults":[{"hash":"d394aa481af52ba3f270f795de1bdefcd942907d","isMergeCommit":false,"messageTitle":"Add ability to save tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":69,"deletions":10}}},{"hash":"a55a2937f4d2c4d1ba9d317034ae8b78e9893ce2","isMergeCommit":false,"messageTitle":"Add a read feature for Todos","messageBody":"The commit adds the ability to recover saved todo lists from past runs\nto ensure that users can keep track of tasks\n\nAchieved by adding a method to TaskList class to read the saved txt file\nand parse it to recover todos\n","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":44,"deletions":0}}}]},{"date":"2024-01-31","commitResults":[{"hash":"27002ff1386b9252bc01b76b1332a38ee77b04dc","isMergeCommit":false,"messageTitle":"Add LocalDate for tasks","messageBody":"Local date enables a more accurate representation of time for tasks and\nminimises unexpected behaviour compared to using a string. The Deadline\nand Event classes now take a LocalTime object in their constructor\n","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":2},"java":{"insertions":40,"deletions":28}}}]},{"date":"2024-02-01","commitResults":[{"hash":"aa17f652f2b76a8ab5ae52a3397a35aa7fe235d1","isMergeCommit":false,"messageTitle":"Add Implementation for UI and Parser classes","messageBody":"Current implementation of Quacky does not abide by the single responsibility principle. Hence the parsing logic is abstracted to the Parser class and the printed messages are abstracted to the UI class\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":331,"deletions":73}}},{"hash":"8d5154b148798ab5a94110baf0017ce3c80be9ff","isMergeCommit":false,"messageTitle":"Implement Storage class Currently Tasklist also has the behaviour of saving and loading. Storage class is implemented to handle file reading and writing for previous runs","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":6}}},{"hash":"7e666737561986d4e57ed181f999c25a641a8d44","isMergeCommit":false,"messageTitle":"Organise into Package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":10},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-02","commitResults":[{"hash":"d09057884bed3071b35940231a0f18f94cee3177","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"73fa5666f112390ffb19b13ee310b3d9137532c8","isMergeCommit":false,"messageTitle":"Add JUnit Tests","messageBody":"","tags":["v0.1","A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":2},"java":{"insertions":70,"deletions":11}}},{"hash":"49741967dd2321a4c35f6305f1131ba7f192fcbb","isMergeCommit":false,"messageTitle":"Add javadocs for Quacky and Task class","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"java":{"insertions":34,"deletions":1}}},{"hash":"c1471953ea45937f68f3241c13447af87ed052d5","isMergeCommit":false,"messageTitle":"Add javadocs for all methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":61}}},{"hash":"87f268c6fb62a076c480f2a6ae7cba65ce2dc60d","isMergeCommit":false,"messageTitle":"Follow Coding Standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":176,"deletions":151},"bat":{"insertions":1,"deletions":1}}},{"hash":"51fa7442d94995113901d5ecb55bb64e8e751cb9","isMergeCommit":false,"messageTitle":"Add find feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":1}}},{"hash":"983395940078a52cdb16fcbdc1b8d7ae5199f38d","isMergeCommit":true,"messageTitle":"fixed merge conflicts","messageBody":"","tags":["branch-A-CodingStandard","A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"53dc438c347803a292e340fdbe13051030823234","isMergeCommit":true,"messageTitle":"merge find into main","messageBody":"","tags":["c147195","Level-9","A-JavaDoc"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-07","commitResults":[{"hash":"4ad8ec09a274c2888601ab5f37b4186c3b747d71","isMergeCommit":false,"messageTitle":"Fix deleted TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":138,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"R-Laksh":{"java":757,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":2,"txt":14}},"authorContributionVariance":{"R-Laksh":29559.428},"authorDisplayNameMap":{"R-Laksh":"CS2103T-F13-4 RAMU..ANAN"}} diff --git a/SeaHogs_ip_master/commits.json b/SeaHogs_ip_master/commits.json index 6f7cc0cb..779d55c6 100644 --- a/SeaHogs_ip_master/commits.json +++ b/SeaHogs_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"SeaHogs":[{"date":"2024-01-25","commitResults":[{"hash":"8700667fc5c62514414b165d1bd6c9915981a3fc","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"8b82ed5cfa88f14936451fc77ed4083a354a3d13","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":10}}},{"hash":"24dee21b039a05c50e80b2c3f62c5c92c2214fe0","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":18}}},{"hash":"62b0dd58b81994c29cdb74e23020be576ce367ba","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":6}}},{"hash":"24566d75eea6e05e1ed9715b964d9be2d4af4bd1","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"e59ed76d4f908547986d8afcb1b72e4ec531a2ca","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"8be36fe106126236c5d7e1a46f9966bb25825ee8","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":16}}},{"hash":"0fa42f85b1decc3ac7b57cf8ffc969fb0de749ed","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":16}}},{"hash":"f86d150369085e02af7f7a70ea8afde3805d2292","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":32}}},{"hash":"12b60bba1aa1bca92c24af75c4aa14f95676437d","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":25}}},{"hash":"55d32efe5b8e2120ca5f22b4e532652decfa74b7","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":5}}},{"hash":"6fc4bd19fcf37a50e81abc6ebe2aa21527f58a2f","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":21}}},{"hash":"57007f696a503f41a0ddf0ada6915ac5b9fefca4","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"cde9e6fa1aca4798ad8caf06b649786e140e1935","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}}]},{"date":"2024-01-28","commitResults":[{"hash":"f2b849ba7f85a4a40e2734eb9888d35ac50634bf","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":143,"deletions":68}}},{"hash":"64e45d144ad47bb8d1ade9c352b28fbdde9c113a","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}}]},{"date":"2024-02-03","commitResults":[{"hash":"3c6ac89683b728d802b6dc56339ddbf9a1271d9f","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":81,"deletions":6}}},{"hash":"44899bd4d9e9274a1a28c8b7d93a3e442a5c415b","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"31700c79119493d54d95e43b25a1eb96b4a060ef","isMergeCommit":false,"messageTitle":"Fix a bug with Deadline string manipulation.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":8,"deletions":8}}},{"hash":"082a7a839757d54a365341efa792aca98ff5c24d","isMergeCommit":false,"messageTitle":"Fixed a bug where delete and mark is not saved to the txt file. Fixed a bug where save in LocalList is not changing what is in the txt file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":45,"deletions":3}}},{"hash":"b87124ab49fb9c9ec7c18a080492138a09beabc2","isMergeCommit":false,"messageTitle":"Fixed a bug where delete and mark is not saved to the txt file. Fixed a bug where save in LocalList is not changing what is in the txt file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":1,"deletions":3}}},{"hash":"91017a91458317cd0feb3d4dcbf11354a34c34dc","isMergeCommit":false,"messageTitle":"Different duke.txt","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3},"java":{"insertions":77,"deletions":61}}},{"hash":"0ca9164863067b4ba883b268e5acef1eee0f1146","isMergeCommit":false,"messageTitle":"Added LocalDate and LocalTime","messageBody":"String value date stored in Activity was swapped for LocalDate and LocalTime. This allows the date and time data to be compared and formatted through different way.\n","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"71e8b5a701b3f78e53d2b178175b74a07609ef45","isMergeCommit":false,"messageTitle":"New commit message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"571d817a2bea7fa8d12e6da61a9ef2afe076231e","isMergeCommit":false,"messageTitle":"Added LocalDate and LocalTime, changed structure of constructor, and fixed bug with save and load utility.","messageBody":"String value date stored in Activity was swapped for LocalDate and LocalTime. This allows the date and time data to be compared and formatted through different way. The constructor of Activity subclass have been changed from single string input to serial string each presenting from name to finish time for easier creation when loading from file. Fixed bug with save and load reading wrong number of data causing index out of bond exception.\n","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":6}}},{"hash":"61620b7438b76f8651bfd1dc51578f16d89fcf7b","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"2ba2e3fab6f71ce54f9ed3011be9fefee51a3933","isMergeCommit":false,"messageTitle":"Change in file content File content changed as the program runs due to save and load function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1}}},{"hash":"f7a80930e547320ec6de86af798e255b9e858c98","isMergeCommit":false,"messageTitle":"No changes Intellij somewhat identifies there a change and will not allow me to fork add-gradle-support until I commit this again.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":0}}},{"hash":"1226a479f1979a197cd00b7035ecd0bd707e8890","isMergeCommit":false,"messageTitle":"Minor coding standard fixes Fixed a few indentation error within the Duke.java file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":268,"deletions":360},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]},{"date":"2024-02-04","commitResults":[{"hash":"bd8f6d5df5e3d8228ff6b0984c304c99b33e0c50","isMergeCommit":false,"messageTitle":"Set up gradle Copied packages from master branch and modified mainClass.set() in build.gradle so my version of Duke.java can run on gradle.","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":397,"deletions":10}}},{"hash":"d3005f07ef9d92b36e7acf6fc674717063dd3eee","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"4f14a83f2957c4c7b11f546d854fc953e2cc5814","isMergeCommit":false,"messageTitle":"Added invalid time handling Added tests for time when the date is either null or unreasonable. When such condition happens, the constructor will throw Runtime exception. The input is regarded as true only when all date and time are not null and start date and time is before end date and time.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"ee6f2cb4b7f5d184614f7eb46c36d9c22878c7fe","isMergeCommit":false,"messageTitle":"Changed error message Edited the error message from saying an error occurred to more specific information about file missing, making debugging later easier.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"48628d327dd3372d552b5b1bd39e562cba4dd717","isMergeCommit":false,"messageTitle":"Created duke.txt This txt file is used for temporary storage of the data produced by EventTest.java. The file will be emptied each time the test finish running.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0}}},{"hash":"495b0219b3e4b33668bee1ab56c3a7c0f63a1641","isMergeCommit":false,"messageTitle":"Add unit tests for Event class methods in Duke project","messageBody":"- Implement `setUp` method with `@BeforeEach` annotation to initialize an Event instance before each test.\n- Add `testMarkAsDone` to verify marking an event as done updates its status correctly.\n- Add `testMarkAsUndone` to ensure marking an event as undone reverts its status appropriately.\n- Introduce `testExceptionMessage` to confirm throwing of RuntimeException with a specific message when an event\u0027s end date is set before its start date. This test ensures the Event constructor validates date inputs correctly.\n\nThese tests aim to increase the Event class\u0027s reliability and maintainability by validating its core functionalities and error handling mechanisms.\n","fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":0}}},{"hash":"3212fd037eacd428b83cc85e06e25050d5b89e59","isMergeCommit":false,"messageTitle":"Add unit tests for LocaList class methods in Duke project","messageBody":"- Implement `setUp` method with `@BeforeEach` annotation to initialize an LocalList instance before each test.\n- Add `testSaveActivities` to verify if saving and loading data into the text file duke.txt is done correctly.\n- Add `testInvalidFile` to ensure LocalList is handling instance where file path is invalid appropriately.\n- Implemented \u0027tearDown\u0027 method with \u0027AfterEach\u0027 annotation to reset the content of duke.txt file to empty.\n\nThese tests aim to increase the LocalList class\u0027s reliability and maintainability by validating its core functionalities and error handling mechanisms.\n","fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":0}}},{"hash":"5a400d936a76cc2775b4b388250045557b11848f","isMergeCommit":false,"messageTitle":"Created directory java under main/test directory -created to store JUnit test file -currently stores EventTest.java and LocalListTest.java under Duke.activityAndUtility","messageBody":"","tags":["v0.1","A-Jar"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0}}},{"hash":"b596d5a87e02fe79e5cf8d3dc7eee3fe44740b7c","isMergeCommit":false,"messageTitle":"Add comprehensive Javadoc documentation across classes","messageBody":"This commit introduces detailed Javadoc documentation for the Activity, Deadline, Event, Todo, ActivityList, Duke, LocalList, EventTest, and LocalListTest classes within the Duke application. Each class and its methods now have clear descriptions, including the purpose, parameters, and expected outcomes. This documentation enhances code readability, facilitates easier maintenance, and improves the onboarding process for new developers working on the project.\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":329,"deletions":91}}},{"hash":"548f5e714daca29e9b6069fed3fbbc87582a40c3","isMergeCommit":false,"messageTitle":"Modified indentation and comments","messageBody":"Modified indentation in DateTimeFormat, Deadline, Event and Duke java file to better fit coding standard. Removed some unused comment and added some comment for future comprehension.\n","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":9}}},{"hash":"05a5d8de25390405d4e788131b7a4cededef63b4","isMergeCommit":false,"messageTitle":"Add searchList class for substring search and activity printing","messageBody":" -Introduce the searchList class to the Duke.activityAndUtility package, providing utilities for searching through a list of strings for substrings and printing activities from a corresponding list based on the search results.\n -The class includes the findIndicesOfSubstring method for locating all indices of strings containing a specified substring and the printList method for displaying activities related to these search terms. -\n -This addition aims to enhance the application\u0027s ability to filter and display data based on user-defined criteria.\n -javaDoc included in searchList\n","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":0}}},{"hash":"b194d22f0812ae5151c6c8d46e3c641516075982","isMergeCommit":false,"messageTitle":"Implement findActivity method in activity management","messageBody":" -Add a new method, findActivity, to enhance search functionality within the application.\n -This method leverages the searchList class to search through a predefined list of activity names or descriptions for a given substring and print the matching activities. It simplifies the process of finding specific activities for users by abstracting the search and display logic into a single, accessible method.\n -condition in main also been modified to check for first word \"find\" as trigger for findActivity.\n","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"SeaHogs":{"java":840,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":4}},"authorContributionVariance":{"SeaHogs":124399.63},"authorDisplayNameMap":{"SeaHogs":"CS2103T-W08-2 LAI ..IWEN"}} +{"authorDailyContributionsMap":{"SeaHogs":[{"date":"2024-01-25","commitResults":[{"hash":"8700667fc5c62514414b165d1bd6c9915981a3fc","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":6}}},{"hash":"8b82ed5cfa88f14936451fc77ed4083a354a3d13","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":10}}},{"hash":"24dee21b039a05c50e80b2c3f62c5c92c2214fe0","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":18}}},{"hash":"62b0dd58b81994c29cdb74e23020be576ce367ba","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":6}}},{"hash":"24566d75eea6e05e1ed9715b964d9be2d4af4bd1","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"e59ed76d4f908547986d8afcb1b72e4ec531a2ca","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"8be36fe106126236c5d7e1a46f9966bb25825ee8","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":16}}},{"hash":"0fa42f85b1decc3ac7b57cf8ffc969fb0de749ed","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":16}}},{"hash":"f86d150369085e02af7f7a70ea8afde3805d2292","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":32}}},{"hash":"12b60bba1aa1bca92c24af75c4aa14f95676437d","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":25}}},{"hash":"55d32efe5b8e2120ca5f22b4e532652decfa74b7","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":5}}},{"hash":"6fc4bd19fcf37a50e81abc6ebe2aa21527f58a2f","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":21}}},{"hash":"57007f696a503f41a0ddf0ada6915ac5b9fefca4","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"cde9e6fa1aca4798ad8caf06b649786e140e1935","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}}]},{"date":"2024-01-28","commitResults":[{"hash":"f2b849ba7f85a4a40e2734eb9888d35ac50634bf","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":143,"deletions":68}}},{"hash":"64e45d144ad47bb8d1ade9c352b28fbdde9c113a","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":7}}}]},{"date":"2024-02-03","commitResults":[{"hash":"3c6ac89683b728d802b6dc56339ddbf9a1271d9f","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":81,"deletions":6}}},{"hash":"44899bd4d9e9274a1a28c8b7d93a3e442a5c415b","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"31700c79119493d54d95e43b25a1eb96b4a060ef","isMergeCommit":false,"messageTitle":"Fix a bug with Deadline string manipulation.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":8,"deletions":8}}},{"hash":"082a7a839757d54a365341efa792aca98ff5c24d","isMergeCommit":false,"messageTitle":"Fixed a bug where delete and mark is not saved to the txt file. Fixed a bug where save in LocalList is not changing what is in the txt file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":45,"deletions":3}}},{"hash":"b87124ab49fb9c9ec7c18a080492138a09beabc2","isMergeCommit":false,"messageTitle":"Fixed a bug where delete and mark is not saved to the txt file. Fixed a bug where save in LocalList is not changing what is in the txt file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":1,"deletions":3}}},{"hash":"91017a91458317cd0feb3d4dcbf11354a34c34dc","isMergeCommit":false,"messageTitle":"Different duke.txt","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":3},"java":{"insertions":77,"deletions":61}}},{"hash":"0ca9164863067b4ba883b268e5acef1eee0f1146","isMergeCommit":false,"messageTitle":"Added LocalDate and LocalTime","messageBody":"String value date stored in Activity was swapped for LocalDate and LocalTime. This allows the date and time data to be compared and formatted through different way.\n","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"71e8b5a701b3f78e53d2b178175b74a07609ef45","isMergeCommit":false,"messageTitle":"New commit message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":2}}},{"hash":"571d817a2bea7fa8d12e6da61a9ef2afe076231e","isMergeCommit":false,"messageTitle":"Added LocalDate and LocalTime, changed structure of constructor, and fixed bug with save and load utility.","messageBody":"String value date stored in Activity was swapped for LocalDate and LocalTime. This allows the date and time data to be compared and formatted through different way. The constructor of Activity subclass have been changed from single string input to serial string each presenting from name to finish time for easier creation when loading from file. Fixed bug with save and load reading wrong number of data causing index out of bond exception.\n","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":6}}},{"hash":"61620b7438b76f8651bfd1dc51578f16d89fcf7b","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"2ba2e3fab6f71ce54f9ed3011be9fefee51a3933","isMergeCommit":false,"messageTitle":"Change in file content File content changed as the program runs due to save and load function","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1}}},{"hash":"f7a80930e547320ec6de86af798e255b9e858c98","isMergeCommit":false,"messageTitle":"No changes Intellij somewhat identifies there a change and will not allow me to fork add-gradle-support until I commit this again.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":136,"deletions":0}}},{"hash":"1226a479f1979a197cd00b7035ecd0bd707e8890","isMergeCommit":false,"messageTitle":"Minor coding standard fixes Fixed a few indentation error within the Duke.java file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":268,"deletions":360},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]},{"date":"2024-02-04","commitResults":[{"hash":"bd8f6d5df5e3d8228ff6b0984c304c99b33e0c50","isMergeCommit":false,"messageTitle":"Set up gradle Copied packages from master branch and modified mainClass.set() in build.gradle so my version of Duke.java can run on gradle.","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":397,"deletions":10}}},{"hash":"d3005f07ef9d92b36e7acf6fc674717063dd3eee","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"4f14a83f2957c4c7b11f546d854fc953e2cc5814","isMergeCommit":false,"messageTitle":"Added invalid time handling Added tests for time when the date is either null or unreasonable. When such condition happens, the constructor will throw Runtime exception. The input is regarded as true only when all date and time are not null and start date and time is before end date and time.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"ee6f2cb4b7f5d184614f7eb46c36d9c22878c7fe","isMergeCommit":false,"messageTitle":"Changed error message Edited the error message from saying an error occurred to more specific information about file missing, making debugging later easier.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"48628d327dd3372d552b5b1bd39e562cba4dd717","isMergeCommit":false,"messageTitle":"Created duke.txt This txt file is used for temporary storage of the data produced by EventTest.java. The file will be emptied each time the test finish running.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0}}},{"hash":"495b0219b3e4b33668bee1ab56c3a7c0f63a1641","isMergeCommit":false,"messageTitle":"Add unit tests for Event class methods in Duke project","messageBody":"- Implement `setUp` method with `@BeforeEach` annotation to initialize an Event instance before each test.\n- Add `testMarkAsDone` to verify marking an event as done updates its status correctly.\n- Add `testMarkAsUndone` to ensure marking an event as undone reverts its status appropriately.\n- Introduce `testExceptionMessage` to confirm throwing of RuntimeException with a specific message when an event\u0027s end date is set before its start date. This test ensures the Event constructor validates date inputs correctly.\n\nThese tests aim to increase the Event class\u0027s reliability and maintainability by validating its core functionalities and error handling mechanisms.\n","fileTypesAndContributionMap":{"java":{"insertions":44,"deletions":0}}},{"hash":"3212fd037eacd428b83cc85e06e25050d5b89e59","isMergeCommit":false,"messageTitle":"Add unit tests for LocaList class methods in Duke project","messageBody":"- Implement `setUp` method with `@BeforeEach` annotation to initialize an LocalList instance before each test.\n- Add `testSaveActivities` to verify if saving and loading data into the text file duke.txt is done correctly.\n- Add `testInvalidFile` to ensure LocalList is handling instance where file path is invalid appropriately.\n- Implemented \u0027tearDown\u0027 method with \u0027AfterEach\u0027 annotation to reset the content of duke.txt file to empty.\n\nThese tests aim to increase the LocalList class\u0027s reliability and maintainability by validating its core functionalities and error handling mechanisms.\n","fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":0}}},{"hash":"5a400d936a76cc2775b4b388250045557b11848f","isMergeCommit":false,"messageTitle":"Created directory java under main/test directory -created to store JUnit test file -currently stores EventTest.java and LocalListTest.java under Duke.activityAndUtility","messageBody":"","tags":["v0.1","A-JavaDoc","A-Jar"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0}}},{"hash":"b596d5a87e02fe79e5cf8d3dc7eee3fe44740b7c","isMergeCommit":false,"messageTitle":"Add comprehensive Javadoc documentation across classes","messageBody":"This commit introduces detailed Javadoc documentation for the Activity, Deadline, Event, Todo, ActivityList, Duke, LocalList, EventTest, and LocalListTest classes within the Duke application. Each class and its methods now have clear descriptions, including the purpose, parameters, and expected outcomes. This documentation enhances code readability, facilitates easier maintenance, and improves the onboarding process for new developers working on the project.\n","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":329,"deletions":91}}},{"hash":"548f5e714daca29e9b6069fed3fbbc87582a40c3","isMergeCommit":false,"messageTitle":"Modified indentation and comments","messageBody":"Modified indentation in DateTimeFormat, Deadline, Event and Duke java file to better fit coding standard. Removed some unused comment and added some comment for future comprehension.\n","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":9}}},{"hash":"05a5d8de25390405d4e788131b7a4cededef63b4","isMergeCommit":false,"messageTitle":"Add searchList class for substring search and activity printing","messageBody":" -Introduce the searchList class to the Duke.activityAndUtility package, providing utilities for searching through a list of strings for substrings and printing activities from a corresponding list based on the search results.\n -The class includes the findIndicesOfSubstring method for locating all indices of strings containing a specified substring and the printList method for displaying activities related to these search terms. -\n -This addition aims to enhance the application\u0027s ability to filter and display data based on user-defined criteria.\n -javaDoc included in searchList\n","fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":0}}},{"hash":"b194d22f0812ae5151c6c8d46e3c641516075982","isMergeCommit":false,"messageTitle":"Implement findActivity method in activity management","messageBody":" -Add a new method, findActivity, to enhance search functionality within the application.\n -This method leverages the searchList class to search through a predefined list of activity names or descriptions for a given substring and print the matching activities. It simplifies the process of finding specific activities for users by abstracting the search and display logic into a single, accessible method.\n -condition in main also been modified to check for first word \"find\" as trigger for findActivity.\n","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"SeaHogs":{"java":840,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":1,"txt":4}},"authorContributionVariance":{"SeaHogs":124399.63},"authorDisplayNameMap":{"SeaHogs":"CS2103T-W08-2 LAI ..IWEN"}} diff --git a/Vision-2000_ip_master/authorship.json b/Vision-2000_ip_master/authorship.json index fe12599d..ae475dda 100644 --- a/Vision-2000_ip_master/authorship.json +++ b/Vision-2000_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Commands/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package Commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import Storage.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import UI.UserInterface;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"public class AddCommand implements Command{","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" private Task task;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" public AddCommand(Task task) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" this.task \u003d task;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" public boolean execute(TaskList list, UserInterface ui) {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" list.addTask(this.task);","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" ui.showAdd(this.task);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" ui.showListSize(list.getSize());","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" return false;","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":20}},{"path":"src/main/java/Commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package Commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import Exceptions.CommandException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import Storage.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import UI.UserInterface;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"public interface Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" boolean execute(TaskList list, UserInterface ui);","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":9}},{"path":"src/main/java/Commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package Commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import Storage.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import UI.UserInterface;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"public class DeleteCommand implements Command{","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" private int index;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" public boolean execute(TaskList list, UserInterface ui) {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" Task t \u003d list.getTask(this.index);","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" list.deleteTask(this.index);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" ui.showDelete(t);","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" ui.showListSize(list.getSize());","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" return false;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":21}},{"path":"src/main/java/Commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package Commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import Storage.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import UI.UserInterface;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"public class ExitCommand implements Command{","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":" public boolean execute(TaskList list, UserInterface ui) {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":12}},{"path":"src/main/java/Commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package Commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import Storage.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import UI.UserInterface;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"public class ListCommand implements Command{","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" public boolean execute(TaskList list, UserInterface ui) {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":" ui.showList(list.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" return false;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":12}},{"path":"src/main/java/Commands/MarkDoneCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package Commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import Storage.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import UI.UserInterface;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"public class MarkDoneCommand implements Command{","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":" private int index;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" public MarkDoneCommand(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" public boolean execute(TaskList list, UserInterface ui) {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" list.markTaskDone(this.index);","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" ui.showMarkDone(list.getTask(this.index));","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" return false;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":17}},{"path":"src/main/java/Commands/MarkNotDoneCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package Commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import Storage.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import UI.UserInterface;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"public class MarkNotDoneCommand implements Command{","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":" private int index;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" public MarkNotDoneCommand(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" public boolean execute(TaskList list, UserInterface ui) {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" list.markTaskNotDone(this.index);","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" ui.showMarkNotDone(list.getTask(this.index));","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" return false;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":17}},{"path":"src/main/java/Exceptions/ArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package Exceptions;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"public class ArgumentException extends DukeException{","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":" public ArgumentException(String message) {","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":" super(message);","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":7}},{"path":"src/main/java/Exceptions/CommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package Exceptions;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"public class CommandException extends DukeException{","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":" public CommandException(String message) {","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":" super(message);","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":7}},{"path":"src/main/java/Exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package Exceptions;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":" public DukeException (String message) {","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":" super(message);","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":7}},{"path":"src/main/java/Parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package Parser;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import Commands.*;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import Exceptions.ArgumentException;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import Exceptions.CommandException;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":"public class Parser {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" public static Command parseInput(String input) throws CommandException, ArgumentException {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" String[] inputArgs \u003d input.split(\" \", 2);","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" switch (inputArgs[0]) {","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" case \"todo\":","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" case \"event\":","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" return new AddCommand(Task.makeTask(inputArgs[0].trim(), inputArgs[1].trim()));","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" case \"delete\":","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" return new DeleteCommand(Integer.parseInt(inputArgs[1].trim()));","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" case \"bye\":","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" return new ExitCommand();","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" case \"list\":","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" case \"mark\":","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" return new MarkDoneCommand(Integer.parseInt(inputArgs[1].trim()));","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" return new MarkNotDoneCommand(Integer.parseInt(inputArgs[1].trim()));","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" default:","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" throw new CommandException(\"Please input a valid command\");","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":" public static Task parseLine(String line) throws ArgumentException {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" String[] taskData \u003d line.split(\" \", 3);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":" return Task.makeTask(taskData);","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":" public static String[] parseDeadlineArgument(String arg) throws ArgumentException {","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":" String[] result \u003d arg.split(\"\\\\/by\", 2);","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" if (result.length \u003c 2) {","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" throw new ArgumentException(\"Insufficient argument provided for deadline task\");","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" return result;","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"Vision-2000"},"content":" public static String[] parseEventArgument(String arg) throws ArgumentException {","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"Vision-2000"},"content":" String[] result \u003d arg.split(\"\\\\/from|\\\\/to\", 3);","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"Vision-2000"},"content":" if (result.length \u003c 3) {","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"Vision-2000"},"content":" throw new ArgumentException(\"Insufficient argument provided for event task\");","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"Vision-2000"},"content":" return result;","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":53}},{"path":"src/main/java/Stille.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"import Commands.Command;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import Parser.Parser;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import Storage.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import Storage.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"import UI.UserInterface;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"public class Stille {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":" private final UserInterface ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" private final Storage storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" private final TaskList list;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" public Stille() {","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" this.ui \u003d new UserInterface();","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" this.list \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" list.loadFromSaveFormat(storage.load());","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" ui.showError(e);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" public void run() {","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":" ui.showOpeningMessage();","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" while(!isExit) {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" String input \u003d ui.readCommand();","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":" Command c \u003d Parser.parseInput(input);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":" isExit \u003d c.execute(this.list, this.ui);","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":" ui.showError(e);","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":" this.exit();","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" public void exit() {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" this.storage.save(this.list.toSaveFormat());","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"Vision-2000"},"content":" ui.showError(e);","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"Vision-2000"},"content":" } finally {","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"Vision-2000"},"content":" ui.showClosingMessage();","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"Vision-2000"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"Vision-2000"},"content":" new Stille().run();","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Vision-2000":54}},{"path":"src/main/java/Storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import Exceptions.DukeException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"import java.util.List;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":"public class Storage {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" private static final String DEFAULT_PATH \u003d \"data.txt\";","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" private Path path;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" public Storage() {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" this.path \u003d Paths.get(DEFAULT_PATH);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" public List\u003cString\u003e load() throws DukeException {","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" if (!(Files.exists(path))) {","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" Files.createFile(path);","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" List\u003cString\u003e fileOutput \u003d Files.readAllLines(path);","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" return fileOutput;","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" throw new DukeException(\"Failed to load from disk\");","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":" public void save(List\u003cString\u003e tasks) throws DukeException {","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" Files.write(path, tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":" throw new DukeException(\"Failed to save to disk\");","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":39}},{"path":"src/main/java/Storage/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import Exceptions.ArgumentException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import Parser.Parser;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"import java.util.List;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"public class TaskList {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" private List\u003cTask\u003e list;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" public TaskList() {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" list \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" list.add(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" list.remove(index -1);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" public void markTaskDone(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" list.get(index - 1).markDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" public void markTaskNotDone(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" list.get(index - 1).markNotDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":" public int getSize() {","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":" return list.size();","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":" return list.get(index - 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" public List\u003cString\u003e toSaveFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" List\u003cString\u003e output\u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":" for (Task task : list) {","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" output.add(task.toSaveFormat());","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"Vision-2000"},"content":" return output;","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"Vision-2000"},"content":" public void loadFromSaveFormat(List\u003cString\u003e input) throws ArgumentException {","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"Vision-2000"},"content":" for (String line : input) {","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":" list.add(Parser.parseLine(line));","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"Vision-2000"},"content":" public String toString() {","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"Vision-2000"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"Vision-2000"},"content":" for (int i\u003d0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"Vision-2000"},"content":" Task t \u003d list.get(i);","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"Vision-2000"},"content":" output +\u003d (i + 1) + \".\" + t.toString() + \"\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"Vision-2000"},"content":" return output;","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":63}},{"path":"src/main/java/UI/UserInterface.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package UI;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"public class UserInterface {","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" private String openingMessage \u003d \"Hello! I\u0027m Stille\\n\" + \"What can I do for you?\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":" private String closingMessage \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" private String dividerLine \u003d \"___________________________________\";","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" private String errorMessage \u003d \"Error: \";","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" private Scanner sc;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" public UserInterface() {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" public void showMessage(String message) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" showDividerLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" System.out.println(message);","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" showDividerLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":" public void showOpeningMessage() {","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" this.showMessage(openingMessage);","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" public void showClosingMessage() {","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" this.showMessage(closingMessage);","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" public void showDividerLine() {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":" System.out.println(dividerLine);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":" public void showError(Exception e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":" this.showMessage(errorMessage + e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":" public void showList(String list) {","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" this.showMessage(\"Here are the tasks in your list:\\n\" + list);","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" public void showMarkDone(Task task) {","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":" this.showMessage(\"Nice! I\u0027ve marked this task as done:\\n \" + task);","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"Vision-2000"},"content":" public void showMarkNotDone(Task task) {","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"Vision-2000"},"content":" this.showMessage(\"OK, I\u0027ve marked this task as not done yet:\\n \" + task);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"Vision-2000"},"content":" public void showDelete(Task task) {","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"Vision-2000"},"content":" this.showMessage(\"Noted. I\u0027ve removed this task:\\n \" + task);","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"Vision-2000"},"content":" public void showAdd(Task task) {","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"Vision-2000"},"content":" this.showMessage(\"Got it. I\u0027ve added this task:\\n \" + task);","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"Vision-2000"},"content":" public void showListSize(int size) {","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"Vision-2000"},"content":" this.showMessage(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"Vision-2000"},"content":" public String readCommand() {","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"Vision-2000"},"content":" return sc.nextLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":66}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package tasks;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" protected LocalDate by;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" super(description);","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" this.by \u003d by;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" public Deadline(String description, LocalDate by, String status) {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" super(description, status);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" this.by \u003d by;","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" public String toSaveFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" return \"D \" + super.toSaveFormat() + \" /by \" + by;","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"Vision-2000":29}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package tasks;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"public class Event extends Task{","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":" protected LocalDate from;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" protected LocalDate to;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" public Event(String description, LocalDate from, LocalDate to) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" super(description);","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" this.from \u003d from;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" this.to \u003d to;","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" public Event(String description, LocalDate from, LocalDate to, String status) {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" super(description, status);","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" this.from \u003d from;","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" this.to \u003d to;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":" public String toSaveFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" return \"E \" + super.toSaveFormat() + \" /from \" + from + \" /to \" + to;","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":" + \" to: \" + to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"Vision-2000":32}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package tasks;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import Parser.Parser;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import Exceptions.ArgumentException;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"public abstract class Task {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" protected String description;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" protected boolean isDone;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" public static Task makeTask(String[] taskData) throws ArgumentException {","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" String taskType \u003d taskData[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" case \"T\":","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" return new ToDo(taskData[2], taskData[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" case \"D\":","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" String[] args \u003d Parser.parseDeadlineArgument(taskData[2]);","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" return new Deadline(args[0].trim(), LocalDate.parse(args[1].trim()), taskData[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" case \"E\":","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" args \u003d Parser.parseEventArgument(taskData[2]);","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":" return new Event(args[0].trim(), LocalDate.parse(args[1].trim()),","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" LocalDate.parse(args[2].trim()), taskData[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" default:","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":" throw new ArgumentException(\"Did not recognize task type \" + taskType);","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":" public static Task makeTask(String taskType, String taskArgument) throws ArgumentException {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":" case \"todo\":","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":" if (taskArgument.length() \u003d\u003d 0) {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" throw new ArgumentException(\"Insufficient argument provided for todo task\");","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":" return new ToDo(taskArgument);","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":" String[] args \u003d Parser.parseDeadlineArgument(taskArgument);","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":" return new Deadline(args[0].trim(), LocalDate.parse(args[1].trim()));","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" case \"event\":","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" args \u003d Parser.parseEventArgument(taskArgument);","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":" return new Event(args[0].trim(), LocalDate.parse(args[1].trim()),","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" LocalDate.parse(args[2].trim()));","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":" default:","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"Vision-2000"},"content":" throw new ArgumentException(\"Did not recognize task type \" + taskType);","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"Vision-2000"},"content":" public Task(String description) {","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"Vision-2000"},"content":" this.description \u003d description;","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"Vision-2000"},"content":" public Task(String description, String status) {","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"Vision-2000"},"content":" this.description \u003d description;","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"Vision-2000"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"Vision-2000"},"content":" if (status.equals(\"Y\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"Vision-2000"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"Vision-2000"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"Vision-2000"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"Vision-2000"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"Vision-2000"},"content":" return isDone;","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"Vision-2000"},"content":" public String getDescription() {","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"Vision-2000"},"content":" return this.description;","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"Vision-2000"},"content":" public void markDone() {","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"Vision-2000"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"Vision-2000"},"content":" public void markNotDone() {","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"Vision-2000"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"Vision-2000"},"content":" public String toSaveFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"Vision-2000"},"content":" if (this.isDone) {","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"Vision-2000"},"content":" return \"Y \" + this.description;","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"Vision-2000"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"Vision-2000"},"content":" return \"N \" + this.description;","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"Vision-2000"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"Vision-2000"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"Vision-2000":95}},{"path":"src/main/java/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package tasks;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"public class ToDo extends Task{","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":" super(description);","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":" public ToDo(String description, String status) {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" super(description, status);","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" public String toSaveFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" return \"T \" + super.toSaveFormat();","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"Vision-2000":23}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"list","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"bye","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Vision-2000":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":"Vision-2000"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java ..\\src\\main\\java\\tasks\\*.java","lastModifiedDate":"2024-02-02"},{"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":"Vision-2000"},"content":"java -classpath ..\\bin Stille \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-02"},{"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,"Vision-2000":2}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"# duke project template","lastModifiedDate":"2024-02-07"},{"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":"Vision-2000"},"content":"3. After that, locate the `src/main/java/duke.java` file, right-click it, and choose `Run duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2024-02-07"},{"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,"Vision-2000":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":"Vision-2000"},"content":" mainClass.set(\"duke.Stille\")","lastModifiedDate":"2024-02-07"},{"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":"Vision-2000"},"content":" archiveBaseName \u003d \"Stille\"","lastModifiedDate":"2024-02-07"},{"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,"Vision-2000":2}},{"path":"src/main/java/commands/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import storage.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import ui.UserInterface;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"public class AddCommand implements Command{","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" private Task task;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" public AddCommand(Task task) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" this.task \u003d task;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" public boolean execute(TaskList list, UserInterface ui) {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" list.addTask(this.task);","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" ui.showAdd(this.task);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" ui.showListSize(list.getSize());","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" return false;","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":20}},{"path":"src/main/java/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import storage.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import ui.UserInterface;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"public interface Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":" boolean execute(TaskList list, UserInterface ui);","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Vision-2000":8}},{"path":"src/main/java/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import storage.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import ui.UserInterface;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"public class DeleteCommand implements Command{","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" private int index;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" public boolean execute(TaskList list, UserInterface ui) {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" Task t \u003d list.getTask(this.index);","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" list.deleteTask(this.index);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" ui.showDelete(t);","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" ui.showListSize(list.getSize());","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" return false;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":21}},{"path":"src/main/java/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import storage.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import ui.UserInterface;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"public class ExitCommand implements Command{","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":" public boolean execute(TaskList list, UserInterface ui) {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":12}},{"path":"src/main/java/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import storage.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import ui.UserInterface;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"public class ListCommand implements Command{","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" public boolean execute(TaskList list, UserInterface ui) {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":" ui.showList(list.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" return false;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":12}},{"path":"src/main/java/commands/MarkDoneCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import storage.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import ui.UserInterface;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"public class MarkDoneCommand implements Command{","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":" private int index;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" public MarkDoneCommand(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" public boolean execute(TaskList list, UserInterface ui) {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" list.markTaskDone(this.index);","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" ui.showMarkDone(list.getTask(this.index));","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" return false;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":17}},{"path":"src/main/java/commands/MarkNotDoneCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import storage.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import ui.UserInterface;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"public class MarkNotDoneCommand implements Command{","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":" private int index;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" public MarkNotDoneCommand(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" public boolean execute(TaskList list, UserInterface ui) {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" list.markTaskNotDone(this.index);","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" ui.showMarkNotDone(list.getTask(this.index));","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" return false;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":17}},{"path":"src/main/java/duke/Stille.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package duke;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import commands.Command;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import parser.Parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"import storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"import storage.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"import ui.UserInterface;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":"public class Stille {","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" private final UserInterface ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" private final Storage storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" private final TaskList list;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" public Stille() {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" this.ui \u003d new UserInterface();","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" this.storage \u003d new Storage();","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" this.list \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" list.loadFromSaveFormat(storage.load());","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":" ui.showError(e);","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" public void run() {","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" ui.showOpeningMessage();","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" while(!isExit) {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":" String input \u003d ui.readCommand();","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" Command c \u003d Parser.parseInput(input);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":" isExit \u003d c.execute(this.list, this.ui);","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":" ui.showError(e);","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" this.exit();","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" public void exit() {","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"Vision-2000"},"content":" this.storage.save(this.list.toSaveFormat());","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"Vision-2000"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"Vision-2000"},"content":" ui.showError(e);","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"Vision-2000"},"content":" } finally {","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"Vision-2000"},"content":" ui.showClosingMessage();","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"Vision-2000"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"Vision-2000"},"content":" new Stille().run();","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Vision-2000":56}},{"path":"src/main/java/exceptions/ArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"public class ArgumentException extends DukeException{","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":" public ArgumentException(String message) {","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":" super(message);","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":7}},{"path":"src/main/java/exceptions/CommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"public class CommandException extends DukeException{","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":" public CommandException(String message) {","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":" super(message);","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":7}},{"path":"src/main/java/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":" public DukeException (String message) {","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":" super(message);","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":7}},{"path":"src/main/java/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import commands.*;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import exceptions.ArgumentException;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import exceptions.CommandException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"public class Parser {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":" public static Command parseInput(String input) throws CommandException, ArgumentException {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" String[] inputArgs \u003d input.split(\" \", 2);","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" switch (inputArgs[0]) {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" case \"todo\":","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" case \"event\":","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" return new AddCommand(Task.makeTask(inputArgs[0].trim(), inputArgs[1].trim()));","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" case \"delete\":","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" return new DeleteCommand(Integer.parseInt(inputArgs[1].trim()));","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" case \"bye\":","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" return new ExitCommand();","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" case \"list\":","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" case \"mark\":","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":" return new MarkDoneCommand(Integer.parseInt(inputArgs[1].trim()));","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" return new MarkNotDoneCommand(Integer.parseInt(inputArgs[1].trim()));","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":" default:","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" throw new CommandException(\"Please input a valid command\");","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" public static Task parseLine(String line) throws ArgumentException {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":" String[] taskData \u003d line.split(\" \", 3);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":" return Task.makeTask(taskData);","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":" public static String[] parseDeadlineArgument(String arg) throws ArgumentException {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":" String[] result \u003d arg.split(\"\\\\/by\", 2);","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":" if (result.length \u003c 2) {","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":" throw new ArgumentException(\"Insufficient argument provided for deadline task\");","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" return result;","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":" public static String[] parseEventArgument(String arg) throws ArgumentException {","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"Vision-2000"},"content":" String[] result \u003d arg.split(\"\\\\/from|\\\\/to\", 3);","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"Vision-2000"},"content":" if (result.length \u003c 3) {","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"Vision-2000"},"content":" throw new ArgumentException(\"Insufficient argument provided for event task\");","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"Vision-2000"},"content":" return result;","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":51}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import exceptions.DukeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"import java.util.List;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":"public class Storage {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" private static final String DEFAULT_PATH \u003d \"data.txt\";","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" private Path path;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" public Storage() {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" this.path \u003d Paths.get(DEFAULT_PATH);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" public List\u003cString\u003e load() throws DukeException {","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" if (!(Files.exists(path))) {","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" Files.createFile(path);","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" List\u003cString\u003e fileOutput \u003d Files.readAllLines(path);","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" return fileOutput;","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" throw new DukeException(\"Failed to load from disk\");","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":" public void save(List\u003cString\u003e tasks) throws DukeException {","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" Files.write(path, tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":" throw new DukeException(\"Failed to save to disk\");","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":39}},{"path":"src/main/java/storage/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import exceptions.ArgumentException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import parser.Parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"import java.util.List;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"public class TaskList {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" private List\u003cTask\u003e list;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" public TaskList() {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" list \u003d new ArrayList\u003c\u003e(100);","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" list.add(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" list.remove(index -1);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" public void markTaskDone(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" list.get(index - 1).markDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" public void markTaskNotDone(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" list.get(index - 1).markNotDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":" public int getSize() {","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":" return list.size();","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":" public Task getTask(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":" return list.get(index - 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" public List\u003cString\u003e toSaveFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" List\u003cString\u003e output\u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":" for (Task task : list) {","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" output.add(task.toSaveFormat());","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"Vision-2000"},"content":" return output;","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"Vision-2000"},"content":" public void loadFromSaveFormat(List\u003cString\u003e input) throws ArgumentException {","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"Vision-2000"},"content":" for (String line : input) {","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":" list.add(Parser.parseLine(line));","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"Vision-2000"},"content":" public String toString() {","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"Vision-2000"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"Vision-2000"},"content":" for (int i\u003d0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"Vision-2000"},"content":" Task t \u003d list.get(i);","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"Vision-2000"},"content":" output +\u003d (i + 1) + \".\" + t.toString() + \"\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"Vision-2000"},"content":" return output;","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":63}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package tasks;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" protected LocalDate by;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" super(description);","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" this.by \u003d by;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" public Deadline(String description, LocalDate by, String status) {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" super(description, status);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" this.by \u003d by;","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" public String toSaveFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" return \"D \" + super.toSaveFormat() + \" /by \" + by;","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")) + \")\";","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"Vision-2000":29}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package tasks;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"public class Event extends Task{","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":" protected LocalDate from;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" protected LocalDate to;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" public Event(String description, LocalDate from, LocalDate to) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" super(description);","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" this.from \u003d from;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" this.to \u003d to;","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" public Event(String description, LocalDate from, LocalDate to, String status) {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" super(description, status);","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" this.from \u003d from;","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" this.to \u003d to;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":" public String toSaveFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" return \"E \" + super.toSaveFormat() + \" /from \" + from + \" /to \" + to;","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":" + \" to: \" + to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"Vision-2000":32}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package tasks;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import parser.Parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import exceptions.ArgumentException;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"public abstract class Task {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":" protected String description;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" protected boolean isDone;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" public static Task makeTask(String[] taskData) throws ArgumentException {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" String taskType \u003d taskData[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" case \"T\":","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" return new ToDo(taskData[2], taskData[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" case \"D\":","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" String[] args \u003d Parser.parseDeadlineArgument(taskData[2]);","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" return new Deadline(args[0].trim(), LocalDate.parse(args[1].trim()), taskData[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" case \"E\":","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" args \u003d Parser.parseEventArgument(taskData[2]);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" return new Event(args[0].trim(), LocalDate.parse(args[1].trim()),","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":" LocalDate.parse(args[2].trim()), taskData[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" default:","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" throw new ArgumentException(\"Did not recognize task type \" + taskType);","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" public static Task makeTask(String taskType, String taskArgument) throws ArgumentException {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" case \"todo\":","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":" if (taskArgument.length() \u003d\u003d 0) {","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":" throw new ArgumentException(\"Insufficient argument provided for todo task\");","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":" return new ToDo(taskArgument);","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":" String[] args \u003d Parser.parseDeadlineArgument(taskArgument);","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":" return new Deadline(args[0].trim(), LocalDate.parse(args[1].trim()));","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":" case \"event\":","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" args \u003d Parser.parseEventArgument(taskArgument);","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" return new Event(args[0].trim(), LocalDate.parse(args[1].trim()),","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":" LocalDate.parse(args[2].trim()));","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" default:","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":" throw new ArgumentException(\"Did not recognize task type \" + taskType);","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"Vision-2000"},"content":" public Task(String description) {","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"Vision-2000"},"content":" this.description \u003d description;","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"Vision-2000"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"Vision-2000"},"content":" public Task(String description, String status) {","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"Vision-2000"},"content":" this.description \u003d description;","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"Vision-2000"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"Vision-2000"},"content":" if (status.equals(\"Y\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"Vision-2000"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"Vision-2000"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"Vision-2000"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"Vision-2000"},"content":" public boolean getStatus() {","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"Vision-2000"},"content":" return isDone;","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"Vision-2000"},"content":" public String getDescription() {","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"Vision-2000"},"content":" return this.description;","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"Vision-2000"},"content":" public void markDone() {","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"Vision-2000"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"Vision-2000"},"content":" public void markNotDone() {","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"Vision-2000"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"Vision-2000"},"content":" public String toSaveFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"Vision-2000"},"content":" if (this.isDone) {","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"Vision-2000"},"content":" return \"Y \" + this.description;","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"Vision-2000"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"Vision-2000"},"content":" return \"N \" + this.description;","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"Vision-2000"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"Vision-2000"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"Vision-2000":94}},{"path":"src/main/java/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package tasks;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"public class ToDo extends Task{","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":" super(description);","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":" public ToDo(String description, String status) {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" super(description, status);","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" public String toSaveFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" return \"T \" + super.toSaveFormat();","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"Vision-2000":23}},{"path":"src/main/java/ui/UserInterface.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"public class UserInterface {","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":" private String openingMessage \u003d \"Hello! I\u0027m Stille\\n\" + \"What can I do for you?\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":" private String closingMessage \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":" private String dividerLine \u003d \"___________________________________\";","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" private String errorMessage \u003d \"Error: \";","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" private Scanner sc;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" public UserInterface() {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" public void showMessage(String message) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" showDividerLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" System.out.println(message);","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" showDividerLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":" public void showOpeningMessage() {","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" this.showMessage(openingMessage);","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"Vision-2000"},"content":" public void showClosingMessage() {","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"Vision-2000"},"content":" this.showMessage(closingMessage);","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"Vision-2000"},"content":" public void showDividerLine() {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"Vision-2000"},"content":" System.out.println(dividerLine);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"Vision-2000"},"content":" public void showError(Exception e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"Vision-2000"},"content":" this.showMessage(errorMessage + e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"Vision-2000"},"content":" public void showList(String list) {","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"Vision-2000"},"content":" this.showMessage(\"Here are the tasks in your list:\\n\" + list);","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"Vision-2000"},"content":" public void showMarkDone(Task task) {","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"Vision-2000"},"content":" this.showMessage(\"Nice! I\u0027ve marked this task as done:\\n \" + task);","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"Vision-2000"},"content":" public void showMarkNotDone(Task task) {","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"Vision-2000"},"content":" this.showMessage(\"OK, I\u0027ve marked this task as not done yet:\\n \" + task);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"Vision-2000"},"content":" public void showDelete(Task task) {","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"Vision-2000"},"content":" this.showMessage(\"Noted. I\u0027ve removed this task:\\n \" + task);","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"Vision-2000"},"content":" public void showAdd(Task task) {","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"Vision-2000"},"content":" this.showMessage(\"Got it. I\u0027ve added this task:\\n \" + task);","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"Vision-2000"},"content":" public void showListSize(int size) {","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"Vision-2000"},"content":" this.showMessage(\"Now you have \" + size + \" tasks in the list.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"Vision-2000"},"content":" public String readCommand() {","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"Vision-2000"},"content":" return sc.nextLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"Vision-2000":66}},{"path":"src/test/java/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":"public class ParserTest {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" public void parseEventArgTest() {","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" assertDoesNotThrow(() -\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":" String[] testArray \u003d Parser.parseEventArgument(\"Description /from 2019-12-02 /to 2019-12-03\");","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" assertEquals(testArray[0], \"Description \");","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" assertEquals(testArray[1], \" 2019-12-02 \");","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":" assertEquals(testArray[2], \" 2019-12-03\");","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" });","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Vision-2000":21}},{"path":"src/test/java/tasks/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"package tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Vision-2000"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Vision-2000"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Vision-2000"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Vision-2000"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Vision-2000"},"content":"public class EventTest {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Vision-2000"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Vision-2000"},"content":" public void eventFormatTest() {","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Vision-2000"},"content":" Event e \u003d new Event(\"Description\", LocalDate.parse(\"2019-12-02\"),","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Vision-2000"},"content":" LocalDate.parse(\"2019-12-02\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Vision-2000"},"content":" assertEquals(\"[E][ ] Description (from: Dec 2 2019 to: Dec 2 2019)\", e.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Vision-2000"},"content":" assertEquals(\"E N Description /from 2019-12-02 /to 2019-12-02\", e.toSaveFormat());","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Vision-2000"},"content":" e.isDone \u003d true;","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Vision-2000"},"content":" assertEquals(\"[E][X] Description (from: Dec 2 2019 to: Dec 2 2019)\", e.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Vision-2000"},"content":" assertEquals(\"E Y Description /from 2019-12-02 /to 2019-12-02\", e.toSaveFormat());","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Vision-2000"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Vision-2000"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Vision-2000"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Vision-2000":25}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Vision-2000"},"content":"list","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"Vision-2000"},"content":"bye","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"Vision-2000":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":"Vision-2000"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java ..\\src\\main\\java\\tasks\\*.java","lastModifiedDate":"2024-02-02"},{"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":"Vision-2000"},"content":"java -classpath ..\\bin Stille \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-02"},{"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,"Vision-2000":2}}] diff --git a/Vision-2000_ip_master/commits.json b/Vision-2000_ip_master/commits.json index 007b3fdf..15f1a228 100644 --- a/Vision-2000_ip_master/commits.json +++ b/Vision-2000_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Vision-2000":[{"date":"2024-01-29","commitResults":[{"hash":"1025469ed3bf2e660415d4109650882213dfc2c0","isMergeCommit":false,"messageTitle":"Rename Duke.java to Stille.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10}}},{"hash":"5b94b1f62ac219ab01c91e16f8b05b35cc15612d","isMergeCommit":false,"messageTitle":"Stille.java: Add functionality to echo commands","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"5eaf7171f353c41e9c9b1b18cb698d59f3ed9e08","isMergeCommit":false,"messageTitle":"Stille.java: Change echo to list functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}}]},{"date":"2024-02-01","commitResults":[{"hash":"11362a604c9943659a9d04c24c2bc26f8c6c2f0d","isMergeCommit":false,"messageTitle":"Add functionality to mark/unmark tasks as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":19}}},{"hash":"f8a2aad2b6c2158d3be8e7415fbc43f054c4243d","isMergeCommit":false,"messageTitle":"Add support for Todo, Deadline, Event tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":12}}}]},{"date":"2024-02-02","commitResults":[{"hash":"23ae53b79117ac736e0eb4c6f3aa9c1a6d9fc789","isMergeCommit":false,"messageTitle":"Modify UI test script","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"bat":{"insertions":2,"deletions":2}}},{"hash":"af4ecd262b20303f7e78b2f41f74f6e208f64d27","isMergeCommit":false,"messageTitle":"Add handling of incorrect input","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}}]},{"date":"2024-02-03","commitResults":[{"hash":"d9ed9bfcf3574f5d76f8beefa6459c638c197e1b","isMergeCommit":false,"messageTitle":"Add delete command","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}}]},{"date":"2024-02-06","commitResults":[{"hash":"e3b3c0a9295b166d54a3a48cb4a7b6709463a159","isMergeCommit":false,"messageTitle":"Refactor code to be more OOP","messageBody":"","tags":["Level-7","A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":488,"deletions":74}}},{"hash":"974028dc1f3c78c455af915974eccd187e509794","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b915f4cecd704ed3e137319874bc6d674cf24ca5","isMergeCommit":false,"messageTitle":"Modify task classes to use LocalDate instead of String","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":25}}},{"hash":"d5ca68025391c576ac1b6db36a651be1743590a7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Vision-2000":{"java":583,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":2}},"authorContributionVariance":{"Vision-2000":19682.986},"authorDisplayNameMap":{"Vision-2000":"CS2103T-T14-2 EUGE..ROSE"}} +{"authorDailyContributionsMap":{"Vision-2000":[{"date":"2024-01-29","commitResults":[{"hash":"1025469ed3bf2e660415d4109650882213dfc2c0","isMergeCommit":false,"messageTitle":"Rename Duke.java to Stille.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10}}},{"hash":"5b94b1f62ac219ab01c91e16f8b05b35cc15612d","isMergeCommit":false,"messageTitle":"Stille.java: Add functionality to echo commands","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"5eaf7171f353c41e9c9b1b18cb698d59f3ed9e08","isMergeCommit":false,"messageTitle":"Stille.java: Change echo to list functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}}]},{"date":"2024-02-01","commitResults":[{"hash":"11362a604c9943659a9d04c24c2bc26f8c6c2f0d","isMergeCommit":false,"messageTitle":"Add functionality to mark/unmark tasks as done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":19}}},{"hash":"f8a2aad2b6c2158d3be8e7415fbc43f054c4243d","isMergeCommit":false,"messageTitle":"Add support for Todo, Deadline, Event tasks","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":83,"deletions":12}}}]},{"date":"2024-02-02","commitResults":[{"hash":"23ae53b79117ac736e0eb4c6f3aa9c1a6d9fc789","isMergeCommit":false,"messageTitle":"Modify UI test script","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"bat":{"insertions":2,"deletions":2}}},{"hash":"af4ecd262b20303f7e78b2f41f74f6e208f64d27","isMergeCommit":false,"messageTitle":"Add handling of incorrect input","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":2}}}]},{"date":"2024-02-03","commitResults":[{"hash":"d9ed9bfcf3574f5d76f8beefa6459c638c197e1b","isMergeCommit":false,"messageTitle":"Add delete command","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}}]},{"date":"2024-02-06","commitResults":[{"hash":"e3b3c0a9295b166d54a3a48cb4a7b6709463a159","isMergeCommit":false,"messageTitle":"Refactor code to be more OOP","messageBody":"","tags":["Level-7","A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":488,"deletions":74}}},{"hash":"974028dc1f3c78c455af915974eccd187e509794","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b915f4cecd704ed3e137319874bc6d674cf24ca5","isMergeCommit":false,"messageTitle":"Modify task classes to use LocalDate instead of String","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":25}}},{"hash":"d5ca68025391c576ac1b6db36a651be1743590a7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-07","commitResults":[{"hash":"be89bd299a88302713b58cfd6aad568ec949bf6a","isMergeCommit":false,"messageTitle":"Rename packages, move main file to package duke","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":51},"md":{"insertions":2,"deletions":2}}},{"hash":"f20d0b904d2efc1d186e31ce40c0793c9551b440","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"f22d5fdfccb1dae6438cc3414d3421890ca936f0","isMergeCommit":false,"messageTitle":"Add JUnit test cases","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":0}}},{"hash":"05dc3266d15755d37e9b7a6db77d16bb8ab57539","isMergeCommit":false,"messageTitle":"Modify build.gradle to create JAR file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"Vision-2000":{"java":627,"md":2,"fxml":0,"sh":0,"bat":2,"gradle":2,"txt":2}},"authorContributionVariance":{"Vision-2000":19257.746},"authorDisplayNameMap":{"Vision-2000":"CS2103T-T14-2 EUGE..ROSE"}} diff --git a/Wyrkx_ip_master/authorship.json b/Wyrkx_ip_master/authorship.json index 01ceeb7a..ace9a506 100644 --- a/Wyrkx_ip_master/authorship.json +++ b/Wyrkx_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Wyrkx"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Wyrkx"},"content":" private String by;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Wyrkx"},"content":" public Deadline(String name, String by) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Wyrkx"},"content":" this(name, by, false);","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Wyrkx"},"content":" public Deadline(String name, String by, boolean mark) {","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"Wyrkx"},"content":" super(name, mark);","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Wyrkx"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Wyrkx"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"Wyrkx"},"content":" public String toSaveString() {","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"Wyrkx"},"content":" return String.format(\"D\\t%s\\t%s\", super.toSaveString(), by);","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"Wyrkx"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Wyrkx"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Wyrkx"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), this.by);","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Wyrkx"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Wyrkx":22}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Wyrkx"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Wyrkx"},"content":" private String from, to;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Wyrkx"},"content":" public Event(String name, String from, String to) {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Wyrkx"},"content":" this(name, from, to, false);","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Wyrkx"},"content":" public Event(String name, String from, String to, boolean mark) {","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"Wyrkx"},"content":" super(name, mark);","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Wyrkx"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Wyrkx"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Wyrkx"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"Wyrkx"},"content":" public String toSaveString() {","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"Wyrkx"},"content":" return String.format(\"E\\t%s\\t%s\\t%s\", super.toSaveString(), from, to);","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"Wyrkx"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Wyrkx"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Wyrkx"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), this.from, this.to);","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Wyrkx"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Wyrkx":23}},{"path":"src/main/java/Gulie.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Wyrkx"},"content":"import java.io.File;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"Wyrkx"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"Wyrkx"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"Wyrkx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Wyrkx"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Wyrkx"},"content":"public class Gulie {","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Wyrkx"},"content":" private final static String name \u003d \"Güliedistodiez\";","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Wyrkx"},"content":" private final static String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Wyrkx"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Wyrkx"},"content":" private final static String savepath \u003d \"./data/Gulie.txt\";","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"Wyrkx"},"content":" public Gulie() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Wyrkx"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Wyrkx"},"content":" this.greet();","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Wyrkx"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"Wyrkx"},"content":" this.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"Wyrkx"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Wyrkx"},"content":" public boolean input(String inp) {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Wyrkx"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Wyrkx"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Wyrkx"},"content":" if (inp.indexOf(\"\\t\") !\u003d -1) {","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"Invalid input. The use of tabs are not allowed.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"Wyrkx"},"content":" switch (inp.split(\" \")[0]) {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Wyrkx"},"content":" case \"bye\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Wyrkx"},"content":" this.exit();","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"Wyrkx"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"Wyrkx"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"Wyrkx"},"content":" } case \"list\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Wyrkx"},"content":" this.list();","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Wyrkx"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Wyrkx"},"content":" } case \"mark\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Wyrkx"},"content":" this.mark(Gulie.getArgument(inp, \"mark\", \"index\"));","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Wyrkx"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Wyrkx"},"content":" } case \"unmark\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Wyrkx"},"content":" this.unmark(Gulie.getArgument(inp, \"unmark\", \"index\"));","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Wyrkx"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Wyrkx"},"content":" } case \"todo\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Wyrkx"},"content":" this.store(new ToDo(Gulie.getArgument(inp, \"todo\", \"name\")));","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Wyrkx"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Wyrkx"},"content":" } case \"deadline\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Wyrkx"},"content":" String name \u003d Gulie.getArgument(inp, \"deadline\", \"name\");","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Wyrkx"},"content":" String by \u003d Gulie.getArgument(inp, \"/by\");","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"Wyrkx"},"content":" this.store(new Deadline(name, by));","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"Wyrkx"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Wyrkx"},"content":" } case \"event\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Wyrkx"},"content":" String name \u003d Gulie.getArgument(inp, \"event\", \"name\");","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"Wyrkx"},"content":" String from \u003d Gulie.getArgument(inp, \"/from\");","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Wyrkx"},"content":" String to \u003d Gulie.getArgument(inp, \"/to\");","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Wyrkx"},"content":" this.store(new Event(name, from, to));","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"Wyrkx"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Wyrkx"},"content":" } case \"delete\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"Wyrkx"},"content":" this.delete(Gulie.getArgument(inp, \"delete\", \"index\"));","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"Wyrkx"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Wyrkx"},"content":" } default:","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"Apologies. I do not understand.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Wyrkx"},"content":" } catch (GulieException e){","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"Wyrkx"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"Wyrkx"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"Wyrkx"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"Wyrkx"},"content":" private static String getArgument(String inp, String arg, String argname) throws GulieException {","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"Wyrkx"},"content":" arg \u003d \" \" + arg + \" \";","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"Wyrkx"},"content":" inp \u003d \" \" + inp;","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"Wyrkx"},"content":" int i \u003d inp.indexOf(arg);","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"Wyrkx"},"content":" if (i \u003d\u003d -1)","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"You must provide the argument \u0027\" + argname + \"\u0027\");","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"Wyrkx"},"content":" String str \u003d inp.substring(i + arg.length());","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"Wyrkx"},"content":" if (str.indexOf(\" /\") \u003d\u003d -1) {","lastModifiedDate":"2024-02-04"},{"lineNumber":76,"author":{"gitId":"Wyrkx"},"content":" return str;","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"Wyrkx"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":78,"author":{"gitId":"Wyrkx"},"content":" return str.substring(0, str.indexOf(\" /\"));","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":81,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"Wyrkx"},"content":" private static String getArgument(String inp, String arg) throws GulieException {","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"Wyrkx"},"content":" return Gulie.getArgument(inp, arg, arg.substring(1));","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"Wyrkx"},"content":" private void greet() {","lastModifiedDate":"2024-01-24"},{"lineNumber":87,"author":{"gitId":"Wyrkx"},"content":" System.out.println(String.format(\" Greetings. I am %s.\\n What can I do for you?\", name));","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"Wyrkx"},"content":" private void exit() {","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"Wyrkx"},"content":" this.save();","lastModifiedDate":"2024-02-04"},{"lineNumber":92,"author":{"gitId":"Wyrkx"},"content":" System.out.println(\" Goodbye.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"Wyrkx"},"content":" private void list() {","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"Wyrkx"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-02-04"},{"lineNumber":97,"author":{"gitId":"Wyrkx"},"content":" System.out.println(String.format(\" %d. %s\", i + 1, taskList.get(i)));","lastModifiedDate":"2024-02-04"},{"lineNumber":98,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"Wyrkx"},"content":" private void store(Task task, boolean silent) {","lastModifiedDate":"2024-02-04"},{"lineNumber":102,"author":{"gitId":"Wyrkx"},"content":" this.taskList.add(task);","lastModifiedDate":"2024-02-04"},{"lineNumber":103,"author":{"gitId":"Wyrkx"},"content":" if (!silent) {","lastModifiedDate":"2024-02-04"},{"lineNumber":104,"author":{"gitId":"Wyrkx"},"content":" System.out.println(\" Understood. I have added this task:\\n \" + task);","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"Wyrkx"},"content":" System.out.println(String.format(\"You now have %d tasks in the list\", taskList.size()));","lastModifiedDate":"2024-02-04"},{"lineNumber":106,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":107,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":108,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":109,"author":{"gitId":"Wyrkx"},"content":" private void store(Task task) {","lastModifiedDate":"2024-02-04"},{"lineNumber":110,"author":{"gitId":"Wyrkx"},"content":" this.store(task, false);","lastModifiedDate":"2024-02-04"},{"lineNumber":111,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":112,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"Wyrkx"},"content":" private void mark(String str) throws GulieException {","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"Wyrkx"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"Wyrkx"},"content":" int i \u003d Integer.parseInt(str);","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"Wyrkx"},"content":" if (i \u003e taskList.size() || i \u003c 0)","lastModifiedDate":"2024-02-04"},{"lineNumber":117,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"Invalid index: \" + i);","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"Wyrkx"},"content":" Task task \u003d taskList.get(i - 1);","lastModifiedDate":"2024-02-04"},{"lineNumber":119,"author":{"gitId":"Wyrkx"},"content":" task.setMark(true);","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"Wyrkx"},"content":" System.out.println(\" I have marked this task as completed:\\n \" + task);","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"Wyrkx"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"Argument must in integer: \" + str);","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"Wyrkx"},"content":" private void unmark(String str) throws GulieException {","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"Wyrkx"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"Wyrkx"},"content":" int i \u003d Integer.parseInt(str);","lastModifiedDate":"2024-01-26"},{"lineNumber":129,"author":{"gitId":"Wyrkx"},"content":" if (i \u003e taskList.size() || i \u003c 0)","lastModifiedDate":"2024-02-04"},{"lineNumber":130,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"Invalid index: \" + i);","lastModifiedDate":"2024-01-26"},{"lineNumber":131,"author":{"gitId":"Wyrkx"},"content":" Task task \u003d taskList.get(i - 1);","lastModifiedDate":"2024-02-04"},{"lineNumber":132,"author":{"gitId":"Wyrkx"},"content":" task.setMark(false);","lastModifiedDate":"2024-01-24"},{"lineNumber":133,"author":{"gitId":"Wyrkx"},"content":" System.out.println(\" I have marked this task as incomplete:\\n \" + task);","lastModifiedDate":"2024-01-24"},{"lineNumber":134,"author":{"gitId":"Wyrkx"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":135,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"Argument must in integer: \" + str);","lastModifiedDate":"2024-01-26"},{"lineNumber":136,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":138,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"Wyrkx"},"content":" private void delete(String str) throws GulieException {","lastModifiedDate":"2024-01-26"},{"lineNumber":140,"author":{"gitId":"Wyrkx"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":141,"author":{"gitId":"Wyrkx"},"content":" int i \u003d Integer.parseInt(str);","lastModifiedDate":"2024-01-26"},{"lineNumber":142,"author":{"gitId":"Wyrkx"},"content":" if (i \u003e taskList.size() || i \u003c 0) {","lastModifiedDate":"2024-02-04"},{"lineNumber":143,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"Invalid index: \" + i);","lastModifiedDate":"2024-01-26"},{"lineNumber":144,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":145,"author":{"gitId":"Wyrkx"},"content":" Task task \u003d taskList.get(i - 1);","lastModifiedDate":"2024-02-04"},{"lineNumber":146,"author":{"gitId":"Wyrkx"},"content":" taskList.remove(i - 1);","lastModifiedDate":"2024-02-04"},{"lineNumber":147,"author":{"gitId":"Wyrkx"},"content":" System.out.println(\" I have removed this task:\\n \" + task);","lastModifiedDate":"2024-01-26"},{"lineNumber":148,"author":{"gitId":"Wyrkx"},"content":" System.out.println(String.format(\" You now have %d tasks in the list\", taskList.size()));","lastModifiedDate":"2024-02-04"},{"lineNumber":149,"author":{"gitId":"Wyrkx"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":150,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"Argument must in integer: \" + str);","lastModifiedDate":"2024-01-26"},{"lineNumber":151,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":152,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":153,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":154,"author":{"gitId":"Wyrkx"},"content":" private void save() {","lastModifiedDate":"2024-02-04"},{"lineNumber":155,"author":{"gitId":"Wyrkx"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":156,"author":{"gitId":"Wyrkx"},"content":" File save \u003d new File(savepath);","lastModifiedDate":"2024-02-04"},{"lineNumber":157,"author":{"gitId":"Wyrkx"},"content":" save.mkdirs();","lastModifiedDate":"2024-02-04"},{"lineNumber":158,"author":{"gitId":"Wyrkx"},"content":" save.delete();","lastModifiedDate":"2024-02-04"},{"lineNumber":159,"author":{"gitId":"Wyrkx"},"content":" save.createNewFile();","lastModifiedDate":"2024-02-04"},{"lineNumber":160,"author":{"gitId":"Wyrkx"},"content":" FileWriter fw \u003d new FileWriter(save);","lastModifiedDate":"2024-02-04"},{"lineNumber":161,"author":{"gitId":"Wyrkx"},"content":" for (Task t: taskList) {","lastModifiedDate":"2024-02-04"},{"lineNumber":162,"author":{"gitId":"Wyrkx"},"content":" fw.write(t.toSaveString() + \"\\n\");","lastModifiedDate":"2024-02-04"},{"lineNumber":163,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":164,"author":{"gitId":"Wyrkx"},"content":" fw.close();","lastModifiedDate":"2024-02-04"},{"lineNumber":165,"author":{"gitId":"Wyrkx"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":166,"author":{"gitId":"Wyrkx"},"content":" System.out.println(\"Error saving: \" + e.getMessage());","lastModifiedDate":"2024-02-04"},{"lineNumber":167,"author":{"gitId":"Wyrkx"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-04"},{"lineNumber":168,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":169,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":170,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":171,"author":{"gitId":"Wyrkx"},"content":" private void load() {","lastModifiedDate":"2024-02-04"},{"lineNumber":172,"author":{"gitId":"Wyrkx"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":173,"author":{"gitId":"Wyrkx"},"content":" File save \u003d new File(savepath);","lastModifiedDate":"2024-02-04"},{"lineNumber":174,"author":{"gitId":"Wyrkx"},"content":" if (!save.exists()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":175,"author":{"gitId":"Wyrkx"},"content":" return;","lastModifiedDate":"2024-02-04"},{"lineNumber":176,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":177,"author":{"gitId":"Wyrkx"},"content":" Scanner scanner \u003d new Scanner(save);","lastModifiedDate":"2024-02-04"},{"lineNumber":178,"author":{"gitId":"Wyrkx"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":179,"author":{"gitId":"Wyrkx"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":180,"author":{"gitId":"Wyrkx"},"content":" this.store(Task.fromSaveString(scanner.nextLine()), true);","lastModifiedDate":"2024-02-04"},{"lineNumber":181,"author":{"gitId":"Wyrkx"},"content":" } catch (GulieException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":182,"author":{"gitId":"Wyrkx"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-04"},{"lineNumber":183,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":184,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":185,"author":{"gitId":"Wyrkx"},"content":" scanner.close();","lastModifiedDate":"2024-02-04"},{"lineNumber":186,"author":{"gitId":"Wyrkx"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":187,"author":{"gitId":"Wyrkx"},"content":" System.out.println(\"Error loading: \" + e.getMessage());","lastModifiedDate":"2024-02-04"},{"lineNumber":188,"author":{"gitId":"Wyrkx"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-04"},{"lineNumber":189,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":190,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":191,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":192,"author":{"gitId":"Wyrkx"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-24"},{"lineNumber":193,"author":{"gitId":"Wyrkx"},"content":" Gulie gulie \u003d new Gulie();","lastModifiedDate":"2024-01-24"},{"lineNumber":194,"author":{"gitId":"Wyrkx"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":195,"author":{"gitId":"Wyrkx"},"content":" while (gulie.input(scanner.nextLine()));","lastModifiedDate":"2024-02-04"},{"lineNumber":196,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":197,"author":{"gitId":"Wyrkx"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Wyrkx":197}},{"path":"src/main/java/GulieException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Wyrkx"},"content":"public class GulieException extends Exception {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Wyrkx"},"content":" public GulieException(String msg) {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Wyrkx"},"content":" super(msg);","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Wyrkx"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Wyrkx":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Wyrkx"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"Wyrkx"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Wyrkx"},"content":" private String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Wyrkx"},"content":" private Boolean mark;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Wyrkx"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Wyrkx"},"content":" this(name, false);","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Wyrkx"},"content":" public Task(String name, boolean mark) {","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Wyrkx"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Wyrkx"},"content":" this.mark \u003d mark;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Wyrkx"},"content":" public void setMark(boolean mark) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Wyrkx"},"content":" this.mark \u003d mark;","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Wyrkx"},"content":" public String toSaveString() {","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"Wyrkx"},"content":" return String.format(\"%s\\t%s\", mark ? \"1\" : \"0\", name);","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"Wyrkx"},"content":" public static Task fromSaveString(String str) throws GulieException {","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"Wyrkx"},"content":" String[] spl \u003d str.split(\"\\t\");","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"Wyrkx"},"content":" if (!spl[1].equals(\"0\") \u0026\u0026 !spl[1].equals(\"1\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"This task is corrupted.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"Wyrkx"},"content":" switch (spl[0]) {","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"Wyrkx"},"content":" case \"T\":","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"Wyrkx"},"content":" if (spl.length !\u003d 3) {","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"This task is corrupted.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"Wyrkx"},"content":" return new ToDo(spl[2], spl[1].equals(\"1\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"Wyrkx"},"content":" case \"D\":","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"Wyrkx"},"content":" if (spl.length !\u003d 4) {","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"This task is corrupted.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"Wyrkx"},"content":" return new Deadline(spl[2], spl[3], spl[1].equals(\"1\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"Wyrkx"},"content":" case \"E\":","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"Wyrkx"},"content":" if (spl.length !\u003d 5) {","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"This task is corrupted.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"Wyrkx"},"content":" return new Event(spl[2], spl[3], spl[4], spl[1].equals(\"1\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"Wyrkx"},"content":" default:","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"This task is corrupted.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"Wyrkx"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"Wyrkx"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"Wyrkx"},"content":" return String.format(\"[%s] %s\", this.mark ? \"X\" : \" \", this.name);","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"Wyrkx"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Wyrkx":53}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Wyrkx"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Wyrkx"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Wyrkx"},"content":" this(name, false);","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"Wyrkx"},"content":" public ToDo(String name, boolean mark) {","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"Wyrkx"},"content":" super(name, mark);","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Wyrkx"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Wyrkx"},"content":" public String toSaveString() {","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"Wyrkx"},"content":" return String.format(\"T\\t%s\", super.toSaveString());","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Wyrkx"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Wyrkx"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Wyrkx"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Wyrkx"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Wyrkx":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Wyrkx"},"content":"todo read book","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Wyrkx"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Wyrkx"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Wyrkx"},"content":"event project meeting /from Aug 6th /to 4pm","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Wyrkx"},"content":"todo join sports club","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Wyrkx"},"content":"todo borrow book","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Wyrkx"},"content":"mark 2","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Wyrkx"},"content":"mark 4","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Wyrkx"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Wyrkx"},"content":"delete 3","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Wyrkx":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":"Wyrkx"},"content":"java -classpath ..\\bin Gulie \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-26"},{"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":{"Wyrkx":1,"-":20}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Wyrkx"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Wyrkx"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Wyrkx"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Wyrkx"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Wyrkx"},"content":" public Deadline(String name, String by) throws GulieException {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Wyrkx"},"content":" this(name, by, false);","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Wyrkx"},"content":" public Deadline(String name, String by, boolean mark) throws GulieException {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Wyrkx"},"content":" super(name, mark);","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"Wyrkx"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Wyrkx"},"content":" this.by \u003d LocalDateTime.parse(by);","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Wyrkx"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"The datetime that you have given is invalid.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Wyrkx"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"Wyrkx"},"content":" public String toSaveString() {","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"Wyrkx"},"content":" return String.format(\"D\\t%s\\t%s\", super.toSaveString(), by);","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"Wyrkx"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Wyrkx"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"Wyrkx"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), Gulie.getDateTimeFormatter().format(by));","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Wyrkx"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Wyrkx":29}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Wyrkx"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Wyrkx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Wyrkx"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Wyrkx"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Wyrkx"},"content":" private LocalDateTime from, to;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Wyrkx"},"content":" public Event(String name, String from, String to) throws GulieException {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Wyrkx"},"content":" this(name, from, to, false);","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"Wyrkx"},"content":" public Event(String name, String from, String to, boolean mark) throws GulieException {","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Wyrkx"},"content":" super(name, mark);","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"Wyrkx"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Wyrkx"},"content":" this.from \u003d LocalDateTime.parse(from);","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Wyrkx"},"content":" this.to \u003d LocalDateTime.parse(to);","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Wyrkx"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"The datetime that you have given is invalid.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Wyrkx"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"Wyrkx"},"content":" public String toSaveString() {","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"Wyrkx"},"content":" return String.format(\"E\\t%s\\t%s\\t%s\", super.toSaveString(), from, to);","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"Wyrkx"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Wyrkx"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"Wyrkx"},"content":" DateTimeFormatter dtf \u003d Gulie.getDateTimeFormatter();","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Wyrkx"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), dtf.format(from), dtf.format(to));","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"Wyrkx"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Wyrkx":32}},{"path":"src/main/java/Gulie.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Wyrkx"},"content":"import java.io.File;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"Wyrkx"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"Wyrkx"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"Wyrkx"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Wyrkx"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Wyrkx"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"Wyrkx"},"content":"public class Gulie {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"Wyrkx"},"content":" private final static String name \u003d \"Güliedistodiez\";","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"Wyrkx"},"content":" private final static String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"Wyrkx"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"Wyrkx"},"content":" private final static String savepath \u003d \"./data/Gulie.txt\";","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"Wyrkx"},"content":" private static final DateTimeFormatter DATE_TIME_FORMATTER \u003d DateTimeFormatter.ofPattern(\"dd\u0027/\u0027MM\u0027/\u0027yyyy HH\u0027:\u0027mm\");","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Wyrkx"},"content":" public Gulie() {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Wyrkx"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Wyrkx"},"content":" this.greet();","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Wyrkx"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"Wyrkx"},"content":" this.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"Wyrkx"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"Wyrkx"},"content":" public boolean input(String inp) {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Wyrkx"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"Wyrkx"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"Wyrkx"},"content":" if (inp.indexOf(\"\\t\") !\u003d -1) {","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"Invalid input. The use of tabs are not allowed.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"Wyrkx"},"content":" switch (inp.split(\" \")[0]) {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"Wyrkx"},"content":" case \"bye\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"Wyrkx"},"content":" this.exit();","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"Wyrkx"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"Wyrkx"},"content":" return false;","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"Wyrkx"},"content":" } case \"list\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Wyrkx"},"content":" this.list();","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"Wyrkx"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"Wyrkx"},"content":" } case \"mark\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"Wyrkx"},"content":" this.mark(Gulie.getArgument(inp, \"mark\", \"index\"));","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Wyrkx"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Wyrkx"},"content":" } case \"unmark\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Wyrkx"},"content":" this.unmark(Gulie.getArgument(inp, \"unmark\", \"index\"));","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Wyrkx"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Wyrkx"},"content":" } case \"todo\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Wyrkx"},"content":" this.store(new ToDo(Gulie.getArgument(inp, \"todo\", \"name\")));","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Wyrkx"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Wyrkx"},"content":" } case \"deadline\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"Wyrkx"},"content":" String name \u003d Gulie.getArgument(inp, \"deadline\", \"name\");","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"Wyrkx"},"content":" String by \u003d Gulie.getArgument(inp, \"/by\");","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"Wyrkx"},"content":" this.store(new Deadline(name, by));","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"Wyrkx"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"Wyrkx"},"content":" } case \"event\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"Wyrkx"},"content":" String name \u003d Gulie.getArgument(inp, \"event\", \"name\");","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"Wyrkx"},"content":" String from \u003d Gulie.getArgument(inp, \"/from\");","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"Wyrkx"},"content":" String to \u003d Gulie.getArgument(inp, \"/to\");","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"Wyrkx"},"content":" this.store(new Event(name, from, to));","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"Wyrkx"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"Wyrkx"},"content":" } case \"delete\": {","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"Wyrkx"},"content":" this.delete(Gulie.getArgument(inp, \"delete\", \"index\"));","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"Wyrkx"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"Wyrkx"},"content":" } default:","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"Apologies. I do not understand.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"Wyrkx"},"content":" } catch (GulieException e){","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"Wyrkx"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"Wyrkx"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"Wyrkx"},"content":" return true;","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"Wyrkx"},"content":" private static String getArgument(String inp, String arg, String argname) throws GulieException {","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"Wyrkx"},"content":" arg \u003d \" \" + arg + \" \";","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"Wyrkx"},"content":" inp \u003d \" \" + inp;","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"Wyrkx"},"content":" int i \u003d inp.indexOf(arg);","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"Wyrkx"},"content":" if (i \u003d\u003d -1)","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"You must provide the argument \u0027\" + argname + \"\u0027\");","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"Wyrkx"},"content":" String str \u003d inp.substring(i + arg.length());","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"Wyrkx"},"content":" if (str.indexOf(\" /\") \u003d\u003d -1) {","lastModifiedDate":"2024-02-04"},{"lineNumber":78,"author":{"gitId":"Wyrkx"},"content":" return str;","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"Wyrkx"},"content":" } else {","lastModifiedDate":"2024-02-04"},{"lineNumber":80,"author":{"gitId":"Wyrkx"},"content":" return str.substring(0, str.indexOf(\" /\"));","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":83,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"Wyrkx"},"content":" private static String getArgument(String inp, String arg) throws GulieException {","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"Wyrkx"},"content":" return Gulie.getArgument(inp, arg, arg.substring(1));","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"Wyrkx"},"content":" private void greet() {","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"Wyrkx"},"content":" System.out.println(String.format(\" Greetings. I am %s.\\n What can I do for you?\", name));","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"Wyrkx"},"content":" private void exit() {","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"Wyrkx"},"content":" this.save();","lastModifiedDate":"2024-02-04"},{"lineNumber":94,"author":{"gitId":"Wyrkx"},"content":" System.out.println(\" Goodbye.\");","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"Wyrkx"},"content":" private void list() {","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"Wyrkx"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-02-04"},{"lineNumber":99,"author":{"gitId":"Wyrkx"},"content":" System.out.println(String.format(\" %d. %s\", i + 1, taskList.get(i)));","lastModifiedDate":"2024-02-04"},{"lineNumber":100,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":102,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"Wyrkx"},"content":" private void store(Task task, boolean silent) {","lastModifiedDate":"2024-02-04"},{"lineNumber":104,"author":{"gitId":"Wyrkx"},"content":" this.taskList.add(task);","lastModifiedDate":"2024-02-04"},{"lineNumber":105,"author":{"gitId":"Wyrkx"},"content":" if (!silent) {","lastModifiedDate":"2024-02-04"},{"lineNumber":106,"author":{"gitId":"Wyrkx"},"content":" System.out.println(\" Understood. I have added this task:\\n \" + task);","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"Wyrkx"},"content":" System.out.println(String.format(\"You now have %d tasks in the list\", taskList.size()));","lastModifiedDate":"2024-02-04"},{"lineNumber":108,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":109,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":110,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":111,"author":{"gitId":"Wyrkx"},"content":" private void store(Task task) {","lastModifiedDate":"2024-02-04"},{"lineNumber":112,"author":{"gitId":"Wyrkx"},"content":" this.store(task, false);","lastModifiedDate":"2024-02-04"},{"lineNumber":113,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"Wyrkx"},"content":" private void mark(String str) throws GulieException {","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"Wyrkx"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"Wyrkx"},"content":" int i \u003d Integer.parseInt(str);","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"Wyrkx"},"content":" if (i \u003e taskList.size() || i \u003c 0)","lastModifiedDate":"2024-02-04"},{"lineNumber":119,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"Invalid index: \" + i);","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"Wyrkx"},"content":" Task task \u003d taskList.get(i - 1);","lastModifiedDate":"2024-02-04"},{"lineNumber":121,"author":{"gitId":"Wyrkx"},"content":" task.setMark(true);","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"Wyrkx"},"content":" System.out.println(\" I have marked this task as completed:\\n \" + task);","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"Wyrkx"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"Argument must in integer: \" + str);","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"Wyrkx"},"content":" private void unmark(String str) throws GulieException {","lastModifiedDate":"2024-01-26"},{"lineNumber":129,"author":{"gitId":"Wyrkx"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":130,"author":{"gitId":"Wyrkx"},"content":" int i \u003d Integer.parseInt(str);","lastModifiedDate":"2024-01-26"},{"lineNumber":131,"author":{"gitId":"Wyrkx"},"content":" if (i \u003e taskList.size() || i \u003c 0)","lastModifiedDate":"2024-02-04"},{"lineNumber":132,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"Invalid index: \" + i);","lastModifiedDate":"2024-01-26"},{"lineNumber":133,"author":{"gitId":"Wyrkx"},"content":" Task task \u003d taskList.get(i - 1);","lastModifiedDate":"2024-02-04"},{"lineNumber":134,"author":{"gitId":"Wyrkx"},"content":" task.setMark(false);","lastModifiedDate":"2024-01-24"},{"lineNumber":135,"author":{"gitId":"Wyrkx"},"content":" System.out.println(\" I have marked this task as incomplete:\\n \" + task);","lastModifiedDate":"2024-01-24"},{"lineNumber":136,"author":{"gitId":"Wyrkx"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"Argument must in integer: \" + str);","lastModifiedDate":"2024-01-26"},{"lineNumber":138,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":139,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":140,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":141,"author":{"gitId":"Wyrkx"},"content":" private void delete(String str) throws GulieException {","lastModifiedDate":"2024-01-26"},{"lineNumber":142,"author":{"gitId":"Wyrkx"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":143,"author":{"gitId":"Wyrkx"},"content":" int i \u003d Integer.parseInt(str);","lastModifiedDate":"2024-01-26"},{"lineNumber":144,"author":{"gitId":"Wyrkx"},"content":" if (i \u003e taskList.size() || i \u003c 0) {","lastModifiedDate":"2024-02-04"},{"lineNumber":145,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"Invalid index: \" + i);","lastModifiedDate":"2024-01-26"},{"lineNumber":146,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":147,"author":{"gitId":"Wyrkx"},"content":" Task task \u003d taskList.get(i - 1);","lastModifiedDate":"2024-02-04"},{"lineNumber":148,"author":{"gitId":"Wyrkx"},"content":" taskList.remove(i - 1);","lastModifiedDate":"2024-02-04"},{"lineNumber":149,"author":{"gitId":"Wyrkx"},"content":" System.out.println(\" I have removed this task:\\n \" + task);","lastModifiedDate":"2024-01-26"},{"lineNumber":150,"author":{"gitId":"Wyrkx"},"content":" System.out.println(String.format(\" You now have %d tasks in the list\", taskList.size()));","lastModifiedDate":"2024-02-04"},{"lineNumber":151,"author":{"gitId":"Wyrkx"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":152,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"Argument must in integer: \" + str);","lastModifiedDate":"2024-01-26"},{"lineNumber":153,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":154,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":155,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":156,"author":{"gitId":"Wyrkx"},"content":" private void save() {","lastModifiedDate":"2024-02-04"},{"lineNumber":157,"author":{"gitId":"Wyrkx"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":158,"author":{"gitId":"Wyrkx"},"content":" File save \u003d new File(savepath);","lastModifiedDate":"2024-02-04"},{"lineNumber":159,"author":{"gitId":"Wyrkx"},"content":" save.mkdirs();","lastModifiedDate":"2024-02-04"},{"lineNumber":160,"author":{"gitId":"Wyrkx"},"content":" save.delete();","lastModifiedDate":"2024-02-04"},{"lineNumber":161,"author":{"gitId":"Wyrkx"},"content":" save.createNewFile();","lastModifiedDate":"2024-02-04"},{"lineNumber":162,"author":{"gitId":"Wyrkx"},"content":" FileWriter fw \u003d new FileWriter(save);","lastModifiedDate":"2024-02-04"},{"lineNumber":163,"author":{"gitId":"Wyrkx"},"content":" for (Task t: taskList) {","lastModifiedDate":"2024-02-04"},{"lineNumber":164,"author":{"gitId":"Wyrkx"},"content":" fw.write(t.toSaveString() + \"\\n\");","lastModifiedDate":"2024-02-04"},{"lineNumber":165,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":166,"author":{"gitId":"Wyrkx"},"content":" fw.close();","lastModifiedDate":"2024-02-04"},{"lineNumber":167,"author":{"gitId":"Wyrkx"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":168,"author":{"gitId":"Wyrkx"},"content":" System.out.println(\"Error saving: \" + e.getMessage());","lastModifiedDate":"2024-02-04"},{"lineNumber":169,"author":{"gitId":"Wyrkx"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-04"},{"lineNumber":170,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":171,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":172,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":173,"author":{"gitId":"Wyrkx"},"content":" private void load() {","lastModifiedDate":"2024-02-04"},{"lineNumber":174,"author":{"gitId":"Wyrkx"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":175,"author":{"gitId":"Wyrkx"},"content":" File save \u003d new File(savepath);","lastModifiedDate":"2024-02-04"},{"lineNumber":176,"author":{"gitId":"Wyrkx"},"content":" if (!save.exists()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":177,"author":{"gitId":"Wyrkx"},"content":" return;","lastModifiedDate":"2024-02-04"},{"lineNumber":178,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":179,"author":{"gitId":"Wyrkx"},"content":" Scanner scanner \u003d new Scanner(save);","lastModifiedDate":"2024-02-04"},{"lineNumber":180,"author":{"gitId":"Wyrkx"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":181,"author":{"gitId":"Wyrkx"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":182,"author":{"gitId":"Wyrkx"},"content":" this.store(Task.fromSaveString(scanner.nextLine()), true);","lastModifiedDate":"2024-02-04"},{"lineNumber":183,"author":{"gitId":"Wyrkx"},"content":" } catch (GulieException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":184,"author":{"gitId":"Wyrkx"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-04"},{"lineNumber":185,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":186,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":187,"author":{"gitId":"Wyrkx"},"content":" scanner.close();","lastModifiedDate":"2024-02-04"},{"lineNumber":188,"author":{"gitId":"Wyrkx"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":189,"author":{"gitId":"Wyrkx"},"content":" System.out.println(\"Error loading: \" + e.getMessage());","lastModifiedDate":"2024-02-04"},{"lineNumber":190,"author":{"gitId":"Wyrkx"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-04"},{"lineNumber":191,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":192,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":193,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":194,"author":{"gitId":"Wyrkx"},"content":" static DateTimeFormatter getDateTimeFormatter() {","lastModifiedDate":"2024-02-07"},{"lineNumber":195,"author":{"gitId":"Wyrkx"},"content":" return DATE_TIME_FORMATTER;","lastModifiedDate":"2024-02-07"},{"lineNumber":196,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":197,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":198,"author":{"gitId":"Wyrkx"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-24"},{"lineNumber":199,"author":{"gitId":"Wyrkx"},"content":" Gulie gulie \u003d new Gulie();","lastModifiedDate":"2024-01-24"},{"lineNumber":200,"author":{"gitId":"Wyrkx"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":201,"author":{"gitId":"Wyrkx"},"content":" while (gulie.input(scanner.nextLine()));","lastModifiedDate":"2024-02-04"},{"lineNumber":202,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":203,"author":{"gitId":"Wyrkx"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Wyrkx":203}},{"path":"src/main/java/GulieException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Wyrkx"},"content":"public class GulieException extends Exception {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Wyrkx"},"content":" public GulieException(String msg) {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Wyrkx"},"content":" super(msg);","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Wyrkx"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Wyrkx":5}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Wyrkx"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"Wyrkx"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Wyrkx"},"content":" private String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"Wyrkx"},"content":" private Boolean mark;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"Wyrkx"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"Wyrkx"},"content":" this(name, false);","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Wyrkx"},"content":" public Task(String name, boolean mark) {","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Wyrkx"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"Wyrkx"},"content":" this.mark \u003d mark;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"Wyrkx"},"content":" public void setMark(boolean mark) {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"Wyrkx"},"content":" this.mark \u003d mark;","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"Wyrkx"},"content":" public String toSaveString() {","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"Wyrkx"},"content":" return String.format(\"%s\\t%s\", mark ? \"1\" : \"0\", name);","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"Wyrkx"},"content":" public static Task fromSaveString(String str) throws GulieException {","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"Wyrkx"},"content":" String[] spl \u003d str.split(\"\\t\");","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"Wyrkx"},"content":" if (!spl[1].equals(\"0\") \u0026\u0026 !spl[1].equals(\"1\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"This task is corrupted.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"Wyrkx"},"content":" switch (spl[0]) {","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"Wyrkx"},"content":" case \"T\":","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"Wyrkx"},"content":" if (spl.length !\u003d 3) {","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"This task is corrupted.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"Wyrkx"},"content":" return new ToDo(spl[2], spl[1].equals(\"1\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"Wyrkx"},"content":" case \"D\":","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"Wyrkx"},"content":" if (spl.length !\u003d 4) {","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"This task is corrupted.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"Wyrkx"},"content":" return new Deadline(spl[2], spl[3], spl[1].equals(\"1\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"Wyrkx"},"content":" case \"E\":","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"Wyrkx"},"content":" if (spl.length !\u003d 5) {","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"This task is corrupted.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"Wyrkx"},"content":" return new Event(spl[2], spl[3], spl[4], spl[1].equals(\"1\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"Wyrkx"},"content":" default:","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"Wyrkx"},"content":" throw new GulieException(\"This task is corrupted.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"Wyrkx"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"Wyrkx"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"Wyrkx"},"content":" return String.format(\"[%s] %s\", this.mark ? \"X\" : \" \", this.name);","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"Wyrkx"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"Wyrkx":53}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Wyrkx"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Wyrkx"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Wyrkx"},"content":" this(name, false);","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"Wyrkx"},"content":" public ToDo(String name, boolean mark) {","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"Wyrkx"},"content":" super(name, mark);","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"Wyrkx"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"Wyrkx"},"content":" public String toSaveString() {","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"Wyrkx"},"content":" return String.format(\"T\\t%s\", super.toSaveString());","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Wyrkx"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Wyrkx"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Wyrkx"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Wyrkx"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Wyrkx"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Wyrkx"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Wyrkx":19}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Wyrkx"},"content":"todo read book","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Wyrkx"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Wyrkx"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Wyrkx"},"content":"event project meeting /from Aug 6th /to 4pm","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Wyrkx"},"content":"todo join sports club","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Wyrkx"},"content":"todo borrow book","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Wyrkx"},"content":"mark 2","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Wyrkx"},"content":"mark 4","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Wyrkx"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Wyrkx"},"content":"delete 3","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Wyrkx":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":"Wyrkx"},"content":"java -classpath ..\\bin Gulie \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-26"},{"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":{"Wyrkx":1,"-":20}}] diff --git a/Wyrkx_ip_master/commits.json b/Wyrkx_ip_master/commits.json index 6e23ccb5..c08fc72d 100644 --- a/Wyrkx_ip_master/commits.json +++ b/Wyrkx_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Wyrkx":[{"date":"2024-01-24","commitResults":[{"hash":"3f7ee7c6f4b870e816c24024b40f5506e6d59cbc","isMergeCommit":false,"messageTitle":"completed Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":10}}},{"hash":"7a05276f2a9c0e252d9e88666ea3ec9ca2da5eb5","isMergeCommit":false,"messageTitle":"completed Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"b47ace32aa45b931bebdb2bce288fae78e1f864f","isMergeCommit":false,"messageTitle":"complated Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":12}}},{"hash":"6a23b6233eb0da4419bfcc2474d43fae76008ddc","isMergeCommit":false,"messageTitle":"completed level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":4}}}]},{"date":"2024-01-26","commitResults":[{"hash":"0b9fc5508464a61b24802ed685d9781caaedd7ff","isMergeCommit":false,"messageTitle":"completed level 4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"3b4e7cea943ed6963a00f4c3d447539320a98375","isMergeCommit":false,"messageTitle":"completed level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":20}}},{"hash":"4d40fd61b392d676665f2a0eaa11c18149b22a36","isMergeCommit":false,"messageTitle":"completed automated text ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"b048fa60a44973f2029ea8deebc2ef46e5def237","isMergeCommit":false,"messageTitle":"completed level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":44}}},{"hash":"399a2d5bc276003f7afd4822f00e9d4d3e3fb85d","isMergeCommit":false,"messageTitle":"completed level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":3},"java":{"insertions":17,"deletions":0}}}]},{"date":"2024-02-04","commitResults":[{"hash":"1938598e42478e10a09f392f236757dc4f6c79c0","isMergeCommit":false,"messageTitle":"Add save and load","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":172,"deletions":57}}}]}]},"authorFileTypeContributionMap":{"Wyrkx":{"java":319,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":10}},"authorContributionVariance":{"Wyrkx":6792.926},"authorDisplayNameMap":{"Wyrkx":"CS2103T-F12-3 CARS..E NG"}} +{"authorDailyContributionsMap":{"Wyrkx":[{"date":"2024-01-24","commitResults":[{"hash":"3f7ee7c6f4b870e816c24024b40f5506e6d59cbc","isMergeCommit":false,"messageTitle":"completed Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":10}}},{"hash":"7a05276f2a9c0e252d9e88666ea3ec9ca2da5eb5","isMergeCommit":false,"messageTitle":"completed Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":3}}},{"hash":"b47ace32aa45b931bebdb2bce288fae78e1f864f","isMergeCommit":false,"messageTitle":"complated Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":12}}},{"hash":"6a23b6233eb0da4419bfcc2474d43fae76008ddc","isMergeCommit":false,"messageTitle":"completed level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":4}}}]},{"date":"2024-01-26","commitResults":[{"hash":"0b9fc5508464a61b24802ed685d9781caaedd7ff","isMergeCommit":false,"messageTitle":"completed level 4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"3b4e7cea943ed6963a00f4c3d447539320a98375","isMergeCommit":false,"messageTitle":"completed level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":20}}},{"hash":"4d40fd61b392d676665f2a0eaa11c18149b22a36","isMergeCommit":false,"messageTitle":"completed automated text ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"b048fa60a44973f2029ea8deebc2ef46e5def237","isMergeCommit":false,"messageTitle":"completed level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":44}}},{"hash":"399a2d5bc276003f7afd4822f00e9d4d3e3fb85d","isMergeCommit":false,"messageTitle":"completed level 6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":3},"java":{"insertions":17,"deletions":0}}}]},{"date":"2024-02-04","commitResults":[{"hash":"1938598e42478e10a09f392f236757dc4f6c79c0","isMergeCommit":false,"messageTitle":"Add save and load","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":172,"deletions":57}}}]},{"date":"2024-02-07","commitResults":[{"hash":"4b693ffb599029fd456bb9c18c8d3c4d312a5621","isMergeCommit":false,"messageTitle":"Complete level 8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":11}}}]}]},"authorFileTypeContributionMap":{"Wyrkx":{"java":341,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":10}},"authorContributionVariance":{"Wyrkx":5901.447},"authorDisplayNameMap":{"Wyrkx":"CS2103T-F12-3 CARS..E NG"}} diff --git a/Xilef121_ip_master/authorship.json b/Xilef121_ip_master/authorship.json index af310d8f..f5d47a45 100644 --- a/Xilef121_ip_master/authorship.json +++ b/Xilef121_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":" protected LocalDateTime deadline;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":" public Deadline(String description, LocalDateTime deadline) {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":" return \"[D]\" + super.toString() + \" (by: \" + deadline.format(DateTimeFormatter.ofPattern(\"d MMM yyyy| hh:mm a\")) + \")\";","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Xilef121"},"content":" public String toStringForFile() {","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"Xilef121"},"content":" return \"D | \" + super.toStringForFile() + \" | \" + this.deadline;","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Xilef121":21}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":"import java.io.File;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":" private static final String FILE_NAME \u003d \"duke.txt\";","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":" private static final String FILE_PATH \u003d Paths.get(\".\", FILE_NAME).toString();","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":16,"author":{"gitId":"Xilef121"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"Xilef121"},"content":" ArrayList\u003cTask\u003e list \u003d loadFile();","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Xilef121"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-dd-MM HHmm\");","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tHello, my name is Xilef.\\n\\t\\tHow may I help you today??\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"Xilef121"},"content":" while (true) {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"Xilef121"},"content":" String str \u003d scanner.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"Xilef121"},"content":" String[] arr \u003d str.split(\" \");","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Xilef121"},"content":" if (str.equals(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"Xilef121"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"Xilef121"},"content":" } else if (arr[0].equals(\"list\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"Xilef121"},"content":" if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tThere is nothing on your agenda\");","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"Xilef121"},"content":" else {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tThese are the things on your agenda today\");","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Xilef121"},"content":" for (int i \u003d 1; i \u003c list.size() + 1; i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"Xilef121"},"content":" Task t \u003d list.get(i - 1);","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\t\" + i + \".\" + t.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\");","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"Xilef121"},"content":" } else if (arr[0].equals(\"unmark\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"Xilef121"},"content":" Task t \u003d list.get(getIndex(arr));","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"Xilef121"},"content":" t.unmarkDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tReminder, you have not completed this task yet:\\n\\t\\t \" + t.toString() + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"Xilef121"},"content":" } else if (arr[0].equals(\"mark\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"Xilef121"},"content":" Task t \u003d list.get(getIndex(arr));","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"Xilef121"},"content":" t.markDone();","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tGreat job, you have accomplished this task:\\n\\t\\t \" + t.toString() + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"Xilef121"},"content":" } else if (arr[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"Xilef121"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"Xilef121"},"content":" int n \u003d getIndex(arr);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"Xilef121"},"content":" if (list.size() \u003c\u003d n) {","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"Xilef121"},"content":" throw new DukeException(\"There is nothing to be deleted\");","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"Xilef121"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"Xilef121"},"content":" Task t \u003d list.get(n);","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"Xilef121"},"content":" list.remove(t);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tRemoved the following task:\\n\\t\\t \" + t.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"Xilef121"},"content":" if (list.size() \u003c\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tYou now have \" + list.size() + \" task remaining\");","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"Xilef121"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tYou now have \" + list.size() + \" tasks remaining\");","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"Xilef121"},"content":" } catch (DukeException e){","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\t\" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"Xilef121"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"Xilef121"},"content":" String s \u003d getDescripition(arr);","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"Xilef121"},"content":" String[] newArr \u003d s.split(\" /\");","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"Xilef121"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"Xilef121"},"content":" if (arr[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"Xilef121"},"content":" LocalDateTime deadline \u003d null;","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"Xilef121"},"content":" if (newArr.length \u003c 2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"Xilef121"},"content":" throw new DukeException(\"Incomplete deadline information\");","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"Xilef121"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"Xilef121"},"content":" deadline \u003d LocalDateTime.parse(newArr[1].split(\"by\")[1].trim(), formatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"Xilef121"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"Xilef121"},"content":" throw new DukeException(\"Invalid date/time\");","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tAdded a new task to the list!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"Xilef121"},"content":" Deadline d \u003d new Deadline(newArr[0], deadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"Xilef121"},"content":" list.add(d);","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\t \" + d.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"Xilef121"},"content":" } else if (arr[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tAdded a new task to the list!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"Xilef121"},"content":" Todo td \u003d new Todo(newArr[0]);","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"Xilef121"},"content":" list.add(td);","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\t \" + td.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"Xilef121"},"content":" } else if (arr[0].equals(\"event\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"Xilef121"},"content":" if (newArr.length \u003c 3) {","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"Xilef121"},"content":" throw new DukeException(\"Incomplete event information\");","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"Xilef121"},"content":" LocalDateTime from \u003d null;","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"Xilef121"},"content":" LocalDateTime to \u003d null;","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"Xilef121"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"Xilef121"},"content":" from \u003d LocalDateTime.parse(newArr[1].split(\"from\")[1].trim(), formatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"Xilef121"},"content":" to \u003d LocalDateTime.parse(newArr[2].split(\"to\")[1].trim(), formatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"Xilef121"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"Xilef121"},"content":" throw new DukeException(\"Invalid date/time\");","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tAdded a new task to the list!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"Xilef121"},"content":" Event e \u003d new Event(newArr[0], from, to);","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"Xilef121"},"content":" list.add(e);","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\t \" + e.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"Xilef121"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"Xilef121"},"content":" throw new DukeException(\"Invalid task type\");","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"Xilef121"},"content":" if (list.size() \u003c\u003d 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tYou have \" + list.size() + \" too many task to do!!!\" +","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"Xilef121"},"content":" \"\\n\\t\\tQuickly start working on them!!!\\n\");","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"Xilef121"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tYou have \" + list.size() + \" too many tasks to do!!!\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"Xilef121"},"content":" \"\\n\\t\\tQuickly start working on them!!!\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"Xilef121"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\t\" + e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"Xilef121"},"content":" saveToFile(list);","lastModifiedDate":"2024-02-03"},{"lineNumber":122,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tBye bye, see you next time!!!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":125,"author":{"gitId":"Xilef121"},"content":" private static int getIndex(String[] arr) {","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"Xilef121"},"content":" int index \u003d Integer.parseInt(arr[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"Xilef121"},"content":" return index - 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":129,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":130,"author":{"gitId":"Xilef121"},"content":" private static String getDescripition(String[] arr) {","lastModifiedDate":"2024-01-26"},{"lineNumber":131,"author":{"gitId":"Xilef121"},"content":" StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2024-01-26"},{"lineNumber":132,"author":{"gitId":"Xilef121"},"content":" for (int i \u003d 1; i \u003c arr.length; i++) {","lastModifiedDate":"2024-01-26"},{"lineNumber":133,"author":{"gitId":"Xilef121"},"content":" s.append(arr[i]).append(\" \");","lastModifiedDate":"2024-01-26"},{"lineNumber":134,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":135,"author":{"gitId":"Xilef121"},"content":" return s.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":136,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":138,"author":{"gitId":"Xilef121"},"content":" private static void saveToFile(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-02-03"},{"lineNumber":139,"author":{"gitId":"Xilef121"},"content":" try (FileWriter writer \u003d new FileWriter(FILE_PATH)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":140,"author":{"gitId":"Xilef121"},"content":" for (Task t : list) {","lastModifiedDate":"2024-02-03"},{"lineNumber":141,"author":{"gitId":"Xilef121"},"content":" writer.write(t.toStringForFile() + \"\\n\");","lastModifiedDate":"2024-02-03"},{"lineNumber":142,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":143,"author":{"gitId":"Xilef121"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":144,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"Error saving file: \" + e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":145,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":146,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":147,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":148,"author":{"gitId":"Xilef121"},"content":" private static ArrayList\u003cTask\u003e loadFile() {","lastModifiedDate":"2024-02-03"},{"lineNumber":149,"author":{"gitId":"Xilef121"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-03"},{"lineNumber":150,"author":{"gitId":"Xilef121"},"content":" File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-02-03"},{"lineNumber":151,"author":{"gitId":"Xilef121"},"content":" try (Scanner scanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":152,"author":{"gitId":"Xilef121"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":153,"author":{"gitId":"Xilef121"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":154,"author":{"gitId":"Xilef121"},"content":" Task task \u003d createTaskFromLine(line);","lastModifiedDate":"2024-02-03"},{"lineNumber":155,"author":{"gitId":"Xilef121"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":156,"author":{"gitId":"Xilef121"},"content":" list.add(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":157,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":158,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":159,"author":{"gitId":"Xilef121"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":160,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":161,"author":{"gitId":"Xilef121"},"content":" } catch (NoSuchElementException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":162,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"Error reading file: \" + e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":163,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":164,"author":{"gitId":"Xilef121"},"content":" return list;","lastModifiedDate":"2024-02-03"},{"lineNumber":165,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":166,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":167,"author":{"gitId":"Xilef121"},"content":" private static Task createTaskFromLine(String line) {","lastModifiedDate":"2024-02-03"},{"lineNumber":168,"author":{"gitId":"Xilef121"},"content":" Task t \u003d null;","lastModifiedDate":"2024-02-03"},{"lineNumber":169,"author":{"gitId":"Xilef121"},"content":" String[] parts \u003d line.split(\"\\\\|\");","lastModifiedDate":"2024-02-03"},{"lineNumber":170,"author":{"gitId":"Xilef121"},"content":" String taskType \u003d parts[0].trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":171,"author":{"gitId":"Xilef121"},"content":" String taskStatus \u003d parts[1].trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":172,"author":{"gitId":"Xilef121"},"content":" String taskDescription \u003d parts[2].trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":173,"author":{"gitId":"Xilef121"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-03"},{"lineNumber":174,"author":{"gitId":"Xilef121"},"content":" case \"T\":","lastModifiedDate":"2024-02-03"},{"lineNumber":175,"author":{"gitId":"Xilef121"},"content":" t \u003d new Todo(taskDescription);","lastModifiedDate":"2024-02-03"},{"lineNumber":176,"author":{"gitId":"Xilef121"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":177,"author":{"gitId":"Xilef121"},"content":" case \"D\":","lastModifiedDate":"2024-02-03"},{"lineNumber":178,"author":{"gitId":"Xilef121"},"content":" String taskBy \u003d parts[3].trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":179,"author":{"gitId":"Xilef121"},"content":" LocalDateTime taskDeadline \u003d LocalDateTime.parse((taskBy));","lastModifiedDate":"2024-02-03"},{"lineNumber":180,"author":{"gitId":"Xilef121"},"content":" t \u003d new Deadline(taskDescription, taskDeadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":181,"author":{"gitId":"Xilef121"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":182,"author":{"gitId":"Xilef121"},"content":" case \"E\":","lastModifiedDate":"2024-02-03"},{"lineNumber":183,"author":{"gitId":"Xilef121"},"content":" LocalDateTime taskFrom \u003d LocalDateTime.parse(parts[3].trim());","lastModifiedDate":"2024-02-03"},{"lineNumber":184,"author":{"gitId":"Xilef121"},"content":" LocalDateTime taskTo \u003d LocalDateTime.parse(parts[4].trim());","lastModifiedDate":"2024-02-03"},{"lineNumber":185,"author":{"gitId":"Xilef121"},"content":" t \u003d new Event(taskDescription, taskTo, taskFrom);","lastModifiedDate":"2024-02-03"},{"lineNumber":186,"author":{"gitId":"Xilef121"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":187,"author":{"gitId":"Xilef121"},"content":" default:","lastModifiedDate":"2024-02-03"},{"lineNumber":188,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"Invalid task type: \" + taskType);","lastModifiedDate":"2024-02-03"},{"lineNumber":189,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":190,"author":{"gitId":"Xilef121"},"content":" if (taskStatus.equals(\"1\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":191,"author":{"gitId":"Xilef121"},"content":" t.markDone();","lastModifiedDate":"2024-02-03"},{"lineNumber":192,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":193,"author":{"gitId":"Xilef121"},"content":" return t;","lastModifiedDate":"2024-02-03"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":195,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Xilef121":190,"-":5}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":" public DukeException(String message){","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Xilef121":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":" this.from \u003d from;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":" this.to \u003d to;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Xilef121"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from.format(DateTimeFormatter.ofPattern(\"d MMM yyyy| hh:mm a\")) +","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Xilef121"},"content":" \" to: \" + to.format(DateTimeFormatter.ofPattern(\"d MMM yyyy| hh:mm a\")) + \")\";","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"Xilef121"},"content":" public String toStringForFile() {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"Xilef121"},"content":" return \"E | \" + super.toStringForFile() + \" | \" + this.from + \" | \" + this.to;","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Xilef121":23}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"public class Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":" return (isDone ? \"[X]\" : \"[ ]\"); // mark done task with X","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":" public void markDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Xilef121"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Xilef121"},"content":" public void unmarkDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Xilef121"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Xilef121"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Xilef121"},"content":" return this.getStatusIcon() + \" \" + this.description;","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"Xilef121"},"content":" public String toStringForFile() {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"Xilef121"},"content":" String d \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"Xilef121"},"content":" if (this.isDone) {","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"Xilef121"},"content":" d \u003d \"1\";","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"Xilef121"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"Xilef121"},"content":" d \u003d \"0\";","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"Xilef121"},"content":" return d + \" | \" + this.description;","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Xilef121":35}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":" return \"[T]\" + super.toString().trim();","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":" public String toStringForFile() {","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":" return \"T | \" + super.toStringForFile();","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Xilef121":16}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"todo eat lunch","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":"deadline submit assignment /by 2pm","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":"event birthday party /from 5pm /to 9pm","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":"mark 2","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":"unmark 2","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Xilef121":9}}] +[{"path":"src/main/java/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":" private Task task;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":" public AddCommand(String desc) {","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":" task \u003d new Todo(desc);","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":" public AddCommand(String desc, LocalDateTime deadline) {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":" task \u003d new Deadline(desc, deadline);","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":" public AddCommand(String desc, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Xilef121"},"content":" task \u003d new Event(desc, from, to);","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Xilef121"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Xilef121"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Xilef121"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Xilef121"},"content":" ui.showAdded(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Xilef121"},"content":" ui.showTasksStatus(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Xilef121"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Xilef121"},"content":" return false;","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Xilef121":29}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"public abstract class Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Xilef121":4}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":" protected LocalDateTime deadline;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":" public Deadline(String description, LocalDateTime deadline) {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":" return \"[D]\" + super.toString() + \" (by: \" + deadline.format(DateTimeFormatter.ofPattern(\"d MMM yyyy| hh:mm a\")) + \")\";","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"Xilef121"},"content":" public String toStringForFile() {","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"Xilef121"},"content":" return \"D | \" + super.toStringForFile() + \" | \" + this.deadline;","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Xilef121":21}},{"path":"src/main/java/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":" private final int index;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":" if (tasks.size() \u003c\u003d index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":" throw new DukeException(\"There is nothing to be deleted\");","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Xilef121"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":" tasks.remove(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Xilef121"},"content":" ui.showDeleted(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Xilef121"},"content":" ui.showSize(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Xilef121"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Xilef121"},"content":" return false;","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Xilef121":24}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":" private final Storage storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":" private final Ui ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":" private static final String FILE_NAME \u003d \"duke.txt\";","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":" private static final String FILE_PATH \u003d Paths.get(\".\", FILE_NAME).toString();","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"Xilef121"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Xilef121"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"Xilef121"},"content":" public void run() {","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Xilef121"},"content":" ui.showWelcome();","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Xilef121"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Xilef121"},"content":" while (!isExit) {","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Xilef121"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"Xilef121"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Xilef121"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Xilef121"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Xilef121"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Xilef121"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"Xilef121"},"content":" ui.showError(e);","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Xilef121"},"content":" new Duke(FILE_PATH).run();","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"Xilef121"},"content":"// public static void main(String[] args) {","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Xilef121"},"content":"// Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"Xilef121"},"content":"// ArrayList\u003cTask\u003e list \u003d loadFile();","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"Xilef121"},"content":"// DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-dd-MM HHmm\");","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"Xilef121"},"content":"//","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\tHello, my name is Xilef.\\n\\t\\tHow may I help you today??\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"Xilef121"},"content":"//","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"Xilef121"},"content":"// while (true) {","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"Xilef121"},"content":"// String str \u003d scanner.nextLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"Xilef121"},"content":"// String[] arr \u003d str.split(\" \");","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"Xilef121"},"content":"// if (str.equals(\"bye\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"Xilef121"},"content":"// break;","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"Xilef121"},"content":"// } else if (arr[0].equals(\"list\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"Xilef121"},"content":"// if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\tThere is nothing on your agenda\");","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"Xilef121"},"content":"// else {","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\tThese are the things on your agenda today\");","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"Xilef121"},"content":"// for (int i \u003d 1; i \u003c list.size() + 1; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"Xilef121"},"content":"// Task t \u003d list.get(i - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\t\" + i + \".\" + t.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\");","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"Xilef121"},"content":"// } else if (arr[0].equals(\"unmark\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"Xilef121"},"content":"// Task t \u003d list.get(getIndex(arr));","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"Xilef121"},"content":"// t.unmarkDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\tReminder, you have not completed this task yet:\\n\\t\\t \" + t.toString() + \"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"Xilef121"},"content":"// } else if (arr[0].equals(\"mark\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"Xilef121"},"content":"// Task t \u003d list.get(getIndex(arr));","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"Xilef121"},"content":"// t.markDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\tGreat job, you have accomplished this task:\\n\\t\\t \" + t.toString() + \"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"Xilef121"},"content":"// } else if (arr[0].equals(\"delete\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"Xilef121"},"content":"// try {","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"Xilef121"},"content":"// int n \u003d getIndex(arr);","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"Xilef121"},"content":"// if (list.size() \u003c\u003d n) {","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"Xilef121"},"content":"// throw new DukeException(\"There is nothing to be deleted\");","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"Xilef121"},"content":"// } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"Xilef121"},"content":"// Task t \u003d list.get(n);","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"Xilef121"},"content":"// list.remove(t);","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\tRemoved the following task:\\n\\t\\t \" + t.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"Xilef121"},"content":"// if (list.size() \u003c\u003d 1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\tYou now have \" + list.size() + \" task remaining\");","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"Xilef121"},"content":"// } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\tYou now have \" + list.size() + \" tasks remaining\");","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"Xilef121"},"content":"// } catch (DukeException e){","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\t\" + e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"Xilef121"},"content":"// } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"Xilef121"},"content":"// String s \u003d getDescripition(arr);","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"Xilef121"},"content":"// String[] newArr \u003d s.split(\" /\");","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"Xilef121"},"content":"// try {","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"Xilef121"},"content":"// if (arr[0].equals(\"deadline\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"Xilef121"},"content":"// LocalDateTime deadline \u003d null;","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"Xilef121"},"content":"// if (newArr.length \u003c 2) {","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"Xilef121"},"content":"// throw new DukeException(\"Incomplete deadline information\");","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"Xilef121"},"content":"// try {","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"Xilef121"},"content":"// deadline \u003d LocalDateTime.parse(newArr[1].split(\"by\")[1].trim(), formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"Xilef121"},"content":"//","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"Xilef121"},"content":"// } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"Xilef121"},"content":"// throw new DukeException(\"Invalid date/time\");","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":102,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\tAdded a new task to the list!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"Xilef121"},"content":"// Deadline d \u003d new Deadline(newArr[0], deadline);","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"Xilef121"},"content":"// list.add(d);","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\t \" + d.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":106,"author":{"gitId":"Xilef121"},"content":"// } else if (arr[0].equals(\"todo\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":107,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\tAdded a new task to the list!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":108,"author":{"gitId":"Xilef121"},"content":"// Todo td \u003d new Todo(newArr[0]);","lastModifiedDate":"2024-02-07"},{"lineNumber":109,"author":{"gitId":"Xilef121"},"content":"// list.add(td);","lastModifiedDate":"2024-02-07"},{"lineNumber":110,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\t \" + td.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":111,"author":{"gitId":"Xilef121"},"content":"// } else if (arr[0].equals(\"event\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":112,"author":{"gitId":"Xilef121"},"content":"// if (newArr.length \u003c 3) {","lastModifiedDate":"2024-02-07"},{"lineNumber":113,"author":{"gitId":"Xilef121"},"content":"// throw new DukeException(\"Incomplete event information\");","lastModifiedDate":"2024-02-07"},{"lineNumber":114,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":115,"author":{"gitId":"Xilef121"},"content":"// LocalDateTime from \u003d null;","lastModifiedDate":"2024-02-07"},{"lineNumber":116,"author":{"gitId":"Xilef121"},"content":"// LocalDateTime to \u003d null;","lastModifiedDate":"2024-02-07"},{"lineNumber":117,"author":{"gitId":"Xilef121"},"content":"// try {","lastModifiedDate":"2024-02-07"},{"lineNumber":118,"author":{"gitId":"Xilef121"},"content":"// from \u003d LocalDateTime.parse(newArr[1].split(\"from\")[1].trim(), formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":119,"author":{"gitId":"Xilef121"},"content":"// to \u003d LocalDateTime.parse(newArr[2].split(\"to\")[1].trim(), formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":120,"author":{"gitId":"Xilef121"},"content":"//","lastModifiedDate":"2024-02-07"},{"lineNumber":121,"author":{"gitId":"Xilef121"},"content":"// } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":122,"author":{"gitId":"Xilef121"},"content":"// throw new DukeException(\"Invalid date/time\");","lastModifiedDate":"2024-02-07"},{"lineNumber":123,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":124,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\tAdded a new task to the list!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":125,"author":{"gitId":"Xilef121"},"content":"//","lastModifiedDate":"2024-02-07"},{"lineNumber":126,"author":{"gitId":"Xilef121"},"content":"// Event e \u003d new Event(newArr[0], from, to);","lastModifiedDate":"2024-02-07"},{"lineNumber":127,"author":{"gitId":"Xilef121"},"content":"// list.add(e);","lastModifiedDate":"2024-02-07"},{"lineNumber":128,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\t \" + e.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":129,"author":{"gitId":"Xilef121"},"content":"// } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":130,"author":{"gitId":"Xilef121"},"content":"// throw new DukeException(\"Invalid task type\");","lastModifiedDate":"2024-02-07"},{"lineNumber":131,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":132,"author":{"gitId":"Xilef121"},"content":"// if (list.size() \u003c\u003d 1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":133,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\tYou have \" + list.size() + \" too many task to do!!!\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":134,"author":{"gitId":"Xilef121"},"content":"// \"\\n\\t\\tQuickly start working on them!!!\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":135,"author":{"gitId":"Xilef121"},"content":"// } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":136,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\tYou have \" + list.size() + \" too many tasks to do!!!\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":137,"author":{"gitId":"Xilef121"},"content":"// \"\\n\\t\\tQuickly start working on them!!!\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":138,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":139,"author":{"gitId":"Xilef121"},"content":"// } catch (DukeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":140,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\t\" + e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":141,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":142,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":143,"author":{"gitId":"Xilef121"},"content":"// saveToFile(list);","lastModifiedDate":"2024-02-07"},{"lineNumber":144,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":145,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"\\t\\tBye bye, see you next time!!!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":146,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":147,"author":{"gitId":"Xilef121"},"content":"// private static int getIndex(String[] arr) {","lastModifiedDate":"2024-02-07"},{"lineNumber":148,"author":{"gitId":"Xilef121"},"content":"// int index \u003d Integer.parseInt(arr[1]);","lastModifiedDate":"2024-02-07"},{"lineNumber":149,"author":{"gitId":"Xilef121"},"content":"// return index - 1;","lastModifiedDate":"2024-02-07"},{"lineNumber":150,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":151,"author":{"gitId":"Xilef121"},"content":"//","lastModifiedDate":"2024-02-07"},{"lineNumber":152,"author":{"gitId":"Xilef121"},"content":"// private static String getDescripition(String[] arr) {","lastModifiedDate":"2024-02-07"},{"lineNumber":153,"author":{"gitId":"Xilef121"},"content":"// StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":154,"author":{"gitId":"Xilef121"},"content":"// for (int i \u003d 1; i \u003c arr.length; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":155,"author":{"gitId":"Xilef121"},"content":"// s.append(arr[i]).append(\" \");","lastModifiedDate":"2024-02-07"},{"lineNumber":156,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":157,"author":{"gitId":"Xilef121"},"content":"// return s.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":158,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":159,"author":{"gitId":"Xilef121"},"content":"//","lastModifiedDate":"2024-02-07"},{"lineNumber":160,"author":{"gitId":"Xilef121"},"content":"// private static void saveToFile(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-02-07"},{"lineNumber":161,"author":{"gitId":"Xilef121"},"content":"// try (FileWriter writer \u003d new FileWriter(FILE_PATH)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":162,"author":{"gitId":"Xilef121"},"content":"// for (Task t : list) {","lastModifiedDate":"2024-02-07"},{"lineNumber":163,"author":{"gitId":"Xilef121"},"content":"// writer.write(t.toStringForFile() + \"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":164,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":165,"author":{"gitId":"Xilef121"},"content":"// } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":166,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"Error saving file: \" + e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":167,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":168,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":169,"author":{"gitId":"Xilef121"},"content":"//","lastModifiedDate":"2024-02-07"},{"lineNumber":170,"author":{"gitId":"Xilef121"},"content":"// private static ArrayList\u003cTask\u003e loadFile() {","lastModifiedDate":"2024-02-07"},{"lineNumber":171,"author":{"gitId":"Xilef121"},"content":"// ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-07"},{"lineNumber":172,"author":{"gitId":"Xilef121"},"content":"// File file \u003d new File(FILE_PATH);","lastModifiedDate":"2024-02-07"},{"lineNumber":173,"author":{"gitId":"Xilef121"},"content":"// try (Scanner scanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":174,"author":{"gitId":"Xilef121"},"content":"// while (scanner.hasNextLine()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":175,"author":{"gitId":"Xilef121"},"content":"// String line \u003d scanner.nextLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":176,"author":{"gitId":"Xilef121"},"content":"// Task task \u003d createTaskFromLine(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":177,"author":{"gitId":"Xilef121"},"content":"// if (task !\u003d null) {","lastModifiedDate":"2024-02-07"},{"lineNumber":178,"author":{"gitId":"Xilef121"},"content":"// list.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":179,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":180,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":181,"author":{"gitId":"Xilef121"},"content":"// } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":182,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":183,"author":{"gitId":"Xilef121"},"content":"// } catch (NoSuchElementException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":184,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"Error reading file: \" + e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":185,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":186,"author":{"gitId":"Xilef121"},"content":"// return list;","lastModifiedDate":"2024-02-07"},{"lineNumber":187,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":188,"author":{"gitId":"Xilef121"},"content":"//","lastModifiedDate":"2024-02-07"},{"lineNumber":189,"author":{"gitId":"Xilef121"},"content":"// private static Task createTaskFromLine(String line) {","lastModifiedDate":"2024-02-07"},{"lineNumber":190,"author":{"gitId":"Xilef121"},"content":"// Task t \u003d null;","lastModifiedDate":"2024-02-07"},{"lineNumber":191,"author":{"gitId":"Xilef121"},"content":"// String[] parts \u003d line.split(\"\\\\|\");","lastModifiedDate":"2024-02-07"},{"lineNumber":192,"author":{"gitId":"Xilef121"},"content":"// String taskType \u003d parts[0].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":193,"author":{"gitId":"Xilef121"},"content":"// String taskStatus \u003d parts[1].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":194,"author":{"gitId":"Xilef121"},"content":"// String taskDescription \u003d parts[2].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":195,"author":{"gitId":"Xilef121"},"content":"// switch (taskType) {","lastModifiedDate":"2024-02-07"},{"lineNumber":196,"author":{"gitId":"Xilef121"},"content":"// case \"T\":","lastModifiedDate":"2024-02-07"},{"lineNumber":197,"author":{"gitId":"Xilef121"},"content":"// t \u003d new Todo(taskDescription);","lastModifiedDate":"2024-02-07"},{"lineNumber":198,"author":{"gitId":"Xilef121"},"content":"// break;","lastModifiedDate":"2024-02-07"},{"lineNumber":199,"author":{"gitId":"Xilef121"},"content":"// case \"D\":","lastModifiedDate":"2024-02-07"},{"lineNumber":200,"author":{"gitId":"Xilef121"},"content":"// String taskBy \u003d parts[3].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":201,"author":{"gitId":"Xilef121"},"content":"// LocalDateTime taskDeadline \u003d LocalDateTime.parse((taskBy));","lastModifiedDate":"2024-02-07"},{"lineNumber":202,"author":{"gitId":"Xilef121"},"content":"// t \u003d new Deadline(taskDescription, taskDeadline);","lastModifiedDate":"2024-02-07"},{"lineNumber":203,"author":{"gitId":"Xilef121"},"content":"// break;","lastModifiedDate":"2024-02-07"},{"lineNumber":204,"author":{"gitId":"Xilef121"},"content":"// case \"E\":","lastModifiedDate":"2024-02-07"},{"lineNumber":205,"author":{"gitId":"Xilef121"},"content":"// LocalDateTime taskFrom \u003d LocalDateTime.parse(parts[3].trim());","lastModifiedDate":"2024-02-07"},{"lineNumber":206,"author":{"gitId":"Xilef121"},"content":"// LocalDateTime taskTo \u003d LocalDateTime.parse(parts[4].trim());","lastModifiedDate":"2024-02-07"},{"lineNumber":207,"author":{"gitId":"Xilef121"},"content":"// t \u003d new Event(taskDescription, taskTo, taskFrom);","lastModifiedDate":"2024-02-07"},{"lineNumber":208,"author":{"gitId":"Xilef121"},"content":"// break;","lastModifiedDate":"2024-02-07"},{"lineNumber":209,"author":{"gitId":"Xilef121"},"content":"// default:","lastModifiedDate":"2024-02-07"},{"lineNumber":210,"author":{"gitId":"Xilef121"},"content":"// System.out.println(\"Invalid task type: \" + taskType);","lastModifiedDate":"2024-02-07"},{"lineNumber":211,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":212,"author":{"gitId":"Xilef121"},"content":"// if (taskStatus.equals(\"1\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":213,"author":{"gitId":"Xilef121"},"content":"// t.markDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":214,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":215,"author":{"gitId":"Xilef121"},"content":"// return t;","lastModifiedDate":"2024-02-07"},{"lineNumber":216,"author":{"gitId":"Xilef121"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":217,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"Xilef121":213,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":" public DukeException(String message){","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"Xilef121":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":" this.from \u003d from;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":" this.to \u003d to;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Xilef121"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from.format(DateTimeFormatter.ofPattern(\"d MMM yyyy| hh:mm a\")) +","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Xilef121"},"content":" \" to: \" + to.format(DateTimeFormatter.ofPattern(\"d MMM yyyy| hh:mm a\")) + \")\";","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"Xilef121"},"content":" public String toStringForFile() {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"Xilef121"},"content":" return \"E | \" + super.toStringForFile() + \" | \" + this.from + \" | \" + this.to;","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Xilef121":23}},{"path":"src/main/java/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":" public ExitCommand() {","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":" ui.showExit();","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Xilef121"},"content":" return true;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Xilef121":14}},{"path":"src/main/java/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"public class ListCommand extends Command{","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tThere is nothing on your agenda\");","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":" else {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tThese are the things on your agenda today\");","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":" for (int i \u003d 1; i \u003c tasks.size() + 1; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":" Task t \u003d tasks.get(i - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\t\" + i + \".\" + t.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\");","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Xilef121"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Xilef121"},"content":" return false;","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Xilef121":22}},{"path":"src/main/java/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":" private final int index;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException{","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":" if (tasks.size() \u003c\u003d index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":" throw new DukeException(\"There is nothing to be marked\");","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Xilef121"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":" task.markDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Xilef121"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Xilef121"},"content":" ui.showMarked(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Xilef121"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Xilef121"},"content":" return false;","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Xilef121":24}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":"public class Parser {","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":" static DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-dd-MM HHmm\");","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":" public static Command parse(String str) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":" String[] arr \u003d str.split(\" \");","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":" if (arr[0].equals(\"bye\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":" return new ExitCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":" } else if (arr[0].equals(\"list\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Xilef121"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":" switch (arr[0]) {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Xilef121"},"content":" case \"delete\":","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Xilef121"},"content":" return new DeleteCommand(getIndex(arr));","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Xilef121"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Xilef121"},"content":" return new UnmarkCommand(getIndex(arr));","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Xilef121"},"content":" case \"mark\":","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Xilef121"},"content":" return new MarkCommand(getIndex(arr));","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Xilef121"},"content":" default:","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Xilef121"},"content":" String desc \u003d getDescripition(arr);","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Xilef121"},"content":" String[] newArr \u003d desc.split(\"/\");","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Xilef121"},"content":" switch (arr[0]) {","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Xilef121"},"content":" case \"todo\":","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Xilef121"},"content":" return new AddCommand(newArr[0]);","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Xilef121"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Xilef121"},"content":" if (newArr.length \u003c 2) {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Xilef121"},"content":" throw new DukeException(\"Incomplete deadline information\");","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Xilef121"},"content":" LocalDateTime deadline \u003d null;","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Xilef121"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Xilef121"},"content":" deadline \u003d LocalDateTime.parse(newArr[1].split(\"by\")[1].trim(), formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Xilef121"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Xilef121"},"content":" throw new DukeException(\"Invalid date/time\");","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"Xilef121"},"content":" return new AddCommand(newArr[0], deadline);","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Xilef121"},"content":" case \"event\":","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"Xilef121"},"content":" if (newArr.length \u003c 3) {","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"Xilef121"},"content":" throw new DukeException(\"Incomplete event information\");","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"Xilef121"},"content":" LocalDateTime from \u003d null;","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"Xilef121"},"content":" LocalDateTime to \u003d null;","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"Xilef121"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"Xilef121"},"content":" from \u003d LocalDateTime.parse(newArr[1].split(\"from\")[1].trim(), formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"Xilef121"},"content":" to \u003d LocalDateTime.parse(newArr[2].split(\"to\")[1].trim(), formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"Xilef121"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"Xilef121"},"content":" throw new DukeException(\"Invalid date/time\");","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"Xilef121"},"content":" return new AddCommand(newArr[0], from, to);","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"Xilef121"},"content":" default:","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"Xilef121"},"content":" throw new DukeException(\"Invalid task type\");","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"Xilef121"},"content":" private static int getIndex(String[] arr) {","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"Xilef121"},"content":" int index \u003d Integer.parseInt(arr[1]);","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"Xilef121"},"content":" return index - 1;","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"Xilef121"},"content":" private static String getDescripition(String[] arr) {","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"Xilef121"},"content":" StringBuilder s \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"Xilef121"},"content":" for (int i \u003d 1; i \u003c arr.length; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"Xilef121"},"content":" s.append(arr[i]).append(\" \");","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"Xilef121"},"content":" return s.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Xilef121":71}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"import java.io.File;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":"public class Storage {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":" private static String filePath;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":" Storage.filePath \u003d filePath;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Xilef121"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException{","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Xilef121"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Xilef121"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Xilef121"},"content":" try (Scanner scanner \u003d new Scanner(file)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Xilef121"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Xilef121"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Xilef121"},"content":" Task task \u003d createTaskFromLine(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Xilef121"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Xilef121"},"content":" list.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Xilef121"},"content":" } catch (FileNotFoundException | NoSuchElementException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Xilef121"},"content":" throw new DukeException(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Xilef121"},"content":" return list;","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Xilef121"},"content":" public void save(TaskList tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Xilef121"},"content":" try (FileWriter writer \u003d new FileWriter(filePath)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"Xilef121"},"content":" int size \u003d tasks.size();","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"Xilef121"},"content":" for (int i \u003d 0; i \u003c size; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Xilef121"},"content":" Task t \u003d tasks.get(i);","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"Xilef121"},"content":" writer.write(t.toStringForFile() + \"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"Xilef121"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"Error saving file: \" + e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"Xilef121"},"content":" private static Task createTaskFromLine(String line) {","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"Xilef121"},"content":" Task t \u003d null;","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"Xilef121"},"content":" String[] parts \u003d line.split(\"\\\\|\");","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"Xilef121"},"content":" String taskType \u003d parts[0].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"Xilef121"},"content":" String taskStatus \u003d parts[1].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"Xilef121"},"content":" String taskDescription \u003d parts[2].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"Xilef121"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"Xilef121"},"content":" case \"T\":","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"Xilef121"},"content":" t \u003d new Todo(taskDescription);","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"Xilef121"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"Xilef121"},"content":" case \"D\":","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"Xilef121"},"content":" String taskBy \u003d parts[3].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"Xilef121"},"content":" LocalDateTime taskDeadline \u003d LocalDateTime.parse((taskBy));","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"Xilef121"},"content":" t \u003d new Deadline(taskDescription, taskDeadline);","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"Xilef121"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"Xilef121"},"content":" case \"E\":","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"Xilef121"},"content":" LocalDateTime taskFrom \u003d LocalDateTime.parse(parts[3].trim());","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"Xilef121"},"content":" LocalDateTime taskTo \u003d LocalDateTime.parse(parts[4].trim());","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"Xilef121"},"content":" t \u003d new Event(taskDescription, taskTo, taskFrom);","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"Xilef121"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"Xilef121"},"content":" default:","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"Invalid task type: \" + taskType);","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"Xilef121"},"content":" if (taskStatus.equals(\"1\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"Xilef121"},"content":" t.markDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"Xilef121"},"content":" return t;","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Xilef121":73}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"public class Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":" return (isDone ? \"[X]\" : \"[ ]\"); // mark done task with X","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":" public void markDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"Xilef121"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"Xilef121"},"content":" public void unmarkDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"Xilef121"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"Xilef121"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"Xilef121"},"content":" return this.getStatusIcon() + \" \" + this.description;","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"Xilef121"},"content":" public String toStringForFile() {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"Xilef121"},"content":" String d \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"Xilef121"},"content":" if (this.isDone) {","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"Xilef121"},"content":" d \u003d \"1\";","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"Xilef121"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"Xilef121"},"content":" d \u003d \"0\";","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"Xilef121"},"content":" return d + \" | \" + this.description;","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Xilef121":35}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":"public class TaskList {","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":" private final ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":" public TaskList() {","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":" public TaskList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":" this.tasks \u003d list;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":" public int size() {","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":" return this.tasks.size();","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Xilef121"},"content":" public Task get(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Xilef121"},"content":" return this.tasks.get(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Xilef121"},"content":" public void remove(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Xilef121"},"content":" this.tasks.remove(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Xilef121"},"content":" public void add(Task t) {","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Xilef121"},"content":" this.tasks.add(t);","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Xilef121":28}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":" super(description);","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":" return \"[T]\" + super.toString().trim();","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":" public String toStringForFile() {","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":" return \"T | \" + super.toStringForFile();","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Xilef121":16}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":"public class Ui {","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":" private final Scanner scanner;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":" public Ui() {","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":" this.scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"Error reading file\");","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":" public void showWelcome() {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tHello, my name is Xilef.\\n\\t\\tHow may I help you today??\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Xilef121"},"content":" public void showError(DukeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\t\" + e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Xilef121"},"content":" public void showExit() {","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tBye bye, see you next time!!!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"Xilef121"},"content":" public String readCommand() {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"Xilef121"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"Xilef121"},"content":" public void showAdded(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tAdded a new task to the list!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\t \" + task.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"Xilef121"},"content":" public void showMarked(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tGreat job, you have accomplished this task:\\n\\t\\t \" + task.toString() + \"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"Xilef121"},"content":" public void showUnmarked(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tReminder, you have not completed this task yet:\\n\\t\\t \" + task.toString() + \"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"Xilef121"},"content":" public void showDeleted(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tRemoved the following task:\\n\\t\\t \" + task.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"Xilef121"},"content":" public void showSize(TaskList tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"Xilef121"},"content":" if (tasks.size() \u003c\u003d 1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tYou now have \" + tasks.size() + \" task remaining\");","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"Xilef121"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tYou now have \" + tasks.size() + \" tasks remaining\");","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"Xilef121"},"content":" public void showTasksStatus(TaskList tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"Xilef121"},"content":" if (tasks.size() \u003c\u003d 1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tYou have \" + tasks.size() + \" too many task to do!!!\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"Xilef121"},"content":" \"\\n\\t\\tQuickly start working on them!!!\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"Xilef121"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"Xilef121"},"content":" System.out.println(\"\\t\\tYou have \" + tasks.size() + \" too many tasks to do!!!\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"Xilef121"},"content":" \"\\n\\t\\tQuickly start working on them!!!\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Xilef121":64}},{"path":"src/main/java/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"import java.util.concurrent.LinkedBlockingDeque;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":" private final int index;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"Xilef121"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException{","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"Xilef121"},"content":" if (tasks.size() \u003c\u003d index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"Xilef121"},"content":" throw new DukeException(\"There is nothing to be unmarked\");","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"Xilef121"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"Xilef121"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"Xilef121"},"content":" task.unmarkDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"Xilef121"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"Xilef121"},"content":" ui.showUnmarked(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"Xilef121"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"Xilef121"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"Xilef121"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"Xilef121"},"content":" return false;","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"Xilef121"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"Xilef121"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Xilef121":25}},{"path":"text-ui-test/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"T | 1 | eat lunch","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":"T | 0 | eat lunch ","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"Xilef121":2}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"Xilef121"},"content":"todo eat lunch","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"Xilef121"},"content":"deadline submit assignment /by 2pm","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"Xilef121"},"content":"event birthday party /from 5pm /to 9pm","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"Xilef121"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"Xilef121"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"Xilef121"},"content":"mark 2","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"Xilef121"},"content":"unmark 2","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"Xilef121"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"Xilef121"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"Xilef121":9}}] diff --git a/Xilef121_ip_master/commits.json b/Xilef121_ip_master/commits.json index b23a401c..d25f8617 100644 --- a/Xilef121_ip_master/commits.json +++ b/Xilef121_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Xilef121":[{"date":"2024-01-25","commitResults":[{"hash":"2594c3efc67d5a9e8e8738407e0005901f6e7342","isMergeCommit":false,"messageTitle":"Changed name, added greetings and exiting.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":6}}},{"hash":"bf5c12b0c489d1d56d5f699918194328b577b044","isMergeCommit":false,"messageTitle":"Added echo and bye bye.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"f4b0ef25a7ee7588939e77c558c7a73e536d2b40","isMergeCommit":false,"messageTitle":"Added add and list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"315f99a1a83c4c8b113b6b7fb7c4fdfd24de0eec","isMergeCommit":false,"messageTitle":"Added a Task class, added methods to task and utilised them in Duke for marking and unmarking","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":3}}},{"hash":"71d6515511518ae2ee2887b49c3197694d98c407","isMergeCommit":false,"messageTitle":"Added Deadline, Event, Todo classes. Changed from using susbtring() to split() and implemented a new toString method in Task","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":17}}},{"hash":"09947dce314fd30f92ff463825ca3791d19fc9f4","isMergeCommit":false,"messageTitle":"Made changes to some of the strings, whitespaces, lines and using automated text ui testing.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":6,"deletions":5}}}]},{"date":"2024-01-29","commitResults":[{"hash":"392978f57fd8e4adefd180ac4d1f8f12ec3dc5cf","isMergeCommit":false,"messageTitle":"Added DukeException class, implemented some error catching","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":16}}},{"hash":"79c265cf7e36bb018bf724d3199ee6f27c15f757","isMergeCommit":false,"messageTitle":"Added delete function and added some error catching for list and delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":6}}}]},{"date":"2024-02-03","commitResults":[{"hash":"e63729f2e114e4f1c43ffd34c37497ee8c401346","isMergeCommit":false,"messageTitle":"Add new methods in Duke to read and write files","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":93,"deletions":2}}},{"hash":"8e6ab3a040df4fdc9d3494cf1817e74bfe47fb09","isMergeCommit":false,"messageTitle":"Add date understanding Add new date representation format","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":29,"deletions":16}}},{"hash":"8c58b5c393833c37ac42c59c00eb07bb6d332c19","isMergeCommit":false,"messageTitle":"Add error checking","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":16,"deletions":3}}},{"hash":"9e83889f875aa1715dfe867f79cb3753da7ebaea","isMergeCommit":false,"messageTitle":"Add time to deadlines and events","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":4},"java":{"insertions":25,"deletions":23}}}]}]},"authorFileTypeContributionMap":{"Xilef121":{"java":290,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":9}},"authorContributionVariance":{"Xilef121":4252.625},"authorDisplayNameMap":{"Xilef121":"CS2103T-T13-2 FELI..I ZE"}} +{"authorDailyContributionsMap":{"Xilef121":[{"date":"2024-01-25","commitResults":[{"hash":"2594c3efc67d5a9e8e8738407e0005901f6e7342","isMergeCommit":false,"messageTitle":"Changed name, added greetings and exiting.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":6}}},{"hash":"bf5c12b0c489d1d56d5f699918194328b577b044","isMergeCommit":false,"messageTitle":"Added echo and bye bye.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"f4b0ef25a7ee7588939e77c558c7a73e536d2b40","isMergeCommit":false,"messageTitle":"Added add and list","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}}]},{"date":"2024-01-26","commitResults":[{"hash":"315f99a1a83c4c8b113b6b7fb7c4fdfd24de0eec","isMergeCommit":false,"messageTitle":"Added a Task class, added methods to task and utilised them in Duke for marking and unmarking","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":3}}},{"hash":"71d6515511518ae2ee2887b49c3197694d98c407","isMergeCommit":false,"messageTitle":"Added Deadline, Event, Todo classes. Changed from using susbtring() to split() and implemented a new toString method in Task","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":17}}},{"hash":"09947dce314fd30f92ff463825ca3791d19fc9f4","isMergeCommit":false,"messageTitle":"Made changes to some of the strings, whitespaces, lines and using automated text ui testing.","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":6,"deletions":5}}}]},{"date":"2024-01-29","commitResults":[{"hash":"392978f57fd8e4adefd180ac4d1f8f12ec3dc5cf","isMergeCommit":false,"messageTitle":"Added DukeException class, implemented some error catching","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":16}}},{"hash":"79c265cf7e36bb018bf724d3199ee6f27c15f757","isMergeCommit":false,"messageTitle":"Added delete function and added some error catching for list and delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":6}}}]},{"date":"2024-02-03","commitResults":[{"hash":"e63729f2e114e4f1c43ffd34c37497ee8c401346","isMergeCommit":false,"messageTitle":"Add new methods in Duke to read and write files","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":93,"deletions":2}}},{"hash":"8e6ab3a040df4fdc9d3494cf1817e74bfe47fb09","isMergeCommit":false,"messageTitle":"Add date understanding Add new date representation format","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":29,"deletions":16}}},{"hash":"8c58b5c393833c37ac42c59c00eb07bb6d332c19","isMergeCommit":false,"messageTitle":"Add error checking","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":16,"deletions":3}}},{"hash":"9e83889f875aa1715dfe867f79cb3753da7ebaea","isMergeCommit":false,"messageTitle":"Add time to deadlines and events","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":4},"java":{"insertions":25,"deletions":23}}}]},{"date":"2024-02-07","commitResults":[{"hash":"130abfc810e45064ebc31221851147f9fa26fa86","isMergeCommit":false,"messageTitle":"Add new classes for better OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":582,"deletions":182}}},{"hash":"475bc17bbc0a3a4e001e393c2461ffd055a6aca9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-MoreOOP\u0027","messageBody":"* branch-MoreOOP:\n Add new classes for better OOP\n","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Xilef121":{"java":691,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"Xilef121":29501.45},"authorDisplayNameMap":{"Xilef121":"CS2103T-T13-2 FELI..I ZE"}} diff --git a/YuvBindal_ip_master/authorship.json b/YuvBindal_ip_master/authorship.json index ad747adf..01a4bbef 100644 --- a/YuvBindal_ip_master/authorship.json +++ b/YuvBindal_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":"YuvBindal"},"content":" mainClass.set(\"seedu.mamta.Mamta\");","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"YuvBindal"},"content":" archiveBaseName \u003d \"mamta\"","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":" archiveFileName \u003d \u0027mamta.jar\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"YuvBindal":4,"-":40}},{"path":"data/mamtainput.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"T|X|read book","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"D| |return book|OCTOBER 15 2019 1800","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"E| |project meeting|OCTOBER 29 2004 400|2-4pm","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"T|X|join sports club","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":"T| |borrow book ","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":"T| |borrow book ","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":"D| |return book|Sunday","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":"D| |return book|Sunday","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":"E| |project meeting|Mon 2pm|4pm","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":"E| |project meeting|Mon 2pm|4pm","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":"T| |borrow book ","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":"T| |borrow book ","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":"D| |return book|Sunday","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":"D| |return book|Sunday","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":"E| |project meeting|Mon 2pm|4pm","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":"E| |project meeting|Mon 2pm|4pm","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":"T| |borrow book ","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":"T| |borrow book ","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":"D| |return book|Sunday","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":"D| |return book|Sunday","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":"E| |project meeting|Mon 2pm|4pm","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":"E| |project meeting|Mon 2pm|4pm","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":"T| |borrow book ","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":"T| |borrow book ","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":"D| |return book|Sunday","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":"D| |return book|Sunday","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":"E| |project meeting|Mon 2pm|4pm","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":"E| |project meeting|Mon 2pm|4pm","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":"T| |borrow book ","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":"T| |borrow book ","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":"D| |return book|Sunday","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":"D| |return book|Sunday","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":"E| |project meeting|Mon 2pm|4pm","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":"E| |project meeting|Mon 2pm|4pm","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"YuvBindal":34}},{"path":"src/main/java/seedu/mamta/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":" private final String deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":" Deadline(String content, String deadline) {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":" super(content);","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":" if (deadline.isEmpty()) { //handling the case where deadline does not get a valid deadline","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":" this.deadline \u003d String.valueOf(MamtaException.invalidDates());","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" this.deadline \u003d transformDates(deadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" Deadline(boolean isComplete, String content, String deadline) {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":" super(isComplete, content);","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" this.deadline \u003d transformDates(deadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" public String transformDates(String deadline) {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" String year \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" String month \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":" String day \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" String time \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" String[] splitOutput \u003d deadline.split(\"-\");","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" for (String s : splitOutput) {","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" year \u003d splitOutput[0];","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":" month \u003d splitOutput[1];","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" day \u003d splitOutput[2].split(\" \")[0];","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":" time \u003d splitOutput[2].split(\" \")[1];","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":" LocalDate date \u003d LocalDate.parse(String.format(\"%s-%s-%s\", year, month, day));","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":" year \u003d String.valueOf(date.getYear());","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"YuvBindal"},"content":" month \u003d String.valueOf(date.getMonth());","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"YuvBindal"},"content":" day \u003d String.valueOf(date.getDayOfMonth());","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"%s %s %s %s\", month, day, year, time);","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"YuvBindal"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"YuvBindal"},"content":" return deadline;","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"YuvBindal"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"YuvBindal"},"content":" public Deadline markDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"YuvBindal"},"content":" return new Deadline(true, this.content, this.deadline);","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"YuvBindal"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"YuvBindal"},"content":" public Deadline unmarkTask() {","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"YuvBindal"},"content":" return new Deadline(false, this.content, this.deadline);","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"YuvBindal"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"YuvBindal"},"content":" if (this.isComplete) {","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"D|X|%s|%s\", this.content, this.deadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"D| |%s|%s\", this.content, this.deadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"YuvBindal":58}},{"path":"src/main/java/seedu/mamta/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":" private final String startTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":" private final String endTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":" Event(String content, String startTime, String endTime) {","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":" super(content);","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" if (startTime.isEmpty() || endTime.isEmpty()) { //handling the case where event does not get valid dates.","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":" this.startTime \u003d String.valueOf(MamtaException.invalidDates());","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":" this.endTime \u003d \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" this.startTime \u003d transformDates(startTime);","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":" this.endTime \u003d transformDates(endTime);","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" Event(boolean isComplete, String content, String startTime, String endTime) {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" super(isComplete, content);","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" this.startTime \u003d transformDates(startTime);","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":" this.endTime \u003d transformDates(endTime);","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" public String transformDates(String deadline) {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" String year \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" String month \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":" String day \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" String time \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" String[] splitOutput \u003d deadline.split(\"-\");","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":" for (String s : splitOutput) {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":" year \u003d splitOutput[0];","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"YuvBindal"},"content":" month \u003d splitOutput[1];","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"YuvBindal"},"content":" day \u003d splitOutput[2].split(\" \")[0];","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":" time \u003d splitOutput[2].split(\" \")[1];","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"YuvBindal"},"content":" LocalDate date \u003d LocalDate.parse(String.format(\"%s-%s-%s\", year, month, day));","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"YuvBindal"},"content":" year \u003d String.valueOf(date.getYear());","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"YuvBindal"},"content":" month \u003d String.valueOf(date.getMonth());","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"YuvBindal"},"content":" day \u003d String.valueOf(date.getDayOfMonth());","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"%s %s %s %s\", month, day, year, time);","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"YuvBindal"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"YuvBindal"},"content":" return deadline;","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"YuvBindal"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"YuvBindal"},"content":" public Event markDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"YuvBindal"},"content":" return new Event(true, this.content, this.startTime, this.endTime);","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"YuvBindal"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"YuvBindal"},"content":" public Event unmarkTask() {","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"YuvBindal"},"content":" return new Event(false, this.content, this.startTime, this.endTime);","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"YuvBindal"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"YuvBindal"},"content":" if (this.isComplete) {","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"E|X|%s|%s|%s\", this.content, this.startTime, this.endTime);","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"E| |%s|%s|%s\", this.content, this.startTime, this.endTime);","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"YuvBindal":66}},{"path":"src/main/java/seedu/mamta/Mamta.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"public class Mamta {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":" public static String greet() {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":" return \"Hello! I\u0027m Mamta\\nWhat can I do for you?\";","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":" public static String exit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" return \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" public static String echo(String taskType, String command, int taskNum, String deadline, String endTime) {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":" switch (command) {","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" case \"bye\":","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"------------------------------------------\\n%s\\n------------------------------------------\", Mamta.exit());","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":" case \"list\":","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" StringBuilder returnOutput \u003d new StringBuilder();","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" int count \u003d 0;","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" returnOutput.append(\"------------------------------------------\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":" for (Task item : TaskList.getHistory()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" count +\u003d 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":" returnOutput.append(String.format(\"%d. %s\\n\", count, TaskList.getHistory().get(count - 1)));","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" returnOutput.append(\"------------------------------------------\");","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" return returnOutput.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":" case \"mark\":","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" TaskList.getHistory().set(taskNum - 1, TaskList.getHistory().get(taskNum - 1).markDone());","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"------------------------------------------\\nNice! I\u0027ve marked this task as done\\n%s\\n------------------------------------------\", TaskList.getHistory().get(taskNum - 1));","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":" TaskList.getHistory().set(taskNum - 1, TaskList.getHistory().get(taskNum - 1).unmarkTask());","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"------------------------------------------\\nOK, I\u0027ve marked this task as not done yet:\\n%s\\n------------------------------------------\", TaskList.getHistory().get(taskNum - 1));","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"YuvBindal"},"content":" case \"delete\":","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"YuvBindal"},"content":" Task objToRemove \u003d TaskList.getHistory().get(taskNum - 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":" TaskList.removeTask(objToRemove);","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"------------------------------------------\\nNoted. I\u0027ve removed this task:\\n%s\\nNow you have %d tasks in the list\\n------------------------------------------\", objToRemove, TaskList.getHistory().size());","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"YuvBindal"},"content":" default:","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"YuvBindal"},"content":" //handle case where there is no command","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"YuvBindal"},"content":" if (taskType.equals(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"YuvBindal"},"content":" Todo myTodo \u003d new Todo(command);","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"YuvBindal"},"content":" if (!command.isEmpty()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(myTodo);","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"YuvBindal"},"content":" output \u003d String.format(\"------------------------------------------\\nGot it. I\u0027ve added this task: \\n%s\\nNow you have %d tasks in the list\\n------------------------------------------\", myTodo, TaskList.getHistory().size());","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"YuvBindal"},"content":" output \u003d String.valueOf(MamtaException.incompleteTaskDescription());","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"YuvBindal"},"content":" } else if (taskType.equals(\"deadline\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"YuvBindal"},"content":" Deadline myDead \u003d new Deadline(command, deadline);","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"YuvBindal"},"content":" if (!command.isEmpty()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(myDead);","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"YuvBindal"},"content":" output \u003d String.format(\"------------------------------------------\\nGot it. I\u0027ve added this task: \\n%s\\nNow you have %d tasks in the list\\n------------------------------------------\", myDead, TaskList.getHistory().size());","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"YuvBindal"},"content":" output \u003d String.valueOf(MamtaException.incompleteTaskDescription());","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"YuvBindal"},"content":" } else if (taskType.equals(\"event\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"YuvBindal"},"content":" Event myEve \u003d new Event(command, deadline, endTime);","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"YuvBindal"},"content":" if (!command.isEmpty()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(myEve);","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"YuvBindal"},"content":" output \u003d String.format(\"------------------------------------------\\nGot it. I\u0027ve added this task: \\n%s\\nNow you have %d tasks in the list\\n------------------------------------------\", myEve, TaskList.getHistory().size());","lastModifiedDate":"2024-02-05"},{"lineNumber":64,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"YuvBindal"},"content":" output \u003d String.valueOf(MamtaException.incompleteTaskDescription());","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"YuvBindal"},"content":" //handling the default case where its not a tracked task type, throw an errors","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"YuvBindal"},"content":" output \u003d String.format(\"------------------------------------------\\n%s\\n------------------------------------------\", MamtaException.invalidTaskType());","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"YuvBindal"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"YuvBindal"},"content":" return output;","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"YuvBindal"},"content":" public static void run(String loadTasksFile, String inputNewTasksFile) {","lastModifiedDate":"2024-02-05"},{"lineNumber":78,"author":{"gitId":"YuvBindal"},"content":" System.out.println(Ui.printBotLogo());","lastModifiedDate":"2024-02-05"},{"lineNumber":79,"author":{"gitId":"YuvBindal"},"content":" Ui.loadTasksFromFile(loadTasksFile);","lastModifiedDate":"2024-02-05"},{"lineNumber":80,"author":{"gitId":"YuvBindal"},"content":" Ui.handleInputFiles(inputNewTasksFile);","lastModifiedDate":"2024-02-05"},{"lineNumber":81,"author":{"gitId":"YuvBindal"},"content":" Ui.callSaveTasksIntoFile(loadTasksFile);","lastModifiedDate":"2024-02-05"},{"lineNumber":82,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"YuvBindal"},"content":" public static void main(String[] args) throws FileNotFoundException {","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"YuvBindal"},"content":" Mamta.run(\"./data/mamtainput.txt\", \"./text-ui-test/input.txt\");","lastModifiedDate":"2024-02-05"},{"lineNumber":87,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"YuvBindal":88}},{"path":"src/main/java/seedu/mamta/MamtaException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"public class MamtaException {","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":" private final String exceptionMessage;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":" MamtaException(String exceptionMessage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":" this.exceptionMessage \u003d exceptionMessage;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":" public static MamtaException invalidTaskType() {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":" return new MamtaException(\"Na manega! You entered an invalid task type. Sorry!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":" public static MamtaException incompleteTaskDescription() {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" return new MamtaException(\"Abe, I don\u0027t know what to do! You did not give me instructions!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" public static MamtaException invalidDates() {","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" return new MamtaException(\"Oye, dates enter properly man!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" public static MamtaException IOException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" return new MamtaException(\"Guddhi laal kardunga, error with input files!\");","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"You ran into this error: %s\", this.exceptionMessage);","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"YuvBindal":29}},{"path":"src/main/java/seedu/mamta/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"public class Parser {","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":" public static String transformText(String userOutput) {","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":" String[] splitOutput \u003d userOutput.split(\" \");","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":" String word \u003d \"\";","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":" int taskNum \u003d -1;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":" //in the case user wants to mark/unmark , export this into a helper later","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" switch (splitOutput[0]) {","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" case \"mark\":","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" case \"delete\":","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" word \u003d splitOutput[0];","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":" taskNum \u003d Integer.parseInt(splitOutput[1]);","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" System.out.println(output);","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" return Mamta.echo(\"default\", word, taskNum, \"\", \"\");","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" case \"todo\": {","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":" StringBuilder task \u003d new StringBuilder();","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" for (int i \u003d 1; i \u003c splitOutput.length; i++) {","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":" task.append(splitOutput[i]).append(\" \");","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" System.out.println(Mamta.echo(splitOutput[0], task.toString(), taskNum, \"\", \"\"));","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" return Mamta.echo(splitOutput[0], task.toString(), taskNum, \"\", \"\");","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":" case \"event\": {","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" StringBuilder task \u003d new StringBuilder();","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":" StringBuilder deadline \u003d new StringBuilder();","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":" StringBuilder endTime \u003d new StringBuilder();","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"YuvBindal"},"content":" boolean reachedBy \u003d false;","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"YuvBindal"},"content":" boolean reachedTo \u003d false;","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":" //string splitting logic for parsing tasks","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"YuvBindal"},"content":" for (int i \u003d 1; i \u003c splitOutput.length; i++) {","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"YuvBindal"},"content":" if ((!reachedBy \u0026\u0026 !reachedTo) \u0026\u0026 (!splitOutput[i].equals(\"/by\") \u0026\u0026 !splitOutput[i].equals(\"/from\"))) {","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"YuvBindal"},"content":" if (splitOutput[i+1].equals(\"/by\") || splitOutput[i+1].equals(\"/from\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"YuvBindal"},"content":" task.append(splitOutput[i]);","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"YuvBindal"},"content":" task.append(splitOutput[i]).append(\" \");","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"YuvBindal"},"content":" } else if (!reachedTo \u0026\u0026 (splitOutput[i].equals(\"/by\") || splitOutput[i].equals(\"/from\"))) {","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"YuvBindal"},"content":" reachedBy \u003d true;","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"YuvBindal"},"content":" } else if (reachedBy \u0026\u0026 (!splitOutput[i].equals(\"/to\"))) {","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"YuvBindal"},"content":" if (i+1 \u003d\u003d splitOutput.length || (i+1 !\u003d splitOutput.length \u0026\u0026 splitOutput[i+1].equals(\"/to\"))) {","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"YuvBindal"},"content":" deadline.append(splitOutput[i]);","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"YuvBindal"},"content":" deadline.append(splitOutput[i]).append(\" \");","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"YuvBindal"},"content":" } else if (splitOutput[i].equals(\"/to\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"YuvBindal"},"content":" reachedTo \u003d true;","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"YuvBindal"},"content":" reachedBy \u003d false;","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"YuvBindal"},"content":" } else if (reachedTo) {","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"YuvBindal"},"content":" endTime.append(i + 1 \u003d\u003d splitOutput.length ? splitOutput[i] : splitOutput[i] + \" \");","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"YuvBindal"},"content":" System.out.println(Mamta.echo(splitOutput[0], task.toString(), taskNum, deadline.toString(), endTime.toString()));","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"YuvBindal"},"content":" return Mamta.echo(splitOutput[0], task.toString(), taskNum, deadline.toString(), endTime.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"YuvBindal"},"content":" default:","lastModifiedDate":"2024-02-05"},{"lineNumber":64,"author":{"gitId":"YuvBindal"},"content":" System.out.println(Mamta.echo(\"default\", userOutput, taskNum, \"\", \"\"));","lastModifiedDate":"2024-02-05"},{"lineNumber":65,"author":{"gitId":"YuvBindal"},"content":" return Mamta.echo(\"default\", userOutput, taskNum, \"\", \"\");","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":69,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"YuvBindal":69}},{"path":"src/main/java/seedu/mamta/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":"public class Storage {","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" public static void loadTaskData(String filePath) {","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(filePath))) {","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":" String line;","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" String[] splitOutput \u003d line.split(\"\\\\|\");","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" switch (splitOutput[0]) {","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" case \"T\":","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":" if (splitOutput[1].equals(\"X\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(new Todo(true, splitOutput[2]));","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(new Todo(false, splitOutput[2]));","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":" case \"D\":","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" if (splitOutput[1].equals(\"X\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(new Deadline(true, splitOutput[2],splitOutput[3]));","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(new Deadline(false, splitOutput[2],splitOutput[3]));","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" case \"E\":","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":" if (splitOutput[1].equals(\"X\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(new Event(true, splitOutput[2],splitOutput[3], splitOutput[4]));","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(new Event(false, splitOutput[2],splitOutput[3], splitOutput[4]));","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"YuvBindal"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"YuvBindal"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"YuvBindal"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"YuvBindal"},"content":" public static void saveTasks(String filePath) {","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"YuvBindal"},"content":" //prepare the output to be saved first","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"YuvBindal"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"YuvBindal"},"content":" for (Task task: TaskList.getHistory()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"YuvBindal"},"content":" output.append(task.toString()).append(\"\\n\");","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"YuvBindal"},"content":" //save the output","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"YuvBindal"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(filePath, false))) {","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"YuvBindal"},"content":" writer.write(String.valueOf(output));","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"YuvBindal"},"content":" System.out.println(\"String has been successfully saved to the file.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"YuvBindal"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"YuvBindal"},"content":" System.out.println(MamtaException.IOException());","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"YuvBindal":63}},{"path":"src/main/java/seedu/mamta/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"public class Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":" protected final boolean isComplete;","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":" protected final String content;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":" Task(String content) {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":" this.isComplete \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":" this.content \u003d content;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":" public String getContent() {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" return this.content;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" Task(boolean isComplete, String content)","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":" this.isComplete \u003d isComplete;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" this.content \u003d content;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":" public Task markDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" return new Task(true, this.content);","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" public Task unmarkTask() {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" return new Task(false, this.content);","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" if (this.isComplete) {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"[X] %s\", this.content);","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"[ ] %s\", this.content);","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"YuvBindal":35}},{"path":"src/main/java/seedu/mamta/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":"public class TaskList {","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":" private static ArrayList\u003cTask\u003e history \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":" public static void addTask(Task t) {","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":" history.add(t);","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":" public static void removeTask(Task t) {","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":" history.remove(t);","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":" public static ArrayList\u003cTask\u003e getHistory() {","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" return history;","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" public static void clear() {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" TaskList.history \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"YuvBindal":23}},{"path":"src/main/java/seedu/mamta/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":" Todo(String content) {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":" super(content);","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":" public Todo(boolean isComplete, String content) {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":" super(isComplete, content);","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":" public Todo markDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" return new Todo(true, this.content);","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" public Todo unmarkTask() {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" return new Todo(false, this.content);","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":" if (this.isComplete) {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"T|X|%s\", this.content);","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"T| |%s\", this.content);","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"YuvBindal":31}},{"path":"src/main/java/seedu/mamta/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"import java.io.File;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":"public class Ui {","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":" public static String printBotLogo() {","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":" return \" ____ _ \\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" public static void loadTasksFromFile(String filePath) {","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" Storage.loadTaskData(filePath);","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" public static void callSaveTasksIntoFile(String filePath){","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" Storage.saveTasks(filePath);","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":" public static void handleInputFiles(String inputFilePath) {","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" try (Scanner scanner \u003d new Scanner(new File(inputFilePath))) {","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" String userOutput \u003d scanner.nextLine();","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":" Parser.transformText(userOutput);","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" System.out.println(MamtaException.IOException());","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"YuvBindal":37}},{"path":"src/test/java/seedu/mamta/MamtaTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":"public class MamtaTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" private static final String LOAD_TASKS_FILE \u003d \"./data/mamtainput.txt\";","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":" private static final String INPUT_NEW_TASKS_FILE \u003d \"./text-ui-test/input.txt\";","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" @BeforeEach","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" void setUp() throws FileNotFoundException {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":" // Clearing any existing tasks and setting up a clean state for each test","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" TaskList.clear();","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" void testGreet() {","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" assertEquals(\"Hello! I\u0027m Mamta\\nWhat can I do for you?\", Mamta.greet());","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" void testExit() {","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" assertEquals(\"Bye. Hope to see you again soon!\", Mamta.exit());","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":" void testEchoBye() {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" assertEquals(\"------------------------------------------\\nBye. Hope to see you again soon!\\n------------------------------------------\", Mamta.echo(\"todo\", \"bye\", 0, \"\", \"\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"YuvBindal"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"YuvBindal"},"content":" void testEchoList() {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":" // Add some tasks to the TaskList for testing","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(new Todo(false,\"Task 1\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(new Todo(false,\"Task 2\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"YuvBindal"},"content":" String expectedOutput \u003d \"------------------------------------------\\n1. T| |Task 1\\n2. T| |Task 2\\n------------------------------------------\";","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"YuvBindal"},"content":" assertEquals(expectedOutput, Mamta.echo(\"todo\", \"list\", 0, \"\", \"\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"YuvBindal"},"content":" // Add more test methods as needed for other functionalities","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"YuvBindal"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"YuvBindal"},"content":" void testRun() throws FileNotFoundException {","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"YuvBindal"},"content":" Mamta.run(LOAD_TASKS_FILE, INPUT_NEW_TASKS_FILE);","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"YuvBindal"},"content":" // Add assertions to verify that the method executed as expected","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"YuvBindal":52}},{"path":"src/test/java/seedu/mamta/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":"public class ParserTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":" public void testTransformTextTodo() {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":" String input \u003d \"todo Task 1\";","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" String expectedOutput \u003d \"------------------------------------------\\nGot it. I\u0027ve added this task: \\nT| |Task 1 \\nNow you have 4 tasks in the list\\n------------------------------------------\";","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":" String actualOutput \u003d Parser.transformText(input);","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":" assertEquals(expectedOutput, actualOutput);","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" public void testTransformTextDeadline() {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" String input \u003d \"deadline Complete assignment /by 2024-02-06\";","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":" String expectedOutput \u003d \"------------------------------------------\\nGot it. I\u0027ve added this task: \\nD| |Complete assignment|2024-02-06\\nNow you have 2 tasks in the list\\n------------------------------------------\";","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" String actualOutput \u003d Parser.transformText(input);","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" assertEquals(expectedOutput, actualOutput);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":" public void testTransformTextEvent() {","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" String input \u003d \"event Birthday party /from 2024-02-06 /to 2024-02-07\";","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" String expectedOutput \u003d \"------------------------------------------\\nGot it. I\u0027ve added this task: \\nE| |Birthday party|2024-02-06|2024-02-07\\nNow you have 6 tasks in the list\\n------------------------------------------\";","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" String actualOutput \u003d Parser.transformText(input);","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":" assertEquals(expectedOutput, actualOutput);","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" // Helper method to execute the transformText method and return its output","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"YuvBindal":34}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"todo borrow book","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"list","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"YuvBindal":4}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":"if ! javac -cp ./src/main/java -Xlint:none -d ../bin ./src/main/java/*.java","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-26"},{"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-26"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":"java -classpath ../bin Mamta \u003c ./text-ui-test/input.txt \u003e ./text-ui-test/ACTUAL.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":"cp ./text-ui-test/EXPECTED.TXT ./text-ui-test/EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":"dos2unix ./text-ui-test/ACTUAL.TXT ./text-ui-test/EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":"diff --ignore-all-space ./text-ui-test/ACTUAL.TXT ./text-ui-test/EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"YuvBindal":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":"YuvBindal"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":"checkstyle {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":" mainClass.set(\"seedu.mamta.Mamta\");","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"YuvBindal"},"content":" archiveBaseName \u003d \"mamta\"","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"YuvBindal"},"content":" archiveFileName \u003d \u0027mamta.jar\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"YuvBindal":10,"-":40}},{"path":"data/mamtainput.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"T|X|read book","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"D| |return book|OCTOBER 15 2019 1800","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"E| |project meeting|OCTOBER 29 2004 400|2-4pm","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"T|X|join sports club","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":"T| |borrow book ","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":"D| |return book|Sunday","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":"E| |project meeting|Mon 2pm|4pm","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"YuvBindal":7}},{"path":"src/main/java/seedu/mamta/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":" * Represents a task with a deadline.","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":" * Inherits properties and methods from the Task class.","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" * The deadline of the task.","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":" private final String deadline;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":" * Constructs a Deadline object with the given content and deadline.","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" * @param content The content of the task.","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" * @param deadline The deadline of the task.","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" Deadline(String content, String deadline) {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" super(content);","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" if (deadline.isEmpty()) { //handling the case where deadline does not get a valid deadline","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":" this.deadline \u003d String.valueOf(MamtaException.invalidDates());","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":" this.deadline \u003d setDates(deadline);","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" * Constructs a Deadline object with the given completion status, content, and deadline.","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":" * @param isComplete The completion status of the task.","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" * @param content The content of the task.","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":" * @param deadline The deadline of the task.","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"YuvBindal"},"content":" Deadline(boolean isComplete, String content, String deadline) {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"YuvBindal"},"content":" super(isComplete, content);","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":" this.deadline \u003d setDates(deadline);","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"YuvBindal"},"content":" * Transforms the input deadline into a standardized format.","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"YuvBindal"},"content":" * @param deadline The input deadline.","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"YuvBindal"},"content":" * @return The transformed deadline in a standardized format.","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"YuvBindal"},"content":" public String setDates(String deadline) {","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"YuvBindal"},"content":" String year \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"YuvBindal"},"content":" String month \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"YuvBindal"},"content":" String day \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"YuvBindal"},"content":" String time \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"YuvBindal"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"YuvBindal"},"content":" String[] splitOutput \u003d deadline.split(\"-\");","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"YuvBindal"},"content":" for (String s : splitOutput) {","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"YuvBindal"},"content":" year \u003d splitOutput[0];","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"YuvBindal"},"content":" month \u003d splitOutput[1];","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"YuvBindal"},"content":" day \u003d splitOutput[2].split(\" \")[0];","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"YuvBindal"},"content":" time \u003d splitOutput[2].split(\" \")[1];","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"YuvBindal"},"content":" LocalDate date \u003d LocalDate.parse(String.format(\"%s-%s-%s\", year, month, day));","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"YuvBindal"},"content":" year \u003d String.valueOf(date.getYear());","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"YuvBindal"},"content":" month \u003d String.valueOf(date.getMonth());","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"YuvBindal"},"content":" day \u003d String.valueOf(date.getDayOfMonth());","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"%s %s %s %s\", month, day, year, time);","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"YuvBindal"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"YuvBindal"},"content":" return deadline;","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"YuvBindal"},"content":" * Marks the task as done.","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"YuvBindal"},"content":" * @return A new Deadline object with the task marked as done.","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"YuvBindal"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"YuvBindal"},"content":" public Deadline markDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"YuvBindal"},"content":" return new Deadline(true, this.content, this.deadline);","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"YuvBindal"},"content":" * Marks the task as not done.","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"YuvBindal"},"content":" * @return A new Deadline object with the task marked as not done.","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"YuvBindal"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"YuvBindal"},"content":" public Deadline unmarkTask() {","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"YuvBindal"},"content":" return new Deadline(false, this.content, this.deadline);","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"YuvBindal"},"content":" * Returns a string representation of the Deadline object.","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"YuvBindal"},"content":" * @return A string representation of the Deadline object.","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"YuvBindal"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"YuvBindal"},"content":" if (this.isComplete) {","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"D|X|%s|%s\", this.content, this.deadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"D| |%s|%s\", this.content, this.deadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"YuvBindal":97}},{"path":"src/main/java/seedu/mamta/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":" * Represents a task with a scheduled start and end time.","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":" * Inherits properties and methods from the Task class.","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":" * The start time of the event.","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" private final String startTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" * The end time of the event.","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":" private final String endTime;","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" * Constructs an Event object with the given content, start time, and end time.","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":" * @param content The content of the event task.","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" * @param startTime The start time of the event.","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":" * @param endTime The end time of the event.","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" Event(String content, String startTime, String endTime) {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" super(content);","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":" if (startTime.isEmpty() || endTime.isEmpty()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" this.startTime \u003d String.valueOf(MamtaException.invalidDates());","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":" this.endTime \u003d \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":" this.startTime \u003d setDates(startTime);","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":" this.endTime \u003d setDates(endTime);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"YuvBindal"},"content":" * Constructs an Event object with the given completion status, content, start time, and end time.","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"YuvBindal"},"content":" * @param isComplete The completion status of the event task.","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"YuvBindal"},"content":" * @param content The content of the event task.","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"YuvBindal"},"content":" * @param startTime The start time of the event.","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"YuvBindal"},"content":" * @param endTime The end time of the event.","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"YuvBindal"},"content":" Event(boolean isComplete, String content, String startTime, String endTime) {","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"YuvBindal"},"content":" super(isComplete, content);","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"YuvBindal"},"content":" this.startTime \u003d setDates(startTime);","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"YuvBindal"},"content":" this.endTime \u003d setDates(endTime);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"YuvBindal"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"YuvBindal"},"content":" * Transforms the input deadline into a standardized format.","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"YuvBindal"},"content":" * @param deadline The input deadline.","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"YuvBindal"},"content":" * @return The transformed deadline in a standardized format.","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"YuvBindal"},"content":" public String setDates(String deadline) {","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"YuvBindal"},"content":" String year \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"YuvBindal"},"content":" String month \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"YuvBindal"},"content":" String day \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"YuvBindal"},"content":" String time \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"YuvBindal"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"YuvBindal"},"content":" String[] splitOutput \u003d deadline.split(\"-\");","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"YuvBindal"},"content":" for (String s : splitOutput) {","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"YuvBindal"},"content":" year \u003d splitOutput[0];","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"YuvBindal"},"content":" month \u003d splitOutput[1];","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"YuvBindal"},"content":" day \u003d splitOutput[2].split(\" \")[0];","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"YuvBindal"},"content":" time \u003d splitOutput[2].split(\" \")[1];","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"YuvBindal"},"content":" LocalDate date \u003d LocalDate.parse(String.format(\"%s-%s-%s\", year, month, day));","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"YuvBindal"},"content":" year \u003d String.valueOf(date.getYear());","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"YuvBindal"},"content":" month \u003d String.valueOf(date.getMonth());","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"YuvBindal"},"content":" day \u003d String.valueOf(date.getDayOfMonth());","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"%s %s %s %s\", month, day, year, time);","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"YuvBindal"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"YuvBindal"},"content":" return deadline;","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"YuvBindal"},"content":" * Marks the event task as done.","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"YuvBindal"},"content":" * @return A new Event object with the event task marked as done.","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"YuvBindal"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"YuvBindal"},"content":" public Event markDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"YuvBindal"},"content":" return new Event(true, this.content, this.startTime, this.endTime);","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"YuvBindal"},"content":" * Marks the event task as not done.","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"YuvBindal"},"content":" * @return A new Event object with the event task marked as not done.","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"YuvBindal"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"YuvBindal"},"content":" public Event unmarkTask() {","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"YuvBindal"},"content":" return new Event(false, this.content, this.startTime, this.endTime);","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"YuvBindal"},"content":" * Returns a string representation of the Event object.","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"YuvBindal"},"content":" * @return A string representation of the Event object.","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"YuvBindal"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"YuvBindal"},"content":" if (this.isComplete) {","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"E|X|%s|%s|%s\", this.content, this.startTime, this.endTime);","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"E| |%s|%s|%s\", this.content, this.startTime, this.endTime);","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"YuvBindal":109}},{"path":"src/main/java/seedu/mamta/Mamta.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":" * Main class for the Mamta task manager application.","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":"public class Mamta {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" * Generates a greeting message.","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":" * @return A greeting message.","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" public static String greet() {","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" return \"Hello! I\u0027m Mamta\\nWhat can I do for you?\";","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":" * Generates a farewell message.","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" * @return A farewell message.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" public static String exit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":" return \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" * Echoes the input command based on its type and parameters.","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":" * @param taskType The type of the task.","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" * @param command The command to be executed.","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":" * @param taskNum The task number (if applicable).","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" * @param deadline The deadline (if applicable).","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":" * @param endTime The end time (if applicable).","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":" * @return A response based on the input command.","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"YuvBindal"},"content":" public static String echo(String taskType, String command, int taskNum, String deadline, String endTime) {","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"YuvBindal"},"content":" switch (command) {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"YuvBindal"},"content":" case \"find\":","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"------------------------------------------\\nHere are the matching tasks in your list: \\n%s\\n------------------------------------------\", TaskList.searchOutput(taskType));","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"YuvBindal"},"content":" case \"bye\":","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"------------------------------------------\\n%s\\n------------------------------------------\", Mamta.exit());","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"YuvBindal"},"content":" case \"list\":","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"YuvBindal"},"content":" StringBuilder returnOutput \u003d new StringBuilder();","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"YuvBindal"},"content":" int count \u003d 0;","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"YuvBindal"},"content":" returnOutput.append(\"------------------------------------------\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"YuvBindal"},"content":" for (Task item : TaskList.getTasks()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"YuvBindal"},"content":" count +\u003d 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"YuvBindal"},"content":" returnOutput.append(String.format(\"%d. %s\\n\", count, TaskList.getTasks().get(count - 1)));","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"YuvBindal"},"content":" returnOutput.append(\"------------------------------------------\");","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"YuvBindal"},"content":" return returnOutput.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"YuvBindal"},"content":" case \"mark\":","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"YuvBindal"},"content":" TaskList.getTasks().set(taskNum - 1, TaskList.getTasks().get(taskNum - 1).markDone());","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"------------------------------------------\\nNice! I\u0027ve marked this task as done\\n%s\\n------------------------------------------\", TaskList.getTasks().get(taskNum - 1));","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"YuvBindal"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"YuvBindal"},"content":" TaskList.getTasks().set(taskNum - 1, TaskList.getTasks().get(taskNum - 1).unmarkTask());","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"------------------------------------------\\nOK, I\u0027ve marked this task as not done yet:\\n%s\\n------------------------------------------\", TaskList.getTasks().get(taskNum - 1));","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"YuvBindal"},"content":" case \"delete\":","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"YuvBindal"},"content":" Task objToRemove \u003d TaskList.getTasks().get(taskNum - 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"YuvBindal"},"content":" TaskList.removeTask(objToRemove);","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"------------------------------------------\\nNoted. I\u0027ve removed this task:\\n%s\\nNow you have %d tasks in the list\\n------------------------------------------\", objToRemove, TaskList.getTasks().size());","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"YuvBindal"},"content":" default:","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"YuvBindal"},"content":" //handle case where there is no command","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"YuvBindal"},"content":" if (taskType.equals(\"todo\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"YuvBindal"},"content":" Todo myTodo \u003d new Todo(command);","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"YuvBindal"},"content":" if (!command.isEmpty()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(myTodo);","lastModifiedDate":"2024-02-05"},{"lineNumber":70,"author":{"gitId":"YuvBindal"},"content":" output \u003d String.format(\"------------------------------------------\\nGot it. I\u0027ve added this task: \\n%s\\nNow you have %d tasks in the list\\n------------------------------------------\", myTodo, TaskList.getTasks().size());","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"YuvBindal"},"content":" output \u003d String.valueOf(MamtaException.incompleteTaskDescription());","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"YuvBindal"},"content":" } else if (taskType.equals(\"deadline\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"YuvBindal"},"content":" Deadline myDead \u003d new Deadline(command, deadline);","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"YuvBindal"},"content":" if (!command.isEmpty()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(myDead);","lastModifiedDate":"2024-02-05"},{"lineNumber":78,"author":{"gitId":"YuvBindal"},"content":" output \u003d String.format(\"------------------------------------------\\nGot it. I\u0027ve added this task: \\n%s\\nNow you have %d tasks in the list\\n------------------------------------------\", myDead, TaskList.getTasks().size());","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"YuvBindal"},"content":" output \u003d String.valueOf(MamtaException.incompleteTaskDescription());","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"YuvBindal"},"content":" } else if (taskType.equals(\"event\")) {","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"YuvBindal"},"content":" Event myEve \u003d new Event(command, deadline, endTime);","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"YuvBindal"},"content":" if (!command.isEmpty()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(myEve);","lastModifiedDate":"2024-02-05"},{"lineNumber":86,"author":{"gitId":"YuvBindal"},"content":" output \u003d String.format(\"------------------------------------------\\nGot it. I\u0027ve added this task: \\n%s\\nNow you have %d tasks in the list\\n------------------------------------------\", myEve, TaskList.getTasks().size());","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"YuvBindal"},"content":" output \u003d String.valueOf(MamtaException.incompleteTaskDescription());","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"YuvBindal"},"content":" //handling the default case where its not a tracked task type, throw an errors","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"YuvBindal"},"content":" output \u003d String.format(\"------------------------------------------\\n%s\\n------------------------------------------\", MamtaException.invalidTaskType());","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"YuvBindal"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"YuvBindal"},"content":" return output;","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"YuvBindal"},"content":" * Runs the Mamta application.","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"YuvBindal"},"content":" * @param loadTasksFile The file path for loading tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"YuvBindal"},"content":" * @param inputNewTasksFile The file path for inputting new tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"YuvBindal"},"content":" public static void run(String loadTasksFile, String inputNewTasksFile) {","lastModifiedDate":"2024-02-05"},{"lineNumber":106,"author":{"gitId":"YuvBindal"},"content":" System.out.println(Ui.printBotLogo());","lastModifiedDate":"2024-02-05"},{"lineNumber":107,"author":{"gitId":"YuvBindal"},"content":" Ui.loadTasksFromFile(loadTasksFile);","lastModifiedDate":"2024-02-05"},{"lineNumber":108,"author":{"gitId":"YuvBindal"},"content":" Ui.handleInputFiles(inputNewTasksFile);","lastModifiedDate":"2024-02-05"},{"lineNumber":109,"author":{"gitId":"YuvBindal"},"content":" Ui.callSaveTasksIntoFile(loadTasksFile);","lastModifiedDate":"2024-02-05"},{"lineNumber":110,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"YuvBindal"},"content":" * Main method to run the Mamta application.","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"YuvBindal"},"content":" * @param args Command-line arguments.","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"YuvBindal"},"content":" * @throws FileNotFoundException If the specified file is not found.","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":118,"author":{"gitId":"YuvBindal"},"content":" public static void main(String[] args) throws FileNotFoundException {","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"YuvBindal"},"content":" Mamta.run(\"./data/mamtainput.txt\", \"./text-ui-test/input.txt\");","lastModifiedDate":"2024-02-05"},{"lineNumber":120,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"YuvBindal":121}},{"path":"src/main/java/seedu/mamta/MamtaException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":" * Custom exception class for Mamta task manager application.","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":" * Used to handle various types of exceptions.","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":"public class MamtaException {","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":" * The exception message.","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":" private final String exceptionMessage;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" * Constructs a MamtaException object with the given exception message.","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":" * @param exceptionMessage The exception message.","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" MamtaException(String exceptionMessage) {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":" this.exceptionMessage \u003d exceptionMessage;","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":" * Returns a MamtaException object for an invalid task type.","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" * @return A MamtaException object for an invalid task type.","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" public static MamtaException invalidTaskType() {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" return new MamtaException(\"Na manega! You entered an invalid task type. Sorry!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":" * Returns a MamtaException object for an incomplete task description.","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" * @return A MamtaException object for an incomplete task description.","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":" public static MamtaException incompleteTaskDescription() {","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"YuvBindal"},"content":" return new MamtaException(\"Abe, I don\u0027t know what to do! You did not give me instructions!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"YuvBindal"},"content":" * Returns a MamtaException object for invalid dates.","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"YuvBindal"},"content":" * @return A MamtaException object for invalid dates.","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"YuvBindal"},"content":" public static MamtaException invalidDates() {","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"YuvBindal"},"content":" return new MamtaException(\"Oye, dates enter properly man!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"YuvBindal"},"content":" * Returns a MamtaException object for an IOException.","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"YuvBindal"},"content":" * @return A MamtaException object for an IOException.","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"YuvBindal"},"content":" public static MamtaException IOException() {","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"YuvBindal"},"content":" return new MamtaException(\"Guddhi laal kardunga, error with input files!\");","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"YuvBindal"},"content":" * Returns a string representation of the MamtaException object.","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"YuvBindal"},"content":" * @return A string representation of the MamtaException object.","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"YuvBindal"},"content":" public String toString() {","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"You ran into this error: %s\", this.exceptionMessage);","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"YuvBindal":61}},{"path":"src/main/java/seedu/mamta/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":" * Parses user input and transforms it into a format suitable for further processing.","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":"public class Parser {","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":" * Transforms user output into a format suitable for further processing.","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":" * @param userOutput The user\u0027s output.","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" * @return Transformed output for further processing.","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":" public static String transformText(String userOutput) {","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" String[] splitOutput \u003d userOutput.split(\" \");","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" String word \u003d \"\";","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" int taskNum \u003d -1;","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" //in the case user wants to mark/unmark , export this into a helper later","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" switch (splitOutput[0]) {","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":" case \"find\":","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" word \u003d splitOutput[0];","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":" StringBuilder searchQuery \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" for (int i \u003d 1; i \u003c splitOutput.length; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" searchQuery.append(splitOutput[i]);","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":" String echoOut \u003d Mamta.echo(searchQuery.toString(), word, taskNum, \"\", \"\");","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" System.out.println(echoOut);","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":" return echoOut;","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" case \"mark\":","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":" case \"delete\":","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"YuvBindal"},"content":" word \u003d splitOutput[0];","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"YuvBindal"},"content":" taskNum \u003d Integer.parseInt(splitOutput[1]);","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":" System.out.println(output);","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"YuvBindal"},"content":" return Mamta.echo(\"default\", word, taskNum, \"\", \"\");","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"YuvBindal"},"content":" case \"todo\": {","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"YuvBindal"},"content":" StringBuilder task \u003d new StringBuilder();","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"YuvBindal"},"content":" for (int i \u003d 1; i \u003c splitOutput.length; i++) {","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"YuvBindal"},"content":" task.append(splitOutput[i]).append(\" \");","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"YuvBindal"},"content":" String echoOutt \u003d Mamta.echo(splitOutput[0], task.toString(), taskNum, \"\", \"\");","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"YuvBindal"},"content":" System.out.println(echoOutt);","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"YuvBindal"},"content":" return echoOutt;","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"YuvBindal"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"YuvBindal"},"content":" case \"event\": {","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"YuvBindal"},"content":" StringBuilder task \u003d new StringBuilder();","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"YuvBindal"},"content":" StringBuilder deadline \u003d new StringBuilder();","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"YuvBindal"},"content":" StringBuilder endTime \u003d new StringBuilder();","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"YuvBindal"},"content":" boolean reachedBy \u003d false;","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"YuvBindal"},"content":" boolean reachedTo \u003d false;","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"YuvBindal"},"content":" //string splitting logic for parsing tasks","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"YuvBindal"},"content":" for (int i \u003d 1; i \u003c splitOutput.length; i++) {","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"YuvBindal"},"content":" if ((!reachedBy \u0026\u0026 !reachedTo) \u0026\u0026 (!splitOutput[i].equals(\"/by\") \u0026\u0026 !splitOutput[i].equals(\"/from\"))) {","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"YuvBindal"},"content":" if (splitOutput[i+1].equals(\"/by\") || splitOutput[i+1].equals(\"/from\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"YuvBindal"},"content":" task.append(splitOutput[i]);","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"YuvBindal"},"content":" task.append(splitOutput[i]).append(\" \");","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"YuvBindal"},"content":" } else if (!reachedTo \u0026\u0026 (splitOutput[i].equals(\"/by\") || splitOutput[i].equals(\"/from\"))) {","lastModifiedDate":"2024-02-05"},{"lineNumber":64,"author":{"gitId":"YuvBindal"},"content":" reachedBy \u003d true;","lastModifiedDate":"2024-02-05"},{"lineNumber":65,"author":{"gitId":"YuvBindal"},"content":" } else if (reachedBy \u0026\u0026 (!splitOutput[i].equals(\"/to\"))) {","lastModifiedDate":"2024-02-05"},{"lineNumber":66,"author":{"gitId":"YuvBindal"},"content":" if (i+1 \u003d\u003d splitOutput.length || (i+1 !\u003d splitOutput.length \u0026\u0026 splitOutput[i+1].equals(\"/to\"))) {","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"YuvBindal"},"content":" deadline.append(splitOutput[i]);","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":69,"author":{"gitId":"YuvBindal"},"content":" deadline.append(splitOutput[i]).append(\" \");","lastModifiedDate":"2024-02-05"},{"lineNumber":70,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":71,"author":{"gitId":"YuvBindal"},"content":" } else if (splitOutput[i].equals(\"/to\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":72,"author":{"gitId":"YuvBindal"},"content":" reachedTo \u003d true;","lastModifiedDate":"2024-02-05"},{"lineNumber":73,"author":{"gitId":"YuvBindal"},"content":" reachedBy \u003d false;","lastModifiedDate":"2024-02-05"},{"lineNumber":74,"author":{"gitId":"YuvBindal"},"content":" } else if (reachedTo) {","lastModifiedDate":"2024-02-05"},{"lineNumber":75,"author":{"gitId":"YuvBindal"},"content":" endTime.append(i + 1 \u003d\u003d splitOutput.length ? splitOutput[i] : splitOutput[i] + \" \");","lastModifiedDate":"2024-02-05"},{"lineNumber":76,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":77,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":78,"author":{"gitId":"YuvBindal"},"content":" String echOut \u003d Mamta.echo(splitOutput[0], task.toString(), taskNum, deadline.toString(), endTime.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"YuvBindal"},"content":" System.out.println(echOut);","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"YuvBindal"},"content":" return echOut;","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":82,"author":{"gitId":"YuvBindal"},"content":" default:","lastModifiedDate":"2024-02-05"},{"lineNumber":83,"author":{"gitId":"YuvBindal"},"content":" String eOut \u003d Mamta.echo(\"default\", userOutput, taskNum, \"\", \"\");","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"YuvBindal"},"content":" System.out.println(eOut);","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"YuvBindal"},"content":" return eOut;","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":87,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":88,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":89,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"YuvBindal":90}},{"path":"src/main/java/seedu/mamta/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":" * Manages loading and saving of task data to and from file.","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":"public class Storage {","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" * Loads task data from the specified file.","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":" * @param filePath The path to the file containing task data.","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" public static void loadTaskData(String filePath) {","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(filePath))) {","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" String line;","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" String[] splitOutput \u003d line.split(\"\\\\|\");","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" switch (splitOutput[0]) {","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":" case \"T\":","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" if (splitOutput[1].equals(\"X\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(new Todo(true, splitOutput[2]));","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(new Todo(false, splitOutput[2]));","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" case \"D\":","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":" if (splitOutput[1].equals(\"X\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(new Deadline(true, splitOutput[2],splitOutput[3]));","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(new Deadline(false, splitOutput[2],splitOutput[3]));","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"YuvBindal"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"YuvBindal"},"content":" case \"E\":","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"YuvBindal"},"content":" if (splitOutput[1].equals(\"X\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(new Event(true, splitOutput[2],splitOutput[3], splitOutput[4]));","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(new Event(false, splitOutput[2],splitOutput[3], splitOutput[4]));","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"YuvBindal"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"YuvBindal"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"YuvBindal"},"content":" System.out.println(MamtaException.IOException());","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"YuvBindal"},"content":" * Saves tasks to the specified file.","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"YuvBindal"},"content":" * @param filePath The path to the file where tasks will be saved.","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"YuvBindal"},"content":" public static void saveTasks(String filePath) {","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"YuvBindal"},"content":" //prepare the output to be saved first","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"YuvBindal"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"YuvBindal"},"content":" for (Task task: TaskList.getTasks()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"YuvBindal"},"content":" output.append(task.toString()).append(\"\\n\");","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"YuvBindal"},"content":" //save the output","lastModifiedDate":"2024-02-05"},{"lineNumber":64,"author":{"gitId":"YuvBindal"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(filePath, false))) {","lastModifiedDate":"2024-02-05"},{"lineNumber":65,"author":{"gitId":"YuvBindal"},"content":" writer.write(String.valueOf(output));","lastModifiedDate":"2024-02-05"},{"lineNumber":66,"author":{"gitId":"YuvBindal"},"content":" System.out.println(\"String has been successfully saved to the file.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"YuvBindal"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"YuvBindal"},"content":" System.out.println(MamtaException.IOException());","lastModifiedDate":"2024-02-05"},{"lineNumber":69,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":70,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":71,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":72,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":73,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":74,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"YuvBindal":74}},{"path":"src/main/java/seedu/mamta/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":" * Represents a generic task.","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":"public class Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":" * Indicates whether the task is complete.","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" protected final boolean isComplete;","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" * The content of the task.","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":" protected final String content;","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":" * Constructs a Task object with the given content.","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" * @param content The content of the task.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" Task(String content) {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":" this.isComplete \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" this.content \u003d content;","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":" * Returns the content of the task.","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" * @return The content of the task.","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" public String getContent() {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":" return this.content;","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":" * Constructs a Task object with the given completion status and content.","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"YuvBindal"},"content":" * @param isComplete The completion status of the task.","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"YuvBindal"},"content":" * @param content The content of the task.","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"YuvBindal"},"content":" Task(boolean isComplete, String content)","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"YuvBindal"},"content":" {","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"YuvBindal"},"content":" this.isComplete \u003d isComplete;","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"YuvBindal"},"content":" this.content \u003d content;","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"YuvBindal"},"content":" * Marks the task as done.","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"YuvBindal"},"content":" * @return A new Task object with the task marked as done.","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"YuvBindal"},"content":" public Task markDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"YuvBindal"},"content":" return new Task(true, this.content);","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"YuvBindal"},"content":" * Marks the task as not done.","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"YuvBindal"},"content":" * @return A new Task object with the task marked as not done.","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"YuvBindal"},"content":" public Task unmarkTask() {","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"YuvBindal"},"content":" return new Task(false, this.content);","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"YuvBindal"},"content":" * Returns a string representation of the Task object.","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"YuvBindal"},"content":" * @return A string representation of the Task object.","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"YuvBindal"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"YuvBindal"},"content":" if (this.isComplete) {","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"[X] %s\", this.content);","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"[ ] %s\", this.content);","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"YuvBindal":73}},{"path":"src/main/java/seedu/mamta/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":" * Manages the list of tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":"public class TaskList {","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" * List to store the history of tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":" private static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":" * Adds a task to the list.","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" * @param t The task to be added.","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":" public static void addTask(Task t) {","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" tasks.add(t);","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" * Removes a task from the list.","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":" * @param t The task to be removed.","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" public static void removeTask(Task t) {","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" tasks.remove(t);","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" * Retrieves the history of tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":" * @return The list of tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"YuvBindal"},"content":" public static ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"YuvBindal"},"content":" return tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"YuvBindal"},"content":" * Clears the list of tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"YuvBindal"},"content":" public static void clear() {","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"YuvBindal"},"content":" TaskList.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"YuvBindal"},"content":" public static String searchOutput(String keyword) {","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"YuvBindal"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"YuvBindal"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"YuvBindal"},"content":" if (tasks.get(i).getContent().contains(keyword) ) {","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"YuvBindal"},"content":" output.append(String.format(\"%d. %s\\n\", i + 1, tasks.get(i).toString()));","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"YuvBindal"},"content":" return output.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"YuvBindal":56}},{"path":"src/main/java/seedu/mamta/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":" * Represents a todo task.","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":" * Inherits properties and methods from the Task class.","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":" * Constructs a Todo object with the given content.","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" * @param content The content of the todo task.","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":" Todo(String content) {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" super(content);","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" * Constructs a Todo object with the given completion status and content.","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":" * @param isComplete The completion status of the todo task.","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" * @param content The content of the todo task.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" public Todo(boolean isComplete, String content) {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":" super(isComplete, content);","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" * Marks the todo task as done.","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" * @return A new Todo object with the todo task marked as done.","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":" public Todo markDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" return new Todo(true, this.content);","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"YuvBindal"},"content":" * Marks the todo task as not done.","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":" * @return A new Todo object with the todo task marked as not done.","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"YuvBindal"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"YuvBindal"},"content":" public Todo unmarkTask() {","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"YuvBindal"},"content":" return new Todo(false, this.content);","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"YuvBindal"},"content":" * Returns a string representation of the Todo object.","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"YuvBindal"},"content":" * @return A string representation of the Todo object.","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"YuvBindal"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"YuvBindal"},"content":" if (this.isComplete) {","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"T|X|%s\", this.content);","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"YuvBindal"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"YuvBindal"},"content":" return String.format(\"T| |%s\", this.content);","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"YuvBindal":56}},{"path":"src/main/java/seedu/mamta/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"import java.io.File;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":" * Manages the user interface of the Mamta application.","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":"public class Ui {","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":" * Prints the bot logo.","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" * @return The bot logo as a string.","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":" public static String printBotLogo() {","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" return \" ____ _ \\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":" * Loads tasks from the specified file path.","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" * @param filePath The path to the file containing tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" public static void loadTasksFromFile(String filePath) {","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":" Storage.loadTaskData(filePath);","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":" * Saves tasks into the specified file path.","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":" * @param filePath The path to the file where tasks will be saved.","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"YuvBindal"},"content":" public static void callSaveTasksIntoFile(String filePath){","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":" Storage.saveTasks(filePath);","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"YuvBindal"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"YuvBindal"},"content":" * Handles input files.","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"YuvBindal"},"content":" * @param inputFilePath The path to the file containing user inputs.","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"YuvBindal"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"YuvBindal"},"content":" public static void handleInputFiles(String inputFilePath) {","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"YuvBindal"},"content":" try (Scanner scanner \u003d new Scanner(new File(inputFilePath))) {","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"YuvBindal"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"YuvBindal"},"content":" String userOutput \u003d scanner.nextLine();","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"YuvBindal"},"content":" Parser.transformText(userOutput);","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"YuvBindal"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"YuvBindal"},"content":" System.out.println(MamtaException.IOException());","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"YuvBindal":55}},{"path":"src/test/java/seedu/mamta/MamtaTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":"public class MamtaTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" private static final String LOAD_TASKS_FILE \u003d \"./data/mamtainput.txt\";","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":" private static final String INPUT_NEW_TASKS_FILE \u003d \"./text-ui-test/input.txt\";","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" @BeforeEach","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":" void setUp() throws FileNotFoundException {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":" // Clearing any existing tasks and setting up a clean state for each test","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" TaskList.clear();","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" void testGreet() {","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" assertEquals(\"Hello! I\u0027m Mamta\\nWhat can I do for you?\", Mamta.greet());","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" void testExit() {","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" assertEquals(\"Bye. Hope to see you again soon!\", Mamta.exit());","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":" void testEchoBye() {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" assertEquals(\"------------------------------------------\\nBye. Hope to see you again soon!\\n------------------------------------------\", Mamta.echo(\"todo\", \"bye\", 0, \"\", \"\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"YuvBindal"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"YuvBindal"},"content":" void testEchoList() {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"YuvBindal"},"content":" // Add some tasks to the TaskList for testing","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(new Todo(false,\"Task 1\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"YuvBindal"},"content":" TaskList.addTask(new Todo(false,\"Task 2\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"YuvBindal"},"content":" String expectedOutput \u003d \"------------------------------------------\\n1. T| |Task 1\\n2. T| |Task 2\\n------------------------------------------\";","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"YuvBindal"},"content":" assertEquals(expectedOutput, Mamta.echo(\"todo\", \"list\", 0, \"\", \"\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"YuvBindal"},"content":" // Add more test methods as needed for other functionalities","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"YuvBindal"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"YuvBindal"},"content":" void testRun() throws FileNotFoundException {","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"YuvBindal"},"content":" Mamta.run(LOAD_TASKS_FILE, INPUT_NEW_TASKS_FILE);","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"YuvBindal"},"content":" // Add assertions to verify that the method executed as expected","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"YuvBindal":52}},{"path":"src/test/java/seedu/mamta/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"package seedu.mamta;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"YuvBindal"},"content":"public class ParserTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"YuvBindal"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"YuvBindal"},"content":" public void testTransformTextTodo() {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"YuvBindal"},"content":" String input \u003d \"todo Task 1\";","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"YuvBindal"},"content":" String expectedOutput \u003d \"------------------------------------------\\nGot it. I\u0027ve added this task: \\nT| |Task 1 \\nNow you have 4 tasks in the list\\n------------------------------------------\";","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"YuvBindal"},"content":" String actualOutput \u003d Parser.transformText(input);","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"YuvBindal"},"content":" assertEquals(expectedOutput, actualOutput);","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"YuvBindal"},"content":" public void testTransformTextDeadline() {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"YuvBindal"},"content":" String input \u003d \"deadline Complete assignment /by 2024-02-06\";","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"YuvBindal"},"content":" String expectedOutput \u003d \"------------------------------------------\\nGot it. I\u0027ve added this task: \\nD| |Complete assignment|2024-02-06\\nNow you have 2 tasks in the list\\n------------------------------------------\";","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"YuvBindal"},"content":" String actualOutput \u003d Parser.transformText(input);","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"YuvBindal"},"content":" assertEquals(expectedOutput, actualOutput);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"YuvBindal"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"YuvBindal"},"content":" public void testTransformTextEvent() {","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":" String input \u003d \"event Birthday party /from 2024-02-06 /to 2024-02-07\";","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":" String expectedOutput \u003d \"------------------------------------------\\nGot it. I\u0027ve added this task: \\nE| |Birthday party|2024-02-06|2024-02-07\\nNow you have 6 tasks in the list\\n------------------------------------------\";","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"YuvBindal"},"content":" String actualOutput \u003d Parser.transformText(input);","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"YuvBindal"},"content":" assertEquals(expectedOutput, actualOutput);","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"YuvBindal"},"content":" // Helper method to execute the transformText method and return its output","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"YuvBindal"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"YuvBindal"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"YuvBindal":34}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"YuvBindal"},"content":"todo borrow book","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"YuvBindal"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"YuvBindal"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"YuvBindal"},"content":"find book","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"YuvBindal"},"content":"list","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"YuvBindal":5}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"YuvBindal"},"content":"if ! javac -cp ./src/main/java -Xlint:none -d ../bin ./src/main/java/*.java","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-26"},{"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-26"},{"lineNumber":23,"author":{"gitId":"YuvBindal"},"content":"java -classpath ../bin Mamta \u003c ./text-ui-test/input.txt \u003e ./text-ui-test/ACTUAL.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"YuvBindal"},"content":"cp ./text-ui-test/EXPECTED.TXT ./text-ui-test/EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"YuvBindal"},"content":"dos2unix ./text-ui-test/ACTUAL.TXT ./text-ui-test/EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"YuvBindal"},"content":"diff --ignore-all-space ./text-ui-test/ACTUAL.TXT ./text-ui-test/EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"YuvBindal":5,"-":33}}] diff --git a/YuvBindal_ip_master/commits.json b/YuvBindal_ip_master/commits.json index 6ea7227c..0277d4a8 100644 --- a/YuvBindal_ip_master/commits.json +++ b/YuvBindal_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"YuvBindal":[{"date":"2024-01-26","commitResults":[{"hash":"c8cb9d1d436517dc87b1b134dd6abe8014d0bdcf","isMergeCommit":false,"messageTitle":"Level 0 Commit","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":25,"deletions":0},"bat":{"insertions":21,"deletions":0},"sh":{"insertions":38,"deletions":0},"md":{"insertions":62,"deletions":0}}},{"hash":"d3ad6bbb418776bae0118aeb70c14444ae5d77d7","isMergeCommit":false,"messageTitle":"Level 0 Commit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"f9004892f59d1e8b86d216eb3bcd23ee10bfffdf","isMergeCommit":false,"messageTitle":"Level 0 Commit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"56243ca5037ab311521e9577feb3ee6e42278a7a","isMergeCommit":true,"messageTitle":"Fixing remote and local versions","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0c7bc68e19a463c4295f9e012b0e02945fa5e0bf","isMergeCommit":false,"messageTitle":"Level 0 Commit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"305fc618c8232fdb46a71bfcf34e6a2a401721fe","isMergeCommit":false,"messageTitle":"Level 1 Commit","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"2b75ebf2acfb8ae0576d63dede2564862cc2daef","isMergeCommit":false,"messageTitle":"Level 2 Commit","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":6}}},{"hash":"47aa141ea84d44710070707c03ec73552c71f288","isMergeCommit":false,"messageTitle":"Level 3 Commit","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":10}}},{"hash":"0f87896f998c110e5ccb12f69f59ad599f2c81e3","isMergeCommit":false,"messageTitle":"Level 4 Commit","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":163,"deletions":27}}}]},{"date":"2024-01-27","commitResults":[{"hash":"7f804dc5f992aa8458a8d94b104d96ffa8b54d1b","isMergeCommit":false,"messageTitle":"A-TextUITesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":60,"deletions":58},"sh":{"insertions":5,"deletions":5}}},{"hash":"222cc52d7f63f652ec5e1bfaeb3a76ab9e7148dd","isMergeCommit":false,"messageTitle":"Level 5 Commit","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":67,"deletions":13}}},{"hash":"578df55b7be28bab602f34f0c328d5b6cbf1071a","isMergeCommit":false,"messageTitle":"Level 6 Commit","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":5,"deletions":0}}}]},{"date":"2024-02-03","commitResults":[{"hash":"a3cf099ed372eb8b22e773e8f3e18d2d761e3048","isMergeCommit":false,"messageTitle":"Level 7 Commit","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":4},"java":{"insertions":85,"deletions":9}}},{"hash":"ed4060ca5cbacca50d27f60e330d1739df1c9f61","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"4bb91bc69231f17add0c6caa88b9e4a2172d099c","isMergeCommit":false,"messageTitle":"Level 8 Commit","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":5},"java":{"insertions":64,"deletions":9}}},{"hash":"4d48c0c7f05f5cefb90b34fed23674443dc30831","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-05","commitResults":[{"hash":"c892fa24b75367b864b39432bf542ab542f56c3c","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":2},"java":{"insertions":204,"deletions":169}}},{"hash":"7464ef434307af607c82e279572c8074acae924f","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["OOP"],"fileTypesAndContributionMap":{}},{"hash":"8290a2351e8d90668afd03d2e58db5cf5fe8e4f1","isMergeCommit":false,"messageTitle":"A-Package","messageBody":"","tags":["A-Package"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":19,"deletions":0}}},{"hash":"76363bc42af8e774ff501fd7c0791ec6894cd27e","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"45372e2e0bf1978a2ac9b616e71e1cf2d214c559","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":8,"deletions":1},"txt":{"insertions":3,"deletions":0}}},{"hash":"3dfa15696ae22a733d62544fbcf2d74ccb672c45","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":8},"txt":{"insertions":3,"deletions":0}}}]},{"date":"2024-02-06","commitResults":[{"hash":"87deaf1a942083cf26b938df62c91183a4e07ce9","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":2},"txt":{"insertions":10,"deletions":10},"java":{"insertions":108,"deletions":18}}},{"hash":"19ed5feee51d5cc36e3e0a612bbe50327c15b12f","isMergeCommit":false,"messageTitle":"A-Jar","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"YuvBindal":{"java":585,"md":0,"fxml":0,"sh":5,"bat":0,"gradle":4,"txt":38}},"authorContributionVariance":{"YuvBindal":21871.734},"authorDisplayNameMap":{"YuvBindal":"CS2103-F15-3 BIND.. YUV"}} +{"authorDailyContributionsMap":{"YuvBindal":[{"date":"2024-01-26","commitResults":[{"hash":"c8cb9d1d436517dc87b1b134dd6abe8014d0bdcf","isMergeCommit":false,"messageTitle":"Level 0 Commit","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":25,"deletions":0},"bat":{"insertions":21,"deletions":0},"sh":{"insertions":38,"deletions":0},"md":{"insertions":62,"deletions":0}}},{"hash":"d3ad6bbb418776bae0118aeb70c14444ae5d77d7","isMergeCommit":false,"messageTitle":"Level 0 Commit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"f9004892f59d1e8b86d216eb3bcd23ee10bfffdf","isMergeCommit":false,"messageTitle":"Level 0 Commit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"56243ca5037ab311521e9577feb3ee6e42278a7a","isMergeCommit":true,"messageTitle":"Fixing remote and local versions","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0c7bc68e19a463c4295f9e012b0e02945fa5e0bf","isMergeCommit":false,"messageTitle":"Level 0 Commit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":0}}},{"hash":"305fc618c8232fdb46a71bfcf34e6a2a401721fe","isMergeCommit":false,"messageTitle":"Level 1 Commit","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"2b75ebf2acfb8ae0576d63dede2564862cc2daef","isMergeCommit":false,"messageTitle":"Level 2 Commit","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":6}}},{"hash":"47aa141ea84d44710070707c03ec73552c71f288","isMergeCommit":false,"messageTitle":"Level 3 Commit","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":10}}},{"hash":"0f87896f998c110e5ccb12f69f59ad599f2c81e3","isMergeCommit":false,"messageTitle":"Level 4 Commit","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":163,"deletions":27}}}]},{"date":"2024-01-27","commitResults":[{"hash":"7f804dc5f992aa8458a8d94b104d96ffa8b54d1b","isMergeCommit":false,"messageTitle":"A-TextUITesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":60,"deletions":58},"sh":{"insertions":5,"deletions":5}}},{"hash":"222cc52d7f63f652ec5e1bfaeb3a76ab9e7148dd","isMergeCommit":false,"messageTitle":"Level 5 Commit","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":67,"deletions":13}}},{"hash":"578df55b7be28bab602f34f0c328d5b6cbf1071a","isMergeCommit":false,"messageTitle":"Level 6 Commit","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":5,"deletions":0}}}]},{"date":"2024-02-03","commitResults":[{"hash":"a3cf099ed372eb8b22e773e8f3e18d2d761e3048","isMergeCommit":false,"messageTitle":"Level 7 Commit","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":4},"java":{"insertions":85,"deletions":9}}},{"hash":"ed4060ca5cbacca50d27f60e330d1739df1c9f61","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"4bb91bc69231f17add0c6caa88b9e4a2172d099c","isMergeCommit":false,"messageTitle":"Level 8 Commit","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":5},"java":{"insertions":64,"deletions":9}}},{"hash":"4d48c0c7f05f5cefb90b34fed23674443dc30831","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-05","commitResults":[{"hash":"c892fa24b75367b864b39432bf542ab542f56c3c","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":2},"java":{"insertions":204,"deletions":169}}},{"hash":"7464ef434307af607c82e279572c8074acae924f","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["OOP","A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"8290a2351e8d90668afd03d2e58db5cf5fe8e4f1","isMergeCommit":false,"messageTitle":"A-Package","messageBody":"","tags":["A-Packages","A-Package"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":19,"deletions":0}}},{"hash":"76363bc42af8e774ff501fd7c0791ec6894cd27e","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"45372e2e0bf1978a2ac9b616e71e1cf2d214c559","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":8,"deletions":1},"txt":{"insertions":3,"deletions":0}}},{"hash":"3dfa15696ae22a733d62544fbcf2d74ccb672c45","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":8},"txt":{"insertions":3,"deletions":0}}}]},{"date":"2024-02-06","commitResults":[{"hash":"87deaf1a942083cf26b938df62c91183a4e07ce9","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":2},"txt":{"insertions":10,"deletions":10},"java":{"insertions":108,"deletions":18}}},{"hash":"19ed5feee51d5cc36e3e0a612bbe50327c15b12f","isMergeCommit":false,"messageTitle":"A-Jar","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}},{"hash":"1f11dc49a5fe96d595b747543feb0e7a77143850","isMergeCommit":false,"messageTitle":"A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":281,"deletions":12}}},{"hash":"3945ee51b01a05f66203181701fc4ac33e1e2ef0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"335c2e8c6ead39bf0a2f8e0d3f6498f3e498fbc0","isMergeCommit":false,"messageTitle":"A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":66,"deletions":67}}},{"hash":"fdc006552ba93c6321b4b6621c0183e2348c7a23","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-07","commitResults":[{"hash":"59c1c25c6574801b81e78fa7b2829c48e592c95f","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":33},"java":{"insertions":32,"deletions":6}}},{"hash":"7a4bc47df829f8efdd6ee0a1526347b3af54fd36","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"3bc45188bfc32b98271b1e23bbeafa0e02169ac8","isMergeCommit":false,"messageTitle":"A-CheckStyle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"java":{"insertions":0,"deletions":1}}},{"hash":"c89fb9ed73ceefd0c63daca389fc866866fe4550","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-CheckStyle\u0027","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"YuvBindal":{"java":878,"md":0,"fxml":0,"sh":5,"bat":0,"gradle":10,"txt":12}},"authorContributionVariance":{"YuvBindal":32835.31},"authorDisplayNameMap":{"YuvBindal":"CS2103-F15-3 BIND.. YUV"}} diff --git a/ZhiWei1010_ip_master/authorship.json b/ZhiWei1010_ip_master/authorship.json index 98d033d7..f976ba4a 100644 --- a/ZhiWei1010_ip_master/authorship.json +++ b/ZhiWei1010_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"# duke.Duke project template","lastModifiedDate":"2024-02-04"},{"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":"ZhiWei1010"},"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-02-04"},{"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":{"ZhiWei1010":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":"ZhiWei1010"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-06"},{"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":"ZhiWei1010"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":"checkstyle {","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"ZhiWei1010":6,"-":42}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd MM yyyy HHmm\");","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":" this.by \u003d LocalDateTime.parse(by, formatter);","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" return \"[D][\" + this.getStatusIcon() + \"] \" + super.toString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MM-dd-yyyy HH:mm\")) + \")\";","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"ZhiWei1010":20}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.Scanner; // Import the Scanner class","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" private Storage storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":" private Ui ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" public Duke(Path filePath) {","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":" tasks \u003d new TaskList(storage.loadTasksFromFile());","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":" public static String currentDir \u003d System.getProperty(\"user.dir\");","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":" public static final Path filePath \u003d Paths.get(currentDir, \"src\", \"main\", \"java\", \"duke\", \"data\", \"data.txt\");","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":" public void run() {","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showWelcome();","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":" Scanner scanner \u003d new Scanner(System.in); // Create scanner","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":" String command \u003d scanner.nextLine(); // Read user command","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ZhiWei1010"},"content":" String[] tempArr;","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":" Task currTask;","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ZhiWei1010"},"content":" while (!command.equals(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":" Duke.checkCommand(command);","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":" command \u003d scanner.nextLine(); // Read next command","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":" if (command.equals(\"list\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showListMessage();","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":" this.tasks.showTasks();","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":" command \u003d scanner.nextLine(); // Read next command","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":" continue;","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"ZhiWei1010"},"content":" if (command.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"ZhiWei1010"},"content":" tempArr \u003d command.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"ZhiWei1010"},"content":" currTask \u003d this.tasks.getTask(Integer.parseInt(tempArr[1]));","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"ZhiWei1010"},"content":" this.tasks.deleteTask(Integer.parseInt(tempArr[1]) - 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDeleteMessage(currTask, tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"ZhiWei1010"},"content":" this.storage.updateStorageFile(this.tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"ZhiWei1010"},"content":" command \u003d scanner.nextLine(); // Read next command","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"ZhiWei1010"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"ZhiWei1010"},"content":" if (command.startsWith(\"find\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"ZhiWei1010"},"content":" tempArr \u003d command.split(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showFindMessage();","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"ZhiWei1010"},"content":" this.tasks.findTask(tempArr[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"ZhiWei1010"},"content":" if (command.contains(\"todo\") || command.contains(\"deadline\") || command.contains(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"ZhiWei1010"},"content":" tempArr \u003d command.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"ZhiWei1010"},"content":" switch (tempArr[0]) {","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"ZhiWei1010"},"content":" case (\"todo\"):","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"ZhiWei1010"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":80,"author":{"gitId":"ZhiWei1010"},"content":" Todo currTodo \u003d new Todo(command.substring(5));","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"ZhiWei1010"},"content":" this.tasks.addTask(currTodo);","lastModifiedDate":"2024-02-05"},{"lineNumber":82,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showToDoMessage(currTodo, this.tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":83,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":84,"author":{"gitId":"ZhiWei1010"},"content":" this.storage.updateStorageFile(this.tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":85,"author":{"gitId":"ZhiWei1010"},"content":" } catch (TodoException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":86,"author":{"gitId":"ZhiWei1010"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":87,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"ZhiWei1010"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"ZhiWei1010"},"content":" case (\"deadline\"):","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":92,"author":{"gitId":"ZhiWei1010"},"content":" tempArr \u003d (command.substring(9)).split(\"/\");","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"ZhiWei1010"},"content":" Deadline currDeadline \u003d new Deadline(tempArr[0], tempArr[1].substring(3));","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"ZhiWei1010"},"content":" this.tasks.addTask(currDeadline);","lastModifiedDate":"2024-02-05"},{"lineNumber":95,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDeadlineMessage(currDeadline,this.tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":96,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":97,"author":{"gitId":"ZhiWei1010"},"content":" this.storage.updateStorageFile(this.tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":98,"author":{"gitId":"ZhiWei1010"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":100,"author":{"gitId":"ZhiWei1010"},"content":" case (\"event\"):","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":102,"author":{"gitId":"ZhiWei1010"},"content":" tempArr \u003d (command.substring(6)).split(\"/\");","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"ZhiWei1010"},"content":" Event currEvent \u003d new Event(tempArr[0], tempArr[1].substring(5), tempArr[2].substring(3));","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"ZhiWei1010"},"content":" this.tasks.addTask(currEvent);","lastModifiedDate":"2024-02-05"},{"lineNumber":105,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showEventMessage(currEvent, this.tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":106,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":107,"author":{"gitId":"ZhiWei1010"},"content":" this.storage.updateStorageFile(this.tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":108,"author":{"gitId":"ZhiWei1010"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"ZhiWei1010"},"content":" command \u003d scanner.nextLine(); // Read next command","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"ZhiWei1010"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"ZhiWei1010"},"content":" if (command.contains(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"ZhiWei1010"},"content":" tempArr \u003d command.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"ZhiWei1010"},"content":" currTask \u003d this.tasks.getTask(Integer.parseInt(tempArr[1]) - 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":117,"author":{"gitId":"ZhiWei1010"},"content":" switch (tempArr[0]) {","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"ZhiWei1010"},"content":" case (\"mark\"):","lastModifiedDate":"2024-01-25"},{"lineNumber":119,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":120,"author":{"gitId":"ZhiWei1010"},"content":" this.tasks.markTask(Integer.parseInt(tempArr[1]) - 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":121,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showMarkMessage(currTask);","lastModifiedDate":"2024-02-05"},{"lineNumber":122,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":123,"author":{"gitId":"ZhiWei1010"},"content":" this.storage.updateStorageFile(this.tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":124,"author":{"gitId":"ZhiWei1010"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"ZhiWei1010"},"content":" case (\"unmark\"):","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":128,"author":{"gitId":"ZhiWei1010"},"content":" this.tasks.unMarkTask(Integer.parseInt(tempArr[1]) - 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":129,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showUnmarkMessage(currTask);","lastModifiedDate":"2024-02-05"},{"lineNumber":130,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":131,"author":{"gitId":"ZhiWei1010"},"content":" this.storage.updateStorageFile(this.tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":132,"author":{"gitId":"ZhiWei1010"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"ZhiWei1010"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showWrongCommand();","lastModifiedDate":"2024-02-05"},{"lineNumber":136,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"ZhiWei1010"},"content":" command \u003d scanner.nextLine(); // Read next command","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"ZhiWei1010"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":140,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":141,"author":{"gitId":"ZhiWei1010"},"content":" command \u003d scanner.nextLine(); // Read next command","lastModifiedDate":"2024-01-24"},{"lineNumber":142,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":143,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":144,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":145,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":146,"author":{"gitId":"ZhiWei1010"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-05"},{"lineNumber":147,"author":{"gitId":"ZhiWei1010"},"content":" new Duke(filePath).run();","lastModifiedDate":"2024-02-05"},{"lineNumber":148,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":150,"author":{"gitId":"ZhiWei1010"},"content":" public static void checkCommand(String command) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"ZhiWei1010"},"content":" String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-25"},{"lineNumber":152,"author":{"gitId":"ZhiWei1010"},"content":" if (!(command.startsWith(\"todo\") || command.startsWith(\"deadline\") || command.startsWith(\"event\") || command.startsWith(\"list\") || command.startsWith(\"bye\") || command.startsWith(\"delete\") || command.contains(\"mark\") || command.contains(\"find\"))) {","lastModifiedDate":"2024-02-06"},{"lineNumber":153,"author":{"gitId":"ZhiWei1010"},"content":" throw new DukeException(\"\\n\" + line + \"\\nOPPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\\n\" + line);","lastModifiedDate":"2024-01-25"},{"lineNumber":154,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":156,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ZhiWei1010":154,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"ZhiWei1010":10}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":" protected String from;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":" protected String to;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":" return \"[E][\" + this.getStatusIcon() + \"] \" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"ZhiWei1010":18}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"public class Parser {","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":" public void parse(String fullCommand) throws DukeException {","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" if (!(fullCommand.startsWith(\"todo\") || fullCommand.startsWith(\"deadline\") || fullCommand.startsWith(\"event\") || fullCommand.startsWith(\"list\") || fullCommand.startsWith(\"bye\") || fullCommand.startsWith(\"delete\"))) {","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":" ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" throw new DukeException(\"OPPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":" String[] commandSplit \u003d fullCommand.split(\" \");","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"ZhiWei1010":20}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import java.io.*;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"public class Storage {","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" private File file;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":" private Path filePath;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" public Storage(Path filePath) {","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" this.file \u003d new File(String.valueOf(filePath));","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" public boolean isFileCreated() {","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" return Files.exists(this.filePath);","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":" public void createStorageFile() {","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":" if (this.file.createNewFile()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"File created: \" + this.file.getName());","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"File already exists.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"cannot create file\" + e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":" public ArrayList\u003cTask\u003e loadTasksFromFile() throws DukeException{","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"ZhiWei1010"},"content":" FileInputStream readTasks \u003d new FileInputStream(this.file);","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":" ObjectInputStream readStream \u003d new ObjectInputStream(readTasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":" // The file will only contain ArrayList\u003cTask\u003e object.","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":" // So it is safe to typecast.","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":" @SuppressWarnings(\"unchecked\")","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":" ArrayList\u003cTask\u003e myList \u003d (ArrayList\u003cTask\u003e) readStream.readObject();","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":" readStream.close();","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":" return myList;","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":" catch (Exception e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Error loading task: \" + e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Error in loading task!\");","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":" return new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"ZhiWei1010"},"content":" public void updateStorageFile(TaskList taskList) {","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"ZhiWei1010"},"content":" try{","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"ZhiWei1010"},"content":" FileOutputStream writeData \u003d new FileOutputStream(this.file);","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"ZhiWei1010"},"content":" ObjectOutputStream writeStream \u003d new ObjectOutputStream(writeData);","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"ZhiWei1010"},"content":" writeStream.writeObject(taskList.getListOfTasks());","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"ZhiWei1010"},"content":" writeStream.flush();","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"ZhiWei1010"},"content":" writeStream.close();","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"ZhiWei1010"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":64,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Error updating storage file: \" + e);","lastModifiedDate":"2024-02-05"},{"lineNumber":65,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":66,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":69,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"ZhiWei1010":69}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"public class Task implements Serializable {","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" public void setDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":" public void setNotDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":" return this.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"ZhiWei1010":29}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"public class TaskList {","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":" private ArrayList\u003cTask\u003e myList;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":" public TaskList(ArrayList\u003cTask\u003e myList) {","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" this.myList \u003d myList;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" public TaskList() {","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":" this.myList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" this.myList.add(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":" public Task getTask(int i) {","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":" return this.myList.get(i - 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":" myList.remove(index - 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":" public void showTasks() {","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":" int index \u003d 1;","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":" for (Task task : this.myList) {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(index + \".\" + task);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"ZhiWei1010"},"content":" index++;","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":" public int getSize() {","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":" return this.myList.size();","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":" public ArrayList\u003cTask\u003e getListOfTasks() {","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":" return this.myList;","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":" public void markTask(int index) {","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":" this.myList.get(index).setDone();","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":" public void unMarkTask(int index) {","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":" this.myList.get(index).setNotDone();","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":" public void findTask(String text) {","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"ZhiWei1010"},"content":" int index \u003d 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"ZhiWei1010"},"content":" for (Task task : this.myList) {","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"ZhiWei1010"},"content":" if (task.toString().contains(text)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(index + \". \" + task);","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":64,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"ZhiWei1010":64}},{"path":"src/main/java/duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":" private String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":" public Todo(String description) throws TodoException {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" throw new TodoException(\"\\n\" + line + \"\\nOpps!!! The description of a todo cannot be empty.\\n\" + line);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":" return \"[T][\" + this.getStatusIcon() + \"] \" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"ZhiWei1010":18}},{"path":"src/main/java/duke/TodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"public class TodoException extends Exception{","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":" public TodoException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"ZhiWei1010":7}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import duke.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"public class Ui {","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":" public static final String divider \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" public Ui() {","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":" public void showWelcome() {","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(divider + \"\\nHello! I\u0027m Homie\");","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"What can I do for you?\\n\" + divider);","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(divider + \"\\nBye Homie. Hope to see you again soon!\\n\" + divider);","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":" public void showDivider() {","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(divider + \"\\n\");","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(divider + \"\\nHomie, theres an error loading your tasks!\\n\" + divider);","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":" public void showListMessage() {","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":" public void showDeleteMessage(Task task, TaskList tasks) {","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Now you have \" + tasks.getSize() + \" tasks in the list.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":" public void showToDoMessage(Task task, TaskList tasks) {","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Now you have \" + tasks.getSize() + \" tasks in the list.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":" public void showDeadlineMessage(Task task, TaskList tasks) {","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Now you have \" + tasks.getSize() + \" tasks in the list.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"ZhiWei1010"},"content":" public void showEventMessage(Task task, TaskList tasks) {","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Now you have \" + tasks.getSize() + \" tasks in the list.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"ZhiWei1010"},"content":" public void showMarkMessage(Task task) {","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":64,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":65,"author":{"gitId":"ZhiWei1010"},"content":" public void showUnmarkMessage(Task task) {","lastModifiedDate":"2024-02-05"},{"lineNumber":66,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Ok, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":69,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":70,"author":{"gitId":"ZhiWei1010"},"content":" public void showWrongCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":71,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Wrong Command!\");","lastModifiedDate":"2024-02-05"},{"lineNumber":72,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":73,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":74,"author":{"gitId":"ZhiWei1010"},"content":" public void showFindMessage() {","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"ZhiWei1010":78}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"public class TaskListTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":" public void add_task_test() {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":" Task todoTask \u003d new Todo(\"todo 1\");","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" tasks.addTask(todoTask);","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(todoTask, tasks.getTask(1));","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":" } catch (TodoException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":" Task eventTask \u003d new Task(\"event go movie /from 6pm /to 830pm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":" Task deadlineTask \u003d new Task(\"deadline quiz /by 3pm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":" tasks.addTask(eventTask);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":" tasks.addTask(deadlineTask);","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(eventTask, tasks.getTask(2));","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(deadlineTask, tasks.getTask(3));","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":" public void delete_task_test() {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":" Task todoTask \u003d new Todo(\"todo 1\");","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"ZhiWei1010"},"content":" tasks.addTask(todoTask);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":" } catch (TodoException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":" Task eventTask \u003d new Task(\"event go movie /from 6pm /to 830pm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":" Task deadlineTask \u003d new Task(\"deadline quiz /by 3pm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":" tasks.addTask(eventTask);","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":" tasks.addTask(deadlineTask);","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":" tasks.deleteTask(1);","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(tasks.getSize(), 2);","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(eventTask, tasks.getTask(1));","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(deadlineTask, tasks.getTask(2));","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"ZhiWei1010":45}},{"path":"src/test/java/duke/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"public class TodoTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" public void no_command_exceptionThrown() {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":" String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":" Todo todo \u003d new Todo(\"\");","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(todo, new Todo(\"\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" fail(); // the test should not reach this line","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(\"\\n\" + line + \"\\nOpps!!! The description of a todo cannot be empty.\\n\" + line, e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"ZhiWei1010":22}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"todo Watch CS2106 Lecture","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"todo Watch CS2107 Lecture","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"deadline Do CS2103 Quiz /by Friday 2359","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"deadline Do CS2103 IP /by Thursday 2359","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"event coldplay concert /from Friday 8pm /to 1030pm","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"event SGO volunteering training /from Saturday 9am /to 530pm","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"event work at UCC /from Saturday 6pm /to 10pm","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"mark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"mark 5","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":"unmark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":"unmark 5","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"ZhiWei1010":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":"-"},"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":"ZhiWei1010"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-04"},{"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":{"ZhiWei1010":1,"-":20}},{"path":"src/main/java/duke/data/data.txt","fileType":"txt","isBinary":true,"lines":[],"authorContributionMap":{"ZhiWei1010":0}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"# duke.Duke project template","lastModifiedDate":"2024-02-04"},{"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":"ZhiWei1010"},"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-02-04"},{"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":{"ZhiWei1010":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":"ZhiWei1010"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-06"},{"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":"ZhiWei1010"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":" mainClassName \u003d \u0027seedu.duke.Main\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":"checkstyle {","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"ZhiWei1010":8,"-":42}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":" * Deadline class that extends the Task class.","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":" * Can specify the Local Date Time to keep track of","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" * when to complete deadline by.","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":" * Constructor for Deadline class","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" * @param description For the deadline task","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" * @param by This is the Local Date Time to complete the deadline by","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd MM yyyy HHmm\");","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":" this.by \u003d LocalDateTime.parse(by, formatter);","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":" return \"[D][\" + this.getStatusIcon() + \"] \" + super.toString() + \" (by: \"","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":" + by.format(DateTimeFormatter.ofPattern(\"MM-dd-yyyy HH:mm\")) + \")\";","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"ZhiWei1010":31}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":" * A chatbot programme named Homie that helps you keep track","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" * of to-do tasks, deadlines and events. Date and time can be specified for deadlines and events.","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":" * Other functions include adding tasks, finding tasks, marking or un-marking tasks as done,","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":" * deleting tasks and listing tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" private static final String CURRENT_DIR \u003d System.getProperty(\"user.dir\");","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":" public static final Path FILE_PATH \u003d Paths.get(CURRENT_DIR, \"src\", \"main\", \"java\", \"duke\", \"data\", \"data.txt\");","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":" private Storage storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" private Ui ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":" * Constructor for Duke class","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":" * @param filePath File path of storage text file","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":" public Duke(Path filePath) {","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":" tasks \u003d new TaskList(storage.loadTasksFromFile());","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":" * Run the chatbot application.","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":" public void run() {","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showWelcome();","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"ZhiWei1010"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":" Scanner scanner \u003d new Scanner(System.in); // Create scanner","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":" String command \u003d scanner.nextLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":" String[] tempArr;","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":" Task currTask;","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":" while (!command.equals(\"bye\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":" Duke.checkCommand(command);","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":" command \u003d scanner.nextLine(); // Read next command","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"ZhiWei1010"},"content":" if (command.equals(\"list\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showListMessage();","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"ZhiWei1010"},"content":" this.tasks.showTasks();","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"ZhiWei1010"},"content":" command \u003d scanner.nextLine(); // Read next command","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"ZhiWei1010"},"content":" continue;","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"ZhiWei1010"},"content":" if (command.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"ZhiWei1010"},"content":" tempArr \u003d command.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"ZhiWei1010"},"content":" currTask \u003d this.tasks.getTask(Integer.parseInt(tempArr[1]));","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"ZhiWei1010"},"content":" this.tasks.deleteTask(Integer.parseInt(tempArr[1]) - 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":66,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDeleteMessage(currTask, tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":69,"author":{"gitId":"ZhiWei1010"},"content":" this.storage.updateStorageFile(this.tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":70,"author":{"gitId":"ZhiWei1010"},"content":" command \u003d scanner.nextLine(); // Read next command","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"ZhiWei1010"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"ZhiWei1010"},"content":" if (command.startsWith(\"find\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"ZhiWei1010"},"content":" tempArr \u003d command.split(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showFindMessage();","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"ZhiWei1010"},"content":" this.tasks.findTask(tempArr[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"ZhiWei1010"},"content":" if (command.contains(\"todo\") || command.contains(\"deadline\") || command.contains(\"event\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"ZhiWei1010"},"content":" tempArr \u003d command.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"ZhiWei1010"},"content":" switch (tempArr[0]) {","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"ZhiWei1010"},"content":" case (\"todo\"):","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"ZhiWei1010"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":88,"author":{"gitId":"ZhiWei1010"},"content":" Todo currTodo \u003d new Todo(command.substring(5));","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"ZhiWei1010"},"content":" this.tasks.addTask(currTodo);","lastModifiedDate":"2024-02-05"},{"lineNumber":90,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showToDoMessage(currTodo, this.tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":91,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":92,"author":{"gitId":"ZhiWei1010"},"content":" this.storage.updateStorageFile(this.tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":93,"author":{"gitId":"ZhiWei1010"},"content":" } catch (TodoException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":94,"author":{"gitId":"ZhiWei1010"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":95,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":96,"author":{"gitId":"ZhiWei1010"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":97,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":98,"author":{"gitId":"ZhiWei1010"},"content":" case (\"deadline\"):","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":100,"author":{"gitId":"ZhiWei1010"},"content":" tempArr \u003d (command.substring(9)).split(\"/\");","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"ZhiWei1010"},"content":" Deadline currDeadline \u003d new Deadline(tempArr[0], tempArr[1].substring(3));","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"ZhiWei1010"},"content":" this.tasks.addTask(currDeadline);","lastModifiedDate":"2024-02-05"},{"lineNumber":103,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDeadlineMessage(currDeadline, this.tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":104,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":105,"author":{"gitId":"ZhiWei1010"},"content":" this.storage.updateStorageFile(this.tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":106,"author":{"gitId":"ZhiWei1010"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"ZhiWei1010"},"content":" case (\"event\"):","lastModifiedDate":"2024-01-25"},{"lineNumber":109,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":110,"author":{"gitId":"ZhiWei1010"},"content":" tempArr \u003d (command.substring(6)).split(\"/\");","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"ZhiWei1010"},"content":" Event currEvent \u003d new Event(tempArr[0], tempArr[1].substring(5), tempArr[2].substring(3));","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"ZhiWei1010"},"content":" this.tasks.addTask(currEvent);","lastModifiedDate":"2024-02-05"},{"lineNumber":113,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showEventMessage(currEvent, this.tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":114,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":115,"author":{"gitId":"ZhiWei1010"},"content":" this.storage.updateStorageFile(this.tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":116,"author":{"gitId":"ZhiWei1010"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"ZhiWei1010"},"content":" default:","lastModifiedDate":"2024-02-07"},{"lineNumber":118,"author":{"gitId":"ZhiWei1010"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":119,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"ZhiWei1010"},"content":" command \u003d scanner.nextLine(); // Read next command","lastModifiedDate":"2024-01-25"},{"lineNumber":121,"author":{"gitId":"ZhiWei1010"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":122,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"ZhiWei1010"},"content":" if (command.contains(\"mark\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"ZhiWei1010"},"content":" tempArr \u003d command.split(\" \");","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"ZhiWei1010"},"content":" currTask \u003d this.tasks.getTask(Integer.parseInt(tempArr[1]) - 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":127,"author":{"gitId":"ZhiWei1010"},"content":" switch (tempArr[0]) {","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"ZhiWei1010"},"content":" case (\"mark\"):","lastModifiedDate":"2024-01-25"},{"lineNumber":129,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":130,"author":{"gitId":"ZhiWei1010"},"content":" this.tasks.markTask(Integer.parseInt(tempArr[1]) - 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":131,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showMarkMessage(currTask);","lastModifiedDate":"2024-02-05"},{"lineNumber":132,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":133,"author":{"gitId":"ZhiWei1010"},"content":" this.storage.updateStorageFile(this.tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":134,"author":{"gitId":"ZhiWei1010"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"ZhiWei1010"},"content":" case (\"unmark\"):","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":138,"author":{"gitId":"ZhiWei1010"},"content":" this.tasks.unMarkTask(Integer.parseInt(tempArr[1]) - 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":139,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showUnmarkMessage(currTask);","lastModifiedDate":"2024-02-05"},{"lineNumber":140,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":141,"author":{"gitId":"ZhiWei1010"},"content":" this.storage.updateStorageFile(this.tasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":142,"author":{"gitId":"ZhiWei1010"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":143,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":144,"author":{"gitId":"ZhiWei1010"},"content":" default:","lastModifiedDate":"2024-01-25"},{"lineNumber":145,"author":{"gitId":"ZhiWei1010"},"content":" this.ui.showWrongCommand();","lastModifiedDate":"2024-02-05"},{"lineNumber":146,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":147,"author":{"gitId":"ZhiWei1010"},"content":" command \u003d scanner.nextLine(); // Read next command","lastModifiedDate":"2024-01-25"},{"lineNumber":148,"author":{"gitId":"ZhiWei1010"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":149,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":150,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":151,"author":{"gitId":"ZhiWei1010"},"content":" command \u003d scanner.nextLine(); // Read next command","lastModifiedDate":"2024-01-24"},{"lineNumber":152,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":153,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":154,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":155,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":156,"author":{"gitId":"ZhiWei1010"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-05"},{"lineNumber":157,"author":{"gitId":"ZhiWei1010"},"content":" new Duke(FILE_PATH).run();","lastModifiedDate":"2024-02-07"},{"lineNumber":158,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":159,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":160,"author":{"gitId":"ZhiWei1010"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":161,"author":{"gitId":"ZhiWei1010"},"content":" * Check if command is valid or not","lastModifiedDate":"2024-02-06"},{"lineNumber":162,"author":{"gitId":"ZhiWei1010"},"content":" * Throws a Duke Exception if command is invalid","lastModifiedDate":"2024-02-06"},{"lineNumber":163,"author":{"gitId":"ZhiWei1010"},"content":" * @param command String representation of input command","lastModifiedDate":"2024-02-06"},{"lineNumber":164,"author":{"gitId":"ZhiWei1010"},"content":" * @throws DukeException If command is not recognised","lastModifiedDate":"2024-02-06"},{"lineNumber":165,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":166,"author":{"gitId":"ZhiWei1010"},"content":" public static void checkCommand(String command) throws DukeException {","lastModifiedDate":"2024-01-25"},{"lineNumber":167,"author":{"gitId":"ZhiWei1010"},"content":" String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-25"},{"lineNumber":168,"author":{"gitId":"ZhiWei1010"},"content":" if (!(command.startsWith(\"todo\") || command.startsWith(\"deadline\") || command.startsWith(\"event\")","lastModifiedDate":"2024-02-07"},{"lineNumber":169,"author":{"gitId":"ZhiWei1010"},"content":" || command.startsWith(\"list\") || command.startsWith(\"bye\") || command.startsWith(\"delete\")","lastModifiedDate":"2024-02-07"},{"lineNumber":170,"author":{"gitId":"ZhiWei1010"},"content":" || command.contains(\"mark\") || command.contains(\"find\"))) {","lastModifiedDate":"2024-02-07"},{"lineNumber":171,"author":{"gitId":"ZhiWei1010"},"content":" throw new DukeException(\"\\n\" + line + \"\\nOPPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\\n\" + line);","lastModifiedDate":"2024-01-25"},{"lineNumber":172,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ZhiWei1010":171,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":" * Duke Exception class","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"ZhiWei1010":10}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":" * Event class that extends Task class.","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":" * Can specify event starts from when and when the events end.","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" protected String from;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":" protected String to;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":" * Constructor for Event class","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" * @param description For the Event Task.","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":" * @param from This is to keep track when the event starts","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":" * @param to This is to keep track when the event ends","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":" return \"[E][\" + this.getStatusIcon() + \"] \" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"ZhiWei1010":28}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"public class Parser {","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":" public void parse(String fullCommand) throws DukeException {","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":" if (!(fullCommand.startsWith(\"todo\") || fullCommand.startsWith(\"deadline\") || fullCommand.startsWith(\"event\")","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":" || fullCommand.startsWith(\"list\") || fullCommand.startsWith(\"bye\")","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":" || fullCommand.startsWith(\"delete\"))) {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":" ui.showDivider();","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":" throw new DukeException(\"OPPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" String[] commandSplit \u003d fullCommand.split(\" \");","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"ZhiWei1010":16}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import java.io.File;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"import java.io.FileInputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"import java.io.ObjectInputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"import java.io.ObjectOutputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" * Storage class to deal with storing of tasks and","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":" * loading of tasks when the duke chatbot starts, ends or have","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":" * any updates in the task list","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":"public class Storage {","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":" private File file;","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":" private Path filePath;","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":" * Constructor for Storage class","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":" * @param filePath This is the file path of the storage text file","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":" public Storage(Path filePath) {","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":" this.file \u003d new File(String.valueOf(filePath));","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":" public boolean isFileCreated() {","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"ZhiWei1010"},"content":" return Files.exists(this.filePath);","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"ZhiWei1010"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":" * Method to create the storage text file if file is not yet created.","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":" public void createStorageFile() {","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":" if (this.file.createNewFile()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"File created: \" + this.file.getName());","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":" } else {","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"File already exists.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"cannot create file\" + e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":" * Method to load tasks from the text file into the tasks object.","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":" * @return Returns an ArrayList of type Tasks loaded with tasks from the text file to the caller.","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"ZhiWei1010"},"content":" public ArrayList\u003cTask\u003e loadTasksFromFile() {","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"ZhiWei1010"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"ZhiWei1010"},"content":" FileInputStream readTasks \u003d new FileInputStream(this.file);","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"ZhiWei1010"},"content":" ObjectInputStream readStream \u003d new ObjectInputStream(readTasks);","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"ZhiWei1010"},"content":" // The file will only contain ArrayList\u003cTask\u003e object.","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"ZhiWei1010"},"content":" // So it is safe to typecast.","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"ZhiWei1010"},"content":" @SuppressWarnings(\"unchecked\")","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"ZhiWei1010"},"content":" ArrayList\u003cTask\u003e myList \u003d (ArrayList\u003cTask\u003e) readStream.readObject();","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"ZhiWei1010"},"content":" readStream.close();","lastModifiedDate":"2024-02-05"},{"lineNumber":64,"author":{"gitId":"ZhiWei1010"},"content":" return myList;","lastModifiedDate":"2024-02-05"},{"lineNumber":65,"author":{"gitId":"ZhiWei1010"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Error loading task: \" + e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":69,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Error in loading task!\");","lastModifiedDate":"2024-02-05"},{"lineNumber":70,"author":{"gitId":"ZhiWei1010"},"content":" return new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-02-05"},{"lineNumber":71,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":72,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":73,"author":{"gitId":"ZhiWei1010"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"ZhiWei1010"},"content":" * Method to update storage text file whenever there are changes to the task list.","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"ZhiWei1010"},"content":" * @param taskList This is the tasklist to update.","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"ZhiWei1010"},"content":" public void updateStorageFile(TaskList taskList) {","lastModifiedDate":"2024-02-05"},{"lineNumber":78,"author":{"gitId":"ZhiWei1010"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":79,"author":{"gitId":"ZhiWei1010"},"content":" FileOutputStream writeData \u003d new FileOutputStream(this.file);","lastModifiedDate":"2024-02-05"},{"lineNumber":80,"author":{"gitId":"ZhiWei1010"},"content":" ObjectOutputStream writeStream \u003d new ObjectOutputStream(writeData);","lastModifiedDate":"2024-02-05"},{"lineNumber":81,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":82,"author":{"gitId":"ZhiWei1010"},"content":" writeStream.writeObject(taskList.getListOfTasks());","lastModifiedDate":"2024-02-05"},{"lineNumber":83,"author":{"gitId":"ZhiWei1010"},"content":" writeStream.flush();","lastModifiedDate":"2024-02-05"},{"lineNumber":84,"author":{"gitId":"ZhiWei1010"},"content":" writeStream.close();","lastModifiedDate":"2024-02-05"},{"lineNumber":85,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":86,"author":{"gitId":"ZhiWei1010"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":87,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Error updating storage file: \" + e);","lastModifiedDate":"2024-02-05"},{"lineNumber":88,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":89,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":90,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":91,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":92,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"ZhiWei1010":92}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":" * Task class that contains task objects.","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"public class Task implements Serializable {","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":" * Constructor for Task class","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" * @param description This is the String description of the tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":" public void setDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":" public void setNotDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"ZhiWei1010"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":" return this.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"ZhiWei1010":36}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"public class TaskList {","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":" private ArrayList\u003cTask\u003e myList;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":" public TaskList(ArrayList\u003cTask\u003e myList) {","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" this.myList \u003d myList;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" public TaskList() {","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":" this.myList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" this.myList.add(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":" public Task getTask(int i) {","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":" return this.myList.get(i - 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":" public void deleteTask(int index) {","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":" myList.remove(index - 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":" public void showTasks() {","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":" int index \u003d 1;","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":" for (Task task : this.myList) {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(index + \".\" + task);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"ZhiWei1010"},"content":" index++;","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":" public int getSize() {","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":" return this.myList.size();","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":" public ArrayList\u003cTask\u003e getListOfTasks() {","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":" return this.myList;","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":" public void markTask(int index) {","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":" this.myList.get(index).setDone();","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":" public void unMarkTask(int index) {","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":" this.myList.get(index).setNotDone();","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":" public void findTask(String text) {","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"ZhiWei1010"},"content":" int index \u003d 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"ZhiWei1010"},"content":" for (Task task : this.myList) {","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"ZhiWei1010"},"content":" if (task.toString().contains(text)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(index + \". \" + task);","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":64,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"ZhiWei1010":64}},{"path":"src/main/java/duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":" private String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":" public Todo(String description) throws TodoException {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" throw new TodoException(\"\\n\" + line + \"\\nOpps!!! The description of a todo cannot be empty.\\n\" + line);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":" return \"[T][\" + this.getStatusIcon() + \"] \" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"ZhiWei1010":18}},{"path":"src/main/java/duke/TodoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":" * To do Exception class. Thrown when there is an error creating to do task.","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"public class TodoException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":" public TodoException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"ZhiWei1010":10}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"public class Ui {","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":" public static final String DIVIDER \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":" public Ui() {","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" public void showWelcome() {","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(DIVIDER + \"\\nHello! I\u0027m Homie\");","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"What can I do for you?\\n\" + DIVIDER);","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(DIVIDER + \"\\nBye Homie. Hope to see you again soon!\\n\" + DIVIDER);","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" public void showDivider() {","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(DIVIDER + \"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(DIVIDER + \"\\nHomie, theres an error loading your tasks!\\n\" + DIVIDER);","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":" public void showListMessage() {","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":" public void showDeleteMessage(Task task, TaskList tasks) {","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Now you have \" + tasks.getSize() + \" tasks in the list.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":" public void showToDoMessage(Task task, TaskList tasks) {","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Now you have \" + tasks.getSize() + \" tasks in the list.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":" public void showDeadlineMessage(Task task, TaskList tasks) {","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Now you have \" + tasks.getSize() + \" tasks in the list.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":" public void showEventMessage(Task task, TaskList tasks) {","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Now you have \" + tasks.getSize() + \" tasks in the list.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"ZhiWei1010"},"content":" public void showMarkMessage(Task task) {","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"ZhiWei1010"},"content":" public void showUnmarkMessage(Task task) {","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Ok, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":64,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":65,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":66,"author":{"gitId":"ZhiWei1010"},"content":" public void showWrongCommand() {","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Wrong Command!\");","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":69,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":70,"author":{"gitId":"ZhiWei1010"},"content":" public void showFindMessage() {","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"ZhiWei1010":73}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"public class TaskListTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":" public void add_task_test() {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":" Task todoTask \u003d new Todo(\"todo 1\");","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" tasks.addTask(todoTask);","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(todoTask, tasks.getTask(1));","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":" } catch (TodoException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":" Task eventTask \u003d new Task(\"event go movie /from 6pm /to 830pm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":" Task deadlineTask \u003d new Task(\"deadline quiz /by 3pm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":" tasks.addTask(eventTask);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":" tasks.addTask(deadlineTask);","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(eventTask, tasks.getTask(2));","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(deadlineTask, tasks.getTask(3));","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":" public void delete_task_test() {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":" Task todoTask \u003d new Todo(\"todo 1\");","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"ZhiWei1010"},"content":" tasks.addTask(todoTask);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":" } catch (TodoException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":" Task eventTask \u003d new Task(\"event go movie /from 6pm /to 830pm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":" Task deadlineTask \u003d new Task(\"deadline quiz /by 3pm\");","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":" tasks.addTask(eventTask);","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":" tasks.addTask(deadlineTask);","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":" tasks.deleteTask(1);","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(tasks.getSize(), 2);","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(eventTask, tasks.getTask(1));","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(deadlineTask, tasks.getTask(2));","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"ZhiWei1010":45}},{"path":"src/test/java/duke/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package duke;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"public class TodoTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" public void no_command_exceptionThrown() {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":" String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":" Todo todo \u003d new Todo(\"\");","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(todo, new Todo(\"\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" fail(); // the test should not reach this line","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(\"\\n\" + line + \"\\nOpps!!! The description of a todo cannot be empty.\\n\" + line, e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"ZhiWei1010":22}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"todo Watch CS2106 Lecture","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"todo Watch CS2107 Lecture","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"deadline Do CS2103 Quiz /by Friday 2359","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"deadline Do CS2103 IP /by Thursday 2359","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"event coldplay concert /from Friday 8pm /to 1030pm","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"event SGO volunteering training /from Saturday 9am /to 530pm","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"event work at UCC /from Saturday 6pm /to 10pm","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"mark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"mark 5","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":"unmark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":"unmark 5","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"ZhiWei1010":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":"-"},"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":"ZhiWei1010"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-04"},{"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":{"ZhiWei1010":1,"-":20}},{"path":"src/main/java/duke/data/data.txt","fileType":"txt","isBinary":true,"lines":[],"authorContributionMap":{"ZhiWei1010":0}}] diff --git a/ZhiWei1010_ip_master/commits.json b/ZhiWei1010_ip_master/commits.json index e66301cb..a217eb8f 100644 --- a/ZhiWei1010_ip_master/commits.json +++ b/ZhiWei1010_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ZhiWei1010":[{"date":"2024-01-24","commitResults":[{"hash":"9052192a22d400e355647f0e720af89fab20873a","isMergeCommit":false,"messageTitle":"Level 0. Renamed Duke to Homie, Greet and Exit.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"aeca1b28bed7fef9e7d58d29ddc5cb1039e01072","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"611105eacd8f927d6cbe2fc4c28545752100cffc","isMergeCommit":false,"messageTitle":"Level 2. Add, List, Changed the horizontal line to a variable so its easier to reuse.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":9}}}]},{"date":"2024-01-25","commitResults":[{"hash":"b23d3105e7bd14f1c8955cda3ee2b05f16bdf97d","isMergeCommit":false,"messageTitle":"Level 3. Mark As Done Added new Task class, Overriden the toString to display description of task.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":4}}},{"hash":"731fc3445277cfd4851447ba38d43f7915572c42","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines Added Todo, Event and Deadline classes.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":3}}},{"hash":"5e93c9e6cc80e72e6e3d5b5b3589feebc2e98bc0","isMergeCommit":false,"messageTitle":"A-TextUiTesting Edited the Expected text and input text files. removed a newline after horizontal line when using list command","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":16,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"36a9b0256cb7c2959701c706191e4495ca57d60f","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors Added DukeException and TodoException classes. implemented error catching of unrecognised commands and empty todo","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":9}}},{"hash":"16ebac3f8e5c82fb640f4f1024f46178ed6c8314","isMergeCommit":false,"messageTitle":"Level 6. Added delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}}]},{"date":"2024-02-04","commitResults":[{"hash":"c3b6b2ae0d6665d6acaaf6013aa2e9ae80b81aa6","isMergeCommit":false,"messageTitle":"Add duke package. Move all class to duke package.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"957a71ee77d31c292cebb74897dc550eaca55da5","isMergeCommit":false,"messageTitle":"Start with feature to save, not complete yet.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":63,"deletions":1}}}]},{"date":"2024-02-05","commitResults":[{"hash":"0374d1428f0a50de34ffde2930d30bb181ae3f08","isMergeCommit":false,"messageTitle":"Add Save Function to Homie. Add new Storage class.","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":58}}},{"hash":"13bbf67181e3a72ce6415727a8ac8c792b332cfc","isMergeCommit":false,"messageTitle":"Level 8. Date and Times Deadline: by variable is now of time LocalDateTime. Format of Date accepted is \"dd MM yyyy HHmm\" Format of Date printed is \"MM-dd-yyyy HH:mm\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":3}}},{"hash":"afa12e9dc9a2cf4addfa872936a49a814e923e6e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"cb490984db39ef6cad07b784263ba509e15dd60f","isMergeCommit":false,"messageTitle":"Add TaskList class, Ui class, Parser Class. Parser Class not in use yet.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":210,"deletions":74}}},{"hash":"340006140f1d6b4ab3daa711ae9f4dc4f2c568ee","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-Package"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"0f95628a433d422beafda4242db83f71fe20fdce","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-gradle-support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"c1c1c3b450571fd760cda5c244bdd2d7c1c157a5","isMergeCommit":false,"messageTitle":"Commit to undo Merge","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":42},"txt":{"insertions":16,"deletions":0},"java":{"insertions":470,"deletions":10},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":0,"deletions":0},"md":{"insertions":18,"deletions":19}}},{"hash":"722b62922c0f1d53cce029ef8d55a51101585d42","isMergeCommit":false,"messageTitle":"Revert \"Commit to undo Merge\"","messageBody":"This reverts commit c1c1c3b450571fd760cda5c244bdd2d7c1c157a5.\n","fileTypesAndContributionMap":{"gradle":{"insertions":42,"deletions":0},"txt":{"insertions":0,"deletions":16},"java":{"insertions":10,"deletions":470},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":0,"deletions":0},"md":{"insertions":19,"deletions":18}}},{"hash":"0d4c9b54951c7b755e3eff439492ed6ab9d0083e","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/ZhiWei1010/ip into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7cc292a0d3f6b120b853e23073d0c62fd868db3b","isMergeCommit":false,"messageTitle":"Gradle Set Up Junit Set up","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"java":{"insertions":19,"deletions":0}}},{"hash":"49e26980a40cac473a26bd1478c0caa4a1b8b840","isMergeCommit":false,"messageTitle":"Add JUnit Test for TaskList class and Todo","messageBody":"","tags":["A-Packages","A-MoreOOP","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":12}}},{"hash":"908ae27d288ad5de1bdcfa02788c0f995cabd653","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-JUnit\u0027 Create Tag for A-MoreOOP, A-Packages as well","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c0c22afd266687185ee9ec879af05f0e3fd21601","isMergeCommit":false,"messageTitle":"Add find function in TaskList","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":54}}},{"hash":"6f452a87ddec761c8f41143aa6b0caf55078bcf4","isMergeCommit":true,"messageTitle":"Merge tag \u0027Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ZhiWei1010":{"java":554,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":6,"txt":16}},"authorContributionVariance":{"ZhiWei1010":100534.44},"authorDisplayNameMap":{"ZhiWei1010":"CS2103-F09-2 TAN .. WEI"}} +{"authorDailyContributionsMap":{"ZhiWei1010":[{"date":"2024-01-24","commitResults":[{"hash":"9052192a22d400e355647f0e720af89fab20873a","isMergeCommit":false,"messageTitle":"Level 0. Renamed Duke to Homie, Greet and Exit.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"aeca1b28bed7fef9e7d58d29ddc5cb1039e01072","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"611105eacd8f927d6cbe2fc4c28545752100cffc","isMergeCommit":false,"messageTitle":"Level 2. Add, List, Changed the horizontal line to a variable so its easier to reuse.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":9}}}]},{"date":"2024-01-25","commitResults":[{"hash":"b23d3105e7bd14f1c8955cda3ee2b05f16bdf97d","isMergeCommit":false,"messageTitle":"Level 3. Mark As Done Added new Task class, Overriden the toString to display description of task.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":4}}},{"hash":"731fc3445277cfd4851447ba38d43f7915572c42","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines Added Todo, Event and Deadline classes.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":3}}},{"hash":"5e93c9e6cc80e72e6e3d5b5b3589feebc2e98bc0","isMergeCommit":false,"messageTitle":"A-TextUiTesting Edited the Expected text and input text files. removed a newline after horizontal line when using list command","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":16,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"36a9b0256cb7c2959701c706191e4495ca57d60f","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors Added DukeException and TodoException classes. implemented error catching of unrecognised commands and empty todo","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":9}}},{"hash":"16ebac3f8e5c82fb640f4f1024f46178ed6c8314","isMergeCommit":false,"messageTitle":"Level 6. Added delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}}]},{"date":"2024-02-04","commitResults":[{"hash":"c3b6b2ae0d6665d6acaaf6013aa2e9ae80b81aa6","isMergeCommit":false,"messageTitle":"Add duke package. Move all class to duke package.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"957a71ee77d31c292cebb74897dc550eaca55da5","isMergeCommit":false,"messageTitle":"Start with feature to save, not complete yet.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":63,"deletions":1}}}]},{"date":"2024-02-05","commitResults":[{"hash":"0374d1428f0a50de34ffde2930d30bb181ae3f08","isMergeCommit":false,"messageTitle":"Add Save Function to Homie. Add new Storage class.","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":58}}},{"hash":"13bbf67181e3a72ce6415727a8ac8c792b332cfc","isMergeCommit":false,"messageTitle":"Level 8. Date and Times Deadline: by variable is now of time LocalDateTime. Format of Date accepted is \"dd MM yyyy HHmm\" Format of Date printed is \"MM-dd-yyyy HH:mm\"","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":3}}},{"hash":"afa12e9dc9a2cf4addfa872936a49a814e923e6e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"cb490984db39ef6cad07b784263ba509e15dd60f","isMergeCommit":false,"messageTitle":"Add TaskList class, Ui class, Parser Class. Parser Class not in use yet.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":210,"deletions":74}}},{"hash":"340006140f1d6b4ab3daa711ae9f4dc4f2c568ee","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-Package"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"0f95628a433d422beafda4242db83f71fe20fdce","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-gradle-support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"c1c1c3b450571fd760cda5c244bdd2d7c1c157a5","isMergeCommit":false,"messageTitle":"Commit to undo Merge","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":0,"deletions":42},"txt":{"insertions":16,"deletions":0},"java":{"insertions":470,"deletions":10},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":0,"deletions":0},"md":{"insertions":18,"deletions":19}}},{"hash":"722b62922c0f1d53cce029ef8d55a51101585d42","isMergeCommit":false,"messageTitle":"Revert \"Commit to undo Merge\"","messageBody":"This reverts commit c1c1c3b450571fd760cda5c244bdd2d7c1c157a5.\n","fileTypesAndContributionMap":{"gradle":{"insertions":42,"deletions":0},"txt":{"insertions":0,"deletions":16},"java":{"insertions":10,"deletions":470},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":0,"deletions":0},"md":{"insertions":19,"deletions":18}}},{"hash":"0d4c9b54951c7b755e3eff439492ed6ab9d0083e","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/ZhiWei1010/ip into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7cc292a0d3f6b120b853e23073d0c62fd868db3b","isMergeCommit":false,"messageTitle":"Gradle Set Up Junit Set up","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"java":{"insertions":19,"deletions":0}}},{"hash":"49e26980a40cac473a26bd1478c0caa4a1b8b840","isMergeCommit":false,"messageTitle":"Add JUnit Test for TaskList class and Todo","messageBody":"","tags":["A-Packages","A-MoreOOP","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":12}}},{"hash":"908ae27d288ad5de1bdcfa02788c0f995cabd653","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-JUnit\u0027 Create Tag for A-MoreOOP, A-Packages as well","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c0c22afd266687185ee9ec879af05f0e3fd21601","isMergeCommit":false,"messageTitle":"Add find function in TaskList","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":54}}},{"hash":"6f452a87ddec761c8f41143aa6b0caf55078bcf4","isMergeCommit":true,"messageTitle":"Merge tag \u0027Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9deb8bb62b26be57b02cefe55e342b8276d15268","isMergeCommit":false,"messageTitle":"Update JavaDoc for Half the classes","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":17}}},{"hash":"5a951f8b17248ba582d2272fccefff4d50242483","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-07","commitResults":[{"hash":"4c8a380f2f1a3f741bf0ad4c034a106cee61aa3d","isMergeCommit":false,"messageTitle":"Edit code to match coding standard. Only violations are some missing javadocs","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":35}}},{"hash":"d6b3e12268396208296d936a52771c9a65777bdd","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e5604ca5e6392b49245c2ef8907987571597d2b1","isMergeCommit":false,"messageTitle":"Update build.gradle to create jar file with gradle","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":0}}},{"hash":"264fd5d978e7b754fa971248c27a1e77cbab2568","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-Jar\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ZhiWei1010":{"java":616,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":8,"txt":16}},"authorContributionVariance":{"ZhiWei1010":109027.984},"authorDisplayNameMap":{"ZhiWei1010":"CS2103-F09-2 TAN .. WEI"}} diff --git a/archive.zip b/archive.zip index ef5c35cb..514c5c6e 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 da562cc6..114f48a4 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":"aureliony"},"content":"// Apply necessary plugins","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":" id \u0027checkstyle\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":"aureliony"},"content":"// Configure repositories for dependencies","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"// Define project dependencies","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" testImplementation group: \u0027org.mockito\u0027, name: \u0027mockito-core\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" String javaFxVersion \u003d \u002717.0.10\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":"// Configure application-related settings","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":"application {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" mainClass.set(\"gui.ConvoBot\")","lastModifiedDate":"2024-02-06"},{"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":"// Configure settings for Shadow","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":"shadowJar {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" archiveBaseName \u003d \"convobot\"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":"// Configure run task settings","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":"run {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" standardInput \u003d System.in","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":"runShadow {","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" standardInput \u003d System.in","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":"// Configure test task","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":"// Configure Javadoc generation","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":"javadoc {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":" destinationDir \u003d file(\"$buildDir/docs/javadoc\")","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":72,"author":{"gitId":"aureliony"},"content":"build.dependsOn javadoc","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"aureliony"},"content":"// Configure checkstyle","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"aureliony"},"content":"checkstyle {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"aureliony"},"content":" toolVersion \u003d \u002710.12.5\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"aureliony"},"content":"build.dependsOn \u0027checkstyleMain\u0027, \u0027checkstyleTest\u0027","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"aureliony":46,"-":32}},{"path":"src/main/java/convobot/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 tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.ResponseConstructor;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" * Represents a command to add a task to the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"public class Add implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" private final Task task;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * Constructor for the Add command.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" public Add(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * Executes the Add command by adding the task to the task list and displaying a confirmation message.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" * @param taskList The task list to which the task will be added.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" * @param rc The response constructor for constructing messages.","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, ResponseConstructor rc) {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" rc.showAdded(task.toString(), taskList.size());","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" * Checks if the Add command is an exit command. Always returns false for Add commands.","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" * @return Always false.","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":42}},{"path":"src/main/java/convobot/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.ResponseConstructor;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":" * Represents a command to exit the application.","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"public class Bye implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" * Executes the Bye command. This implementation does nothing as it signifies the end of the application.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" * @param taskList The task list (not used in this command).","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * @param rc The response constructor (not used in this command).","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, ResponseConstructor rc) {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" return;","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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" * Checks if the Bye command is an exit command. Always returns true for Bye commands.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * @return Always true.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" return true;","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":29}},{"path":"src/main/java/convobot/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.ResponseConstructor;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" * Represents a command in the ConvoBot application.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"public interface Command {","lastModifiedDate":"2024-01-28"},{"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":" * Executes the command with the given task list and user interface.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * @param taskList The task list on which the command operates.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" * @param rc The response constructor for constructing messages.","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException If an exception specific to ConvoBot occurs during command execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, ResponseConstructor rc) throws ConvoBotException;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * @return True if the command is an exit command, false otherwise.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" public boolean isExit();","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":27}},{"path":"src/main/java/convobot/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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":" * Represents the types of commands available in the ConvoBot application.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"public enum CommandType {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" * Command type to exit the application.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" BYE,","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" * Command type to list tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" LIST,","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" * Command type to mark a task as done.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" MARK,","lastModifiedDate":"2024-01-28"},{"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":" * Command type to unmark a previously marked task.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" UNMARK,","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" * Command type to delete a task.","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" DELETE,","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" * Command type to add a simple to-do task.","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" TODO,","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" * Command type to add a task with a deadline.","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" DEADLINE,","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" * Command type to add an event task.","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" EVENT,","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" * Command type to find matching tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" FIND","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":52}},{"path":"src/main/java/convobot/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.ResponseConstructor;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" * Represents a command to delete a task from the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"public class Delete implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" private final int i;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * Constructor for the Delete command.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" * @param i The index of the task to be deleted.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" public Delete(int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" this.i \u003d i;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * Executes the Delete command by deleting the task from the task list and displaying a removal message.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" * @param taskList The task list from which the task will be deleted.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" * @param rc The response constructor for constructing messages.","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException If an exception specific to ConvoBot occurs during command execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, ResponseConstructor rc) throws ConvoBotException {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" String removedTaskString \u003d taskList.getTaskString(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" taskList.delete(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" rc.showRemoved(removedTaskString, taskList.size());","lastModifiedDate":"2024-02-06"},{"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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" * Checks if the Delete command is an exit command. Always returns false for Delete commands.","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" * @return Always false.","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":44}},{"path":"src/main/java/convobot/commands/Find.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import utils.ResponseConstructor;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" * Represents the Find command, which searches for tasks in a TaskList based on a given query.","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"public class Find implements Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * The query to be used for searching tasks. Case-insensitive.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" private final String query;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" * Constructs a Find command with the specified query.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" * @param query The query to be used for searching tasks. Case-insensitive.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" public Find(String query) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" this.query \u003d query.toLowerCase(); // make query case-insensitive","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" * Executes the Find command by searching for tasks that match the specified query.","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" * @param taskList The TaskList to search for matching tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" * @param rc The response constructor to construct the string for the matching tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException If there is an issue executing the command.","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, ResponseConstructor rc) throws ConvoBotException {","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" ArrayList\u003cString\u003e matchingTaskStrings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" String desc \u003d taskList.getTaskDescription(i).toLowerCase(); // query is case-insensitive","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" if (desc.contains(query)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" matchingTaskStrings.add(taskList.getTaskString(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" rc.showMatchingTasks(matchingTaskStrings);","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" * Indicates whether the Find command is an exit command.","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" * @return False, as Find is not an exit command.","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"aureliony":54}},{"path":"src/main/java/convobot/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.ResponseConstructor;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":" * Represents a command to display the list of tasks in the ConvoBot application.","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"public class List implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" * Executes the List command by displaying the task list using the provided user interface.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" * @param taskList The task list to be displayed.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * @param rc The response constructor for constructing messages.","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, ResponseConstructor rc) {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" rc.showTaskList(taskList);","lastModifiedDate":"2024-02-06"},{"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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" * Checks if the List command is an exit command. Always returns false for List commands.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * @return Always false.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":29}},{"path":"src/main/java/convobot/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.ResponseConstructor;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" * Represents a command to mark a task as completed in the ConvoBot application.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"public class Mark implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" private final int i;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * Constructor for the Mark command.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" * @param i The index of the task to be marked as completed.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" public Mark(int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" this.i \u003d i;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * Executes the Mark command by marking the specified task as completed and displaying a confirmation message.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" * @param taskList The task list containing the task to be marked.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" * @param rc The response constructor for constructing messages.","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException If an exception specific to ConvoBot occurs during command execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, ResponseConstructor rc) throws ConvoBotException {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" taskList.mark(i, true);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" rc.showMarked(taskList.getTaskString(i));","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" * Checks if the Mark command is an exit command. Always returns false for Mark commands.","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" * @return Always false.","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":43}},{"path":"src/main/java/convobot/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.ResponseConstructor;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" * Represents a command to unmark a completed task in the ConvoBot application.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"public class Unmark implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" private final int i;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * Constructor for the Unmark command.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" * @param i The index of the task to be unmarked.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" public Unmark(int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" this.i \u003d i;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * Executes the Unmark command by unmarking the specified completed task and displaying a confirmation message.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" * @param taskList The task list containing the task to be unmarked.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" * @param rc The response constructor for constructing messages.","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException If an exception specific to ConvoBot occurs during command execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, ResponseConstructor rc) throws ConvoBotException {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" taskList.mark(i, false);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" rc.showUnmarked(taskList.getTaskString(i));","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" * Checks if the Unmark command is an exit command. Always returns false for Unmark commands.","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" * @return Always false.","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":43}},{"path":"src/main/java/convobot/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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":" * The {@code ConvoBotException} class represents an exception specific to the ConvoBot application.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":" * It extends the standard {@code Exception} class and provides additional constructors for","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":" * customized exception handling.","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"public class ConvoBotException extends Exception {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code ConvoBotException} with no specified detail message.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" public ConvoBotException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" super();","lastModifiedDate":"2024-01-22"},{"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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code ConvoBotException} with the specified detail message.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" * @param message the detail message (which is saved for later retrieval by the {@code getMessage()} method)","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" public ConvoBotException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code ConvoBotException} with the specified detail message and cause.","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" * @param message the detail message (which is saved for later retrieval by the {@code getMessage()} method)","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" * @param cause the cause (which is saved for later retrieval by the {@code getCause()} method)","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" public ConvoBotException(String message, Throwable cause) {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" super(message, cause);","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":35}},{"path":"src/main/java/convobot/exceptions/ExitException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package exceptions;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":" * A utility class that tells the application to exit.","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"public class ExitException extends Exception {","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code ExitException}.","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" public ExitException() {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" super();","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"aureliony":15}},{"path":"src/main/java/convobot/gui/ConvoBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package gui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import commands.Command;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import exceptions.ExitException;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import utils.Parser;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"import utils.ResponseConstructor;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"import utils.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" * The main class representing the ConvoBot application.","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"public class ConvoBot {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" private final TaskList tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" private final ResponseConstructor rc \u003d new ResponseConstructor();","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" * Constructor for the ConvoBot class.","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" * @param filePath The file path for task data storage.","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" public ConvoBot(String filePath) {","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" tasks \u003d new TaskList(new Storage(filePath));","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" * Retrieves a response from ConvoBot based on the provided input.","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" * @param userInput The input string representing the user\u0027s message.","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" * @return A string containing ConvoBot\u0027s response.","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" * @throws ExitException If the user enters an exit command, this exception is thrown","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" * to indicate that the application should exit.","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" public String getResponse(String userInput) throws ExitException {","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" Command c;","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" c \u003d Parser.parseUserInput(userInput);","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" if (c.isExit()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" throw new ExitException();","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" } catch (ConvoBotException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" rc.showError(e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" return rc.getResponse();","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" c.execute(tasks, rc);","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" } catch (ConvoBotException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" rc.showError(e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" return rc.getResponse();","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" * Main entry point for the ConvoBot application.","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" * @param args Command-line arguments (not used in this application).","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"aureliony":65}},{"path":"src/main/java/convobot/gui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package gui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" * A custom control using FXML.","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" * This control represents a dialog box consisting of an ImageView to represent","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" * the speaker\u0027s face and a label containing text from the speaker.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" private Label dialog;","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" private void flip() {","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" DialogBox db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" db.flip();","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" return db;","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"aureliony":61}},{"path":"src/main/java/convobot/gui/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package gui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" * The entry point for the ConvoBot GUI Application using FXML.","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" stage.setTitle(\"ConvoBot\");","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" stage.getIcons().add(new Image(getClass().getResourceAsStream(\"/images/DaConvo.png\")));","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" stage.show();","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"aureliony":32}},{"path":"src/main/java/convobot/gui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package gui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import exceptions.ExitException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import javafx.application.Platform;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" private static final ConvoBot convo \u003d new ConvoBot(\"./data/tasks.txt\");","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" private final Image userImage \u003d new Image(getClass().getResourceAsStream(\"/images/DaUser.png\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" private final Image convoImage \u003d new Image(getClass().getResourceAsStream(\"/images/DaConvo.png\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" public void initialize() {","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" userInput.requestFocus(); // re-focus TextField","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" userInput.clear();","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" String response \u003d \"\";","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" response \u003d convo.getResponse(input);","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" } catch (ExitException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" Platform.exit();","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" DialogBox.getDukeDialog(response, convoImage)","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" );","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"aureliony":56}},{"path":"src/main/java/convobot/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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" * The {@code Deadline} class represents a task with a specific deadline.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" * It extends the {@code Task} class and includes functionality to handle deadlines.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" private LocalDate by;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code Deadline} instance with the specified description and deadline.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" * @param description the description of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" * @param by the deadline of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" this(description, false, by);","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code Deadline} instance with the specified description, completion status, and deadline.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" * @param description the description of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" * @param isDone the completion status of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" * @param by the deadline of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" public Deadline(String description, boolean isDone, LocalDate by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" * Converts the {@code Deadline} object to a string format suitable for saving to a file.","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the task for file storage","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" public String toFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" return \"D | \" + super.toFile() + \" | \" + DateTime.dateToFile(this.by);","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" * Returns a string representation of the {@code Deadline} object.","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the task for display","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" return \"[D]\" + super.toString() + \" (by: \" + DateTime.dateToString(this.by) + \")\";","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":56}},{"path":"src/main/java/convobot/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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" * The {@code Event} class represents a task that spans a specific time period.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" * It extends the {@code Task} class and includes functionality to handle events.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" private LocalDate from;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" private LocalDate to;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code Event} instance with the specified description and time period.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" * @param description the description of the event","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" * @param from the start date of the event","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" * @param to the end date of the event","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" public Event(String description, LocalDate from, LocalDate to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" this(description, false, from, to);","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code Event} instance with the specified description, completion status, and time period.","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" * @param description the description of the event","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" * @param isDone the completion status of the event","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" * @param from the start date of the event","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" * @param to the end date of the event","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" public Event(String description, boolean isDone, LocalDate from, LocalDate to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" * Converts the {@code Event} object to a string format suitable for saving to a file.","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the event for file storage","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" public String toFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" return \"E | \" + super.toFile() + \" | \" + DateTime.dateToFile(this.from) + \" | \" + DateTime.dateToFile(this.to);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" * Returns a string representation of the {@code Event} object.","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the event for display","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" return \"[E]\" + super.toString() + \" (from: \" + DateTime.dateToString(this.from) + \" to: \"","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" + DateTime.dateToString(this.to) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":61}},{"path":"src/main/java/convobot/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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":" * The {@code Task} class represents a generic task with a description and completion status.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":" * It serves as the base class for more specialized task types.","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" private String description;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code Task} instance with the specified description.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * @param description the description of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" this(description, false);","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code Task} instance with the specified description and completion status.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * @param description the description of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" * @param isDone the completion status of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-27"},{"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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" * Retrieves the description of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" * @return the description of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" return this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" * Retrieves the completion status of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" * @return {@code true} if the task is done, {@code false} otherwise","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" public boolean getIsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" return isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" * Retrieves the status icon of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" * @return \"X\" if the task is done, \" \" (space) otherwise","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" * Marks the task as done.","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"aureliony"},"content":" * Marks the task as not done.","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":71,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"aureliony"},"content":" * Converts the {@code Task} object to a string format suitable for saving to a file.","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the task for file storage","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"aureliony"},"content":" public String toFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"aureliony"},"content":" return (this.isDone ? \"1\" : \"0\") + \" | \" + this.getDescription();","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"aureliony"},"content":" * Returns a string representation of the {@code Task} object.","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the task for display","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":88,"author":{"gitId":"aureliony"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"aureliony"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.getDescription();","lastModifiedDate":"2024-01-22"},{"lineNumber":90,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":91,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":91}},{"path":"src/main/java/convobot/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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":" * The {@code ToDo} class represents a task without a specific deadline or time period.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":" * It extends the {@code Task} class and provides functionality specific to to-do tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code ToDo} instance with the specified description.","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" * @param description the description of the to-do task","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" this(description, false);","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code ToDo} instance with the specified description and completion status.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" * @param description the description of the to-do task","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" * @param isDone the completion status of the to-do task","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" * Converts the {@code ToDo} object to a string format suitable for saving to a file.","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the to-do task for file storage","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" public String toFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" return \"T | \" + super.toFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" * Returns a string representation of the {@code ToDo} object.","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the to-do task for display","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":47}},{"path":"src/main/java/convobot/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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" * The {@code DateTime} class provides utility methods for handling date and time operations.","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" * It includes methods for converting between {@code LocalDate} objects and formatted strings,","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" * as well as handling exceptions related to date parsing.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"public class DateTime {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" private static final DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" private static final DateTimeFormatter displayFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" * Converts a {@code LocalDate} object to a formatted string suitable for display.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" * @param d the {@code LocalDate} object to be converted","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the date for display","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" public static String dateToString(LocalDate d) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" return d.format(displayFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" * Converts a {@code LocalDate} object to a formatted string suitable for file storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" * @param d the {@code LocalDate} object to be converted","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the date for file storage","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" public static String dateToFile(LocalDate d) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" return d.format(inputFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" * Converts a formatted string to a {@code LocalDate} object.","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" * @param s the formatted string representing the date","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" * @return a {@code LocalDate} object parsed from the input string","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException if the input string is in an invalid date format","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" public static LocalDate stringToDate(String s) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" LocalDate d;","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" d \u003d LocalDate.parse(s, inputFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong date format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" return d;","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":55}},{"path":"src/main/java/convobot/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.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import commands.Add;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"import commands.Bye;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"import commands.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"import commands.CommandType;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"import commands.Delete;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"import commands.Find;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"import commands.List;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"import commands.Mark;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"import commands.Unmark;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"import tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" * The {@code Parser} class provides utility methods for parsing user input and task-related information.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * It includes methods for parsing user commands and converting task-related data to and from strings.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" * Parses user input and returns the corresponding {@code Command} object.","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" * @param userInput the user input to be parsed","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" * @return the corresponding {@code Command} object","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException if the input is invalid or cannot be parsed","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" public static Command parseUserInput(String userInput) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" ArrayList\u003cString\u003e inputList \u003d new ArrayList\u003c\u003e(Arrays.asList(userInput.split(\" \")));","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" if (inputList.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Input must not be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" CommandType commandType;","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" commandType \u003d CommandType.valueOf(inputList.get(0).toUpperCase());","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" String strs \u003d Arrays.stream(CommandType.values())","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" .map(Enum::name)","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Input must be one of: \" + strs + \".\");","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" Command command \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" int i \u003d -1;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" int j \u003d -1;","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" int k \u003d -1;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" case BYE:","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" command \u003d new Bye();","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" case LIST:","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":" command \u003d new List();","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"aureliony"},"content":" case MARK:","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":" i \u003d Integer.parseInt(inputList.get(1)) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number format or index.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"aureliony"},"content":" if (inputList.size() !\u003d 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number of arguments.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"aureliony"},"content":" command \u003d new Mark(i);","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 UNMARK:","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"aureliony"},"content":" i \u003d Integer.parseInt(inputList.get(1)) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"aureliony"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number format or index.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"aureliony"},"content":" if (inputList.size() !\u003d 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number of arguments.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"aureliony"},"content":" command \u003d new Unmark(i);","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 DELETE:","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"aureliony"},"content":" i \u003d Integer.parseInt(inputList.get(1)) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"aureliony"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number format or index.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"aureliony"},"content":" if (inputList.size() !\u003d 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number of arguments.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"aureliony"},"content":" command \u003d new Delete(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"aureliony"},"content":" case TODO:","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"aureliony"},"content":" if (userInput.length() \u003d\u003d 4) {","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"aureliony"},"content":" command \u003d new Add(new ToDo(userInput.substring(5)));","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"aureliony"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"aureliony"},"content":" j \u003d inputList.indexOf(\"/by\");","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"aureliony"},"content":" if (j \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"aureliony"},"content":" if (j \u003d\u003d -1 || j \u003d\u003d inputList.size() - 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Start date missing.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"aureliony"},"content":" description \u003d String.join(\" \", inputList.subList(1, j));","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"aureliony"},"content":" String by \u003d String.join(\" \", inputList.subList(j + 1, inputList.size()));","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"aureliony"},"content":" command \u003d new Add(new Deadline(description, DateTime.stringToDate(by)));","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"aureliony"},"content":" case EVENT:","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"aureliony"},"content":" j \u003d inputList.indexOf(\"/from\");","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"aureliony"},"content":" k \u003d inputList.indexOf(\"/to\");","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"aureliony"},"content":" if (j \u003d\u003d 1 || k \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"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":130,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Start date missing.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"aureliony"},"content":" if (k \u003d\u003d -1 || k \u003d\u003d inputList.size() - 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. End date missing.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"aureliony"},"content":" description \u003d String.join(\" \", inputList.subList(1, j));","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"aureliony"},"content":" String from \u003d String.join(\" \", inputList.subList(j + 1, k));","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"aureliony"},"content":" String to \u003d String.join(\" \", inputList.subList(k + 1, inputList.size()));","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"aureliony"},"content":" command \u003d new Add(new Event(description, DateTime.stringToDate(from), DateTime.stringToDate(to)));","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"aureliony"},"content":" case FIND:","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"aureliony"},"content":" if (inputList.size() \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number of arguments.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"aureliony"},"content":" String query \u003d String.join(\" \", inputList.subList(1, inputList.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"aureliony"},"content":" command \u003d new Find(query);","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"aureliony"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":150,"author":{"gitId":"aureliony"},"content":" // impossible to reach","lastModifiedDate":"2024-01-28"},{"lineNumber":151,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":153,"author":{"gitId":"aureliony"},"content":" return command;","lastModifiedDate":"2024-01-28"},{"lineNumber":154,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":155,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":156,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"aureliony"},"content":" * Parses a line of text and returns the corresponding {@code Task} object.","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"aureliony"},"content":" * @param line the line of text representing a task","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"aureliony"},"content":" * @return the corresponding {@code Task} object","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"aureliony"},"content":" * @throws IllegalArgumentException if the line is in an invalid format","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"aureliony"},"content":" public static Task parseTaskFromLine(String line) throws IllegalArgumentException {","lastModifiedDate":"2024-01-28"},{"lineNumber":164,"author":{"gitId":"aureliony"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-28"},{"lineNumber":165,"author":{"gitId":"aureliony"},"content":" if (parts.length \u003c 3 || parts.length \u003e 5) {","lastModifiedDate":"2024-01-28"},{"lineNumber":166,"author":{"gitId":"aureliony"},"content":" throw new IllegalArgumentException(\"Invalid line format: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":167,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"aureliony"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"aureliony"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-28"},{"lineNumber":170,"author":{"gitId":"aureliony"},"content":" Task task;","lastModifiedDate":"2024-01-28"},{"lineNumber":171,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":172,"author":{"gitId":"aureliony"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-01-28"},{"lineNumber":173,"author":{"gitId":"aureliony"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":174,"author":{"gitId":"aureliony"},"content":" task \u003d new ToDo(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":175,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":176,"author":{"gitId":"aureliony"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":177,"author":{"gitId":"aureliony"},"content":" task \u003d new Deadline(description, isDone, DateTime.stringToDate(parts[3]));","lastModifiedDate":"2024-01-28"},{"lineNumber":178,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":179,"author":{"gitId":"aureliony"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":180,"author":{"gitId":"aureliony"},"content":" task \u003d new Event(description, isDone, DateTime.stringToDate(parts[3]), DateTime.stringToDate(parts[4]));","lastModifiedDate":"2024-01-28"},{"lineNumber":181,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":182,"author":{"gitId":"aureliony"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":183,"author":{"gitId":"aureliony"},"content":" throw new IllegalArgumentException(\"Invalid line format: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":184,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":185,"author":{"gitId":"aureliony"},"content":" } catch (ConvoBotException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":186,"author":{"gitId":"aureliony"},"content":" throw new IllegalArgumentException(\"Invalid line format: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":187,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":188,"author":{"gitId":"aureliony"},"content":" return task;","lastModifiedDate":"2024-01-28"},{"lineNumber":189,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":190,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":190}},{"path":"src/main/java/convobot/utils/ResponseConstructor.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package utils;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" * The {@code ResponseConstructor} class constructs ConvoBot\u0027s response.","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" * It includes methods for formatting messages, tasks and errors.","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"public class ResponseConstructor {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" private final StringBuilder response \u003d new StringBuilder();","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code ResponseConstructor} instance.","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" public ResponseConstructor() {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" // ...","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" * Displays a welcome message in the console.","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" public void showWelcomeMsg() {","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" response.append(\"Hello! I\u0027m ConvoBot. What can I do for you?\");","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" * Displays an exit message in the console.","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" public void showExitMsg() {","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" response.append(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" * Displays the task list in the console.","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" * @param tasks the task list to be displayed","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" response.append(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" int index \u003d i + 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" response.append(Integer.toString(index) + \".\" + tasks.getTaskString(i) + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" } catch (ConvoBotException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" // impossible to reach here","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" * Displays the matching tasks from the provided ArrayList of tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" * Each task is printed with its corresponding index in the list.","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" * @param tasks An ArrayList of Strings containing the task strings to be displayed.","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" * @throws NullPointerException If the tasks ArrayList is null.","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":" public void showMatchingTasks(ArrayList\u003cString\u003e tasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" response.append(\"Here are the matching tasks in your list:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"aureliony"},"content":" int index \u003d i + 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"aureliony"},"content":" response.append(Integer.toString(index) + \".\" + tasks.get(i) + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":" * Displays a message indicating that a task has been added.","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"aureliony"},"content":" * @param taskString the string representation of the added task","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"aureliony"},"content":" * @param dbSize the size of the task list after adding the task","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"aureliony"},"content":" public void showAdded(String taskString, int dbSize) {","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"aureliony"},"content":" response.append(\"Got it. I\u0027ve added this task:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"aureliony"},"content":" response.append(\" \" + taskString + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"aureliony"},"content":" response.append(\"Now you have \" + Integer.toString(dbSize) + \" tasks in the list.\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"aureliony"},"content":" * Displays a message indicating that a task has been removed.","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"aureliony"},"content":" * @param taskString the string representation of the removed task","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"aureliony"},"content":" * @param dbSize the size of the task list after removing the task","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"aureliony"},"content":" public void showRemoved(String taskString, int dbSize) {","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"aureliony"},"content":" response.append(\"Noted. I\u0027ve removed this task:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"aureliony"},"content":" response.append(\" \" + taskString + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"aureliony"},"content":" response.append(\"Now you have \" + Integer.toString(dbSize) + \" tasks in the list.\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"aureliony"},"content":" * Displays a message indicating that a task has been marked as done.","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"aureliony"},"content":" * @param taskString the string representation of the marked task","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"aureliony"},"content":" public void showMarked(String taskString) {","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"aureliony"},"content":" response.append(\"Nice! I\u0027ve marked this task as done:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"aureliony"},"content":" response.append(\" \" + taskString + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"aureliony"},"content":" * Displays a message indicating that a task has been marked as not done.","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":106,"author":{"gitId":"aureliony"},"content":" * @param taskString the string representation of the unmarked task","lastModifiedDate":"2024-02-06"},{"lineNumber":107,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"aureliony"},"content":" public void showUnmarked(String taskString) {","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"aureliony"},"content":" response.append(\"OK, I\u0027ve marked this task as not done yet:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"aureliony"},"content":" response.append(\" \" + taskString + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":111,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":113,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"aureliony"},"content":" * Displays an error message in the console.","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"aureliony"},"content":" * @param errorMsg the error message to be displayed","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":118,"author":{"gitId":"aureliony"},"content":" public void showError(String errorMsg) {","lastModifiedDate":"2024-02-06"},{"lineNumber":119,"author":{"gitId":"aureliony"},"content":" response.append(errorMsg + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":121,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":122,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":123,"author":{"gitId":"aureliony"},"content":" * Returns the constructed string and clears the buffer.","lastModifiedDate":"2024-02-06"},{"lineNumber":124,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":125,"author":{"gitId":"aureliony"},"content":" * @return the constructed string.","lastModifiedDate":"2024-02-06"},{"lineNumber":126,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":127,"author":{"gitId":"aureliony"},"content":" public String getResponse() {","lastModifiedDate":"2024-02-06"},{"lineNumber":128,"author":{"gitId":"aureliony"},"content":" String result \u003d response.toString();","lastModifiedDate":"2024-02-06"},{"lineNumber":129,"author":{"gitId":"aureliony"},"content":" response.setLength(0);","lastModifiedDate":"2024-02-06"},{"lineNumber":130,"author":{"gitId":"aureliony"},"content":" return result;","lastModifiedDate":"2024-02-06"},{"lineNumber":131,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":132,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"aureliony":132}},{"path":"src/main/java/convobot/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.BufferedReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" * The {@code Storage} class provides methods for reading and writing task data to a file.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * It interacts with the file system to perform read and write operations on the task data file.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" private final String filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code Storage} instance with the specified file path.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * @param filePath the file path where task data is stored","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" * Reads task data from the specified file and returns an {@code ArrayList} of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" * @return an {@code ArrayList} of tasks read from the file","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" public ArrayList\u003cTask\u003e read() {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(filePath));","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" String line;","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" Task task \u003d Parser.parseTaskFromLine(line);","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" reader.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" // ignored as taskList will be returned empty","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" return taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" * Writes the provided {@code ArrayList} of tasks to the specified file.","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" * @param taskList the {@code ArrayList} of tasks to be written to the file","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" public void write(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file));","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" writer.write(task.toFile());","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":" writer.newLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"aureliony"},"content":" writer.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"aureliony"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"aureliony"},"content":" // ignored, write to file failed possibly due to insufficient permissions","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":70}},{"path":"src/main/java/convobot/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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" * The {@code TaskList} class represents a collection of tasks and provides methods for managing the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" * It includes operations such as adding tasks, marking tasks as done or not done, retrieving task details,","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" * deleting tasks, and obtaining the size of the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"public class TaskList {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" private Storage db;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code TaskList} instance with an empty task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" public TaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" taskList \u003d new ArrayList\u003c\u003e();","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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code TaskList} instance and initializes it with tasks read from the specified storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" * @param db the storage instance used to read tasks","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" public TaskList(Storage db) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" this.db \u003d db;","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" taskList \u003d db.read();","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" * Adds a task to the task list and updates the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" * @param task the task to be added to the task list","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" public void add(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" db.write(taskList);","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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" * Marks a task in the task list as done or not done based on the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" * @param i the index of the task in the task list","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" * @param isDone {@code true} if the task should be marked as done, {@code false} if marked as not done","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException if the index is out of bounds","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" public void mark(int i, boolean isDone) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" if (i \u003c 0 || i \u003e\u003d taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. You must specify a valid index.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" Task task \u003d taskList.get(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" if (isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"aureliony"},"content":" * Retrieves the string representation of a task in the task list based on the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"aureliony"},"content":" * @param i the index of the task in the task list","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":" * @return the string representation of the specified task","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException if the index is out of bounds","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"aureliony"},"content":" public String getTaskString(int i) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"aureliony"},"content":" if (i \u003c 0 || i \u003e\u003d taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. You must specify a valid index.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"aureliony"},"content":" return taskList.get(i).toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"aureliony"},"content":" * Retrieves the description of the task at the specified index in the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"aureliony"},"content":" * @param i The index of the task to retrieve. It should be a non-negative integer","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"aureliony"},"content":" * and less than the size of the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"aureliony"},"content":" * @return The description of the task at the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException If the index is less than 0 or greater than or equal to","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"aureliony"},"content":" * the size of the task list, an exception is thrown with","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"aureliony"},"content":" * the message \"Invalid input. You must specify a valid index.\"","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"aureliony"},"content":" public String getTaskDescription(int i) throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"aureliony"},"content":" if (i \u003c 0 || i \u003e\u003d taskList.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. You must specify a valid index.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"aureliony"},"content":" return taskList.get(i).getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"aureliony"},"content":" * Deletes a task from the task list based on the specified index and updates the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"aureliony"},"content":" * @param i the index of the task in the task list","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException if the index is out of bounds","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"aureliony"},"content":" public void delete(int i) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"aureliony"},"content":" if (i \u003c 0 || i \u003e\u003d taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. You must specify a valid index.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"aureliony"},"content":" taskList.remove(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"aureliony"},"content":" db.write(taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"aureliony"},"content":" * Returns the number of tasks in the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"aureliony"},"content":" * @return the size of the task list","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"aureliony"},"content":" public int size() {","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"aureliony"},"content":" return taskList.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":117}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"Infinity\" maxWidth\u003d\"Infinity\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" minHeight\u003d\"-Infinity\"\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" \u003cInsets top\u003d\"0.0\" right\u003d\"5.0\" bottom\u003d\"0.0\" left\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"80.0\" fitWidth\u003d\"80.0\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" \u003cInsets top\u003d\"15.0\" right\u003d\"5.0\" bottom\u003d\"15.0\" left\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"aureliony":20}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"gui.MainWindow\"\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" vbarPolicy\u003d\"ALWAYS\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" \u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"384.0\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"aureliony":19}},{"path":"src/test/java/convobot/utils/ParserTest.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.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"","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":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"import commands.Add;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"import commands.Bye;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"import commands.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"import commands.Delete;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"import commands.List;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"import commands.Mark;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"import commands.Unmark;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":"import tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":"class ParserTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" void parseUserInputByeCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"bye\";","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 Bye);","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 parseUserInputListCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"list\";","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 List);","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 parseUserInputMarkCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"mark 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 Mark);","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 parseUserInputUnmarkCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"unmark 1\";","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 Unmark);","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 parseUserInputDeleteCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"delete 1\";","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 Delete);","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 parseUserInputTodoCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"todo Read a book\";","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 parseUserInputDeadlineCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"deadline Finish project /by 2024-02-01\";","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" Command command \u003d Parser.parseUserInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":" assertTrue(command instanceof Add);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"aureliony"},"content":" void parseUserInputEventCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"event Team meeting /from 2024-02-01 /to 2024-02-02\";","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"aureliony"},"content":" Command command \u003d Parser.parseUserInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"aureliony"},"content":" assertTrue(command instanceof Add);","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"aureliony"},"content":" void parseUserInputInvalidCommand_invalidCommand_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"invalidCommand\";","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e Parser.parseUserInput(userInput));","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"aureliony"},"content":" void parseUserInputInvalidArguments_invalidArguments_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"mark\";","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e Parser.parseUserInput(userInput));","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"aureliony"},"content":" void parseUserInputEmptyInput_emptyInput_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e Parser.parseUserInput(userInput));","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"aureliony"},"content":" void parseTaskFromLineTodo_validInput_taskParsedSuccessfully() throws IllegalArgumentException {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"aureliony"},"content":" String line \u003d \"T | 0 | Read a book\";","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"aureliony"},"content":" Task task \u003d Parser.parseTaskFromLine(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"aureliony"},"content":" assertTrue(task instanceof ToDo);","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"aureliony"},"content":" assertFalse(task.getIsDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"aureliony"},"content":" assertEquals(\"Read a book\", task.getDescription());","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"aureliony"},"content":" void parseTaskFromLineDeadline_validInput_taskParsedSuccessfully() throws IllegalArgumentException {","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"aureliony"},"content":" String line \u003d \"D | 1 | Finish project | 2024-02-01\";","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"aureliony"},"content":" Task task \u003d Parser.parseTaskFromLine(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"aureliony"},"content":" assertTrue(task instanceof Deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"aureliony"},"content":" assertTrue(task.getIsDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"aureliony"},"content":" assertEquals(\"Finish project\", task.getDescription());","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"aureliony"},"content":" void parseTaskFromLineEvent_validInput_taskParsedSuccessfully() throws IllegalArgumentException {","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"aureliony"},"content":" String line \u003d \"E | 0 | Team meeting | 2024-02-01 | 2024-02-02\";","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"aureliony"},"content":" Task task \u003d Parser.parseTaskFromLine(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"aureliony"},"content":" assertTrue(task instanceof Event);","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"aureliony"},"content":" assertFalse(task.getIsDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"aureliony"},"content":" assertEquals(\"Team meeting\", task.getDescription());","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"aureliony"},"content":" void parseTaskFromLineInvalidFormat_invalidFormat_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"aureliony"},"content":" String line \u003d \"Invalid Format\";","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"aureliony"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e Parser.parseTaskFromLine(line));","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"aureliony":130}},{"path":"src/test/java/convobot/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.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import static org.mockito.Mockito.times;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":"class TaskListTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" @BeforeEach","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" void setUp() {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" storage \u003d mock(Storage.class);","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" taskList \u003d new TaskList(storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" void addTask_sampleToDo_singleTaskAdded() {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" Task task \u003d mock(ToDo.class);","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" assertEquals(1, taskList.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" void markTaskAsDone_sampleToDo_taskMarkedAsDone() throws ConvoBotException {","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" Task task \u003d mock(ToDo.class);","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" taskList.mark(0, true);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" verify(task, times(1)).markAsDone();","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" void getTaskString_validTaskIndex_taskStringReturned() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" Task task \u003d mock(ToDo.class);","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" when(task.toString()).thenReturn(\"[T][ ] Sample Task\");","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" String taskString \u003d taskList.getTaskString(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" assertEquals(\"[T][ ] Sample Task\", taskString);","lastModifiedDate":"2024-01-31"},{"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 deleteTask_validTaskIndex_taskDeleted() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" Task task \u003d mock(ToDo.class);","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" taskList.delete(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" assertEquals(0, taskList.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":" void markTaskAsDone_invalidIndex_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e taskList.mark(-1, true));","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e taskList.mark(10, true));","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 getTaskString_invalidIndex_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e taskList.getTaskString(-1));","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e taskList.getTaskString(10));","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 deleteTask_invalidIndex_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e taskList.delete(-1));","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e taskList.delete(10));","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"aureliony":77}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"// Apply necessary plugins","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":" id \u0027checkstyle\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":"aureliony"},"content":"// Configure repositories for dependencies","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"// Define project dependencies","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" testImplementation group: \u0027org.mockito\u0027, name: \u0027mockito-core\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" String javaFxVersion \u003d \u002717.0.10\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":"// Configure application-related settings","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":"application {","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" mainClass.set(\"gui.ConvoBot\")","lastModifiedDate":"2024-02-06"},{"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":"// Configure settings for Shadow","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":"shadowJar {","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" archiveBaseName \u003d \"convobot\"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":"// Configure run task settings","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":"run {","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" standardInput \u003d System.in","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":"runShadow {","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" standardInput \u003d System.in","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":"// Configure test task","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":"// Configure Javadoc generation","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":"javadoc {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":" destinationDir \u003d file(\"$buildDir/docs/javadoc\")","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":72,"author":{"gitId":"aureliony"},"content":"build.dependsOn javadoc","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"aureliony"},"content":"// Configure checkstyle","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"aureliony"},"content":"checkstyle {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"aureliony"},"content":" toolVersion \u003d \u002710.12.5\u0027","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"aureliony"},"content":"build.dependsOn \u0027checkstyleMain\u0027, \u0027checkstyleTest\u0027","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"aureliony":46,"-":32}},{"path":"src/main/java/convobot/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 tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.ResponseConstructor;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" * Represents a command to add a task to the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"public class Add implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" private final Task task;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * Constructor for the Add command.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" public Add(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * Executes the Add command by adding the task to the task list and displaying a confirmation message.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" * @param taskList The task list to which the task will be added.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" * @param rc The response constructor for constructing messages.","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, ResponseConstructor rc) {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" rc.showAdded(task.toString(), taskList.size());","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" * Checks if the Add command is an exit command. Always returns false for Add commands.","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" * @return Always false.","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":42}},{"path":"src/main/java/convobot/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.ResponseConstructor;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":" * Represents a command to exit the application.","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"public class Bye implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" * Executes the Bye command. This implementation does nothing as it signifies the end of the application.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" * @param taskList The task list (not used in this command).","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * @param rc The response constructor (not used in this command).","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, ResponseConstructor rc) {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" return;","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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" * Checks if the Bye command is an exit command. Always returns true for Bye commands.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * @return Always true.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" return true;","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":29}},{"path":"src/main/java/convobot/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.ResponseConstructor;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" * Represents a command in the ConvoBot application.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"public interface Command {","lastModifiedDate":"2024-01-28"},{"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":" * Executes the command with the given task list and user interface.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * @param taskList The task list on which the command operates.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" * @param rc The response constructor for constructing messages.","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException If an exception specific to ConvoBot occurs during command execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, ResponseConstructor rc) throws ConvoBotException;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" * Checks if the command is an exit command.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * @return True if the command is an exit command, false otherwise.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" public boolean isExit();","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":27}},{"path":"src/main/java/convobot/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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":" * Represents the types of commands available in the ConvoBot application.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"public enum CommandType {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" * Command type to exit the application.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" BYE,","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" * Command type to list tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" LIST,","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" * Command type to mark a task as done.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" MARK,","lastModifiedDate":"2024-01-28"},{"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":" * Command type to unmark a previously marked task.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" UNMARK,","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" * Command type to delete a task.","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" DELETE,","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" * Command type to add a simple to-do task.","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" TODO,","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" * Command type to add a task with a deadline.","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" DEADLINE,","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" * Command type to add an event task.","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" EVENT,","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" * Command type to find matching tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" FIND","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":52}},{"path":"src/main/java/convobot/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.ResponseConstructor;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" * Represents a command to delete a task from the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"public class Delete implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" private final int i;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * Constructor for the Delete command.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" * @param i The index of the task to be deleted.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" public Delete(int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" this.i \u003d i;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * Executes the Delete command by deleting the task from the task list and displaying a removal message.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" * @param taskList The task list from which the task will be deleted.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" * @param rc The response constructor for constructing messages.","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException If an exception specific to ConvoBot occurs during command execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, ResponseConstructor rc) throws ConvoBotException {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" String removedTaskString \u003d taskList.getTaskString(i);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" taskList.delete(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" rc.showRemoved(removedTaskString, taskList.size());","lastModifiedDate":"2024-02-06"},{"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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" * Checks if the Delete command is an exit command. Always returns false for Delete commands.","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" * @return Always false.","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":44}},{"path":"src/main/java/convobot/commands/Find.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package commands;","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import utils.ResponseConstructor;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" * Represents the Find command, which searches for tasks in a TaskList based on a given query.","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"public class Find implements Command {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * The query to be used for searching tasks. Case-insensitive.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" private final String query;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" * Constructs a Find command with the specified query.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" * @param query The query to be used for searching tasks. Case-insensitive.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" public Find(String query) {","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" this.query \u003d query.toLowerCase(); // make query case-insensitive","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" * Executes the Find command by searching for tasks that match the specified query.","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" * @param taskList The TaskList to search for matching tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" * @param rc The response constructor to construct the string for the matching tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException If there is an issue executing the command.","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, ResponseConstructor rc) throws ConvoBotException {","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" ArrayList\u003cString\u003e matchingTaskStrings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" String desc \u003d taskList.getTaskDescription(i).toLowerCase(); // query is case-insensitive","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" if (desc.contains(query)) {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" matchingTaskStrings.add(taskList.getTaskString(i));","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" rc.showMatchingTasks(matchingTaskStrings);","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" * Indicates whether the Find command is an exit command.","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" * @return False, as Find is not an exit command.","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"aureliony":54}},{"path":"src/main/java/convobot/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.ResponseConstructor;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":" * Represents a command to display the list of tasks in the ConvoBot application.","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"public class List implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" * Executes the List command by displaying the task list using the provided user interface.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" * @param taskList The task list to be displayed.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * @param rc The response constructor for constructing messages.","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, ResponseConstructor rc) {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" rc.showTaskList(taskList);","lastModifiedDate":"2024-02-06"},{"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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" * Checks if the List command is an exit command. Always returns false for List commands.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * @return Always false.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":29}},{"path":"src/main/java/convobot/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.ResponseConstructor;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" * Represents a command to mark a task as completed in the ConvoBot application.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"public class Mark implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" private final int i;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * Constructor for the Mark command.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" * @param i The index of the task to be marked as completed.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" public Mark(int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" this.i \u003d i;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * Executes the Mark command by marking the specified task as completed and displaying a confirmation message.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" * @param taskList The task list containing the task to be marked.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" * @param rc The response constructor for constructing messages.","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException If an exception specific to ConvoBot occurs during command execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, ResponseConstructor rc) throws ConvoBotException {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" taskList.mark(i, true);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" rc.showMarked(taskList.getTaskString(i));","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" * Checks if the Mark command is an exit command. Always returns false for Mark commands.","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" * @return Always false.","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":43}},{"path":"src/main/java/convobot/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.ResponseConstructor;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" * Represents a command to unmark a completed task in the ConvoBot application.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"public class Unmark implements Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" private final int i;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * Constructor for the Unmark command.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" * @param i The index of the task to be unmarked.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" public Unmark(int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" this.i \u003d i;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * Executes the Unmark command by unmarking the specified completed task and displaying a confirmation message.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" * @param taskList The task list containing the task to be unmarked.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" * @param rc The response constructor for constructing messages.","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException If an exception specific to ConvoBot occurs during command execution.","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" public void execute(TaskList taskList, ResponseConstructor rc) throws ConvoBotException {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" taskList.mark(i, false);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" rc.showUnmarked(taskList.getTaskString(i));","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" * Checks if the Unmark command is an exit command. Always returns false for Unmark commands.","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" * @return Always false.","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":43}},{"path":"src/main/java/convobot/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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":" * The {@code ConvoBotException} class represents an exception specific to the ConvoBot application.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":" * It extends the standard {@code Exception} class and provides additional constructors for","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":" * customized exception handling.","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"public class ConvoBotException extends Exception {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code ConvoBotException} with no specified detail message.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" public ConvoBotException() {","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" super();","lastModifiedDate":"2024-01-22"},{"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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code ConvoBotException} with the specified detail message.","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" * @param message the detail message (which is saved for later retrieval by the {@code getMessage()} method)","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" public ConvoBotException(String message) {","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" super(message);","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code ConvoBotException} with the specified detail message and cause.","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" * @param message the detail message (which is saved for later retrieval by the {@code getMessage()} method)","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" * @param cause the cause (which is saved for later retrieval by the {@code getCause()} method)","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" public ConvoBotException(String message, Throwable cause) {","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" super(message, cause);","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":35}},{"path":"src/main/java/convobot/exceptions/ExitException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package exceptions;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":" * A utility class that tells the application to exit.","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"public class ExitException extends Exception {","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code ExitException}.","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" public ExitException() {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" super();","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"aureliony":15}},{"path":"src/main/java/convobot/gui/ConvoBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package gui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import commands.Command;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import exceptions.ExitException;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import utils.Parser;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"import utils.ResponseConstructor;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"import utils.Storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"import utils.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" * The main class representing the ConvoBot application.","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"public class ConvoBot {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" private final TaskList tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" private final ResponseConstructor rc \u003d new ResponseConstructor();","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" * Constructor for the ConvoBot class.","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" * @param filePath The file path for task data storage.","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" public ConvoBot(String filePath) {","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" tasks \u003d new TaskList(new Storage(filePath));","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" * Retrieves a response from ConvoBot based on the provided input.","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" * @param userInput The input string representing the user\u0027s message.","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" * @return A string containing ConvoBot\u0027s response.","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" * @throws ExitException If the user enters an exit command, this exception is thrown","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" * to indicate that the application should exit.","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" public String getResponse(String userInput) throws ExitException {","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" Command c;","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" c \u003d Parser.parseUserInput(userInput);","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" if (c.isExit()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" throw new ExitException();","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" } catch (ConvoBotException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" rc.showError(e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" return rc.getResponse();","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" c.execute(tasks, rc);","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" } catch (ConvoBotException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" rc.showError(e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" return rc.getResponse();","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" * Main entry point for the ConvoBot application.","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" * @param args Command-line arguments (not used in this application).","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"aureliony":65}},{"path":"src/main/java/convobot/gui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package gui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" * A custom control using FXML.","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" * This control represents a dialog box consisting of an ImageView to represent","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" * the speaker\u0027s face and a label containing text from the speaker.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" private Label dialog;","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" private void flip() {","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" DialogBox db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" db.flip();","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" return db;","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"aureliony":61}},{"path":"src/main/java/convobot/gui/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package gui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"import javafx.scene.text.Font;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" * The entry point for the ConvoBot GUI Application using FXML.","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" stage.setTitle(\"ConvoBot\");","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" stage.getIcons().add(new Image(getClass().getResourceAsStream(\"/images/DaConvo.png\")));","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/styles/SourceSans3-Regular.otf\"), 16);","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" Font.loadFont(getClass().getResourceAsStream(\"/styles/PeaxHandwritingbold.ttf\"), 16);","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" scene.getStylesheets().add(getClass().getResource(\"/styles/dark-theme.css\").toExternalForm());","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" stage.setResizable(false);","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" stage.show();","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"aureliony":37}},{"path":"src/main/java/convobot/gui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package gui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import exceptions.ExitException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import javafx.application.Platform;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" private static final ConvoBot convo \u003d new ConvoBot(\"./data/tasks.txt\");","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" private final Image userImage \u003d new Image(getClass().getResourceAsStream(\"/images/DaUser.png\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" private final Image convoImage \u003d new Image(getClass().getResourceAsStream(\"/images/DaConvo.png\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" public void initialize() {","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" userInput.requestFocus(); // re-focus TextField","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" userInput.clear();","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" String response \u003d \"\";","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" response \u003d convo.getResponse(input);","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" } catch (ExitException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" Platform.exit();","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" DialogBox.getDukeDialog(response, convoImage)","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" );","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"aureliony":56}},{"path":"src/main/java/convobot/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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" * The {@code Deadline} class represents a task with a specific deadline.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" * It extends the {@code Task} class and includes functionality to handle deadlines.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" private LocalDate by;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code Deadline} instance with the specified description and deadline.","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" * @param description the description of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" * @param by the deadline of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" this(description, false, by);","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code Deadline} instance with the specified description, completion status, and deadline.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" * @param description the description of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" * @param isDone the completion status of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" * @param by the deadline of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" public Deadline(String description, boolean isDone, LocalDate by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" * Converts the {@code Deadline} object to a string format suitable for saving to a file.","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the task for file storage","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" public String toFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" return \"D | \" + super.toFile() + \" | \" + DateTime.dateToFile(this.by);","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" * Returns a string representation of the {@code Deadline} object.","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the task for display","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" return \"[D]\" + super.toString() + \" (by: \" + DateTime.dateToString(this.by) + \")\";","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":56}},{"path":"src/main/java/convobot/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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" * The {@code Event} class represents a task that spans a specific time period.","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" * It extends the {@code Task} class and includes functionality to handle events.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" private LocalDate from;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" private LocalDate to;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code Event} instance with the specified description and time period.","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" * @param description the description of the event","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" * @param from the start date of the event","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" * @param to the end date of the event","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" public Event(String description, LocalDate from, LocalDate to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" this(description, false, from, to);","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code Event} instance with the specified description, completion status, and time period.","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" * @param description the description of the event","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" * @param isDone the completion status of the event","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" * @param from the start date of the event","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" * @param to the end date of the event","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" public Event(String description, boolean isDone, LocalDate from, LocalDate to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" * Converts the {@code Event} object to a string format suitable for saving to a file.","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the event for file storage","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" public String toFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" return \"E | \" + super.toFile() + \" | \" + DateTime.dateToFile(this.from) + \" | \" + DateTime.dateToFile(this.to);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" * Returns a string representation of the {@code Event} object.","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the event for display","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" return \"[E]\" + super.toString() + \" (from: \" + DateTime.dateToString(this.from) + \" to: \"","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" + DateTime.dateToString(this.to) + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":61}},{"path":"src/main/java/convobot/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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":" * The {@code Task} class represents a generic task with a description and completion status.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":" * It serves as the base class for more specialized task types.","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" private String description;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code Task} instance with the specified description.","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * @param description the description of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" this(description, false);","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code Task} instance with the specified description and completion status.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * @param description the description of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" * @param isDone the completion status of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-27"},{"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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" * Retrieves the description of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" * @return the description of the task","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" return this.description;","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" * Retrieves the completion status of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" * @return {@code true} if the task is done, {@code false} otherwise","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" public boolean getIsDone() {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" return isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" * Retrieves the status icon of the task.","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" * @return \"X\" if the task is done, \" \" (space) otherwise","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" * Marks the task as done.","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":64,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":66,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"aureliony"},"content":" * Marks the task as not done.","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":71,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":72,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":73,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"aureliony"},"content":" * Converts the {@code Task} object to a string format suitable for saving to a file.","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the task for file storage","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"aureliony"},"content":" public String toFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"aureliony"},"content":" return (this.isDone ? \"1\" : \"0\") + \" | \" + this.getDescription();","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"aureliony"},"content":" * Returns a string representation of the {@code Task} object.","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the task for display","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":88,"author":{"gitId":"aureliony"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":89,"author":{"gitId":"aureliony"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.getDescription();","lastModifiedDate":"2024-01-22"},{"lineNumber":90,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":91,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":91}},{"path":"src/main/java/convobot/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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":" * The {@code ToDo} class represents a task without a specific deadline or time period.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":" * It extends the {@code Task} class and provides functionality specific to to-do tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code ToDo} instance with the specified description.","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" * @param description the description of the to-do task","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" this(description, false);","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code ToDo} instance with the specified description and completion status.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" * @param description the description of the to-do task","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" * @param isDone the completion status of the to-do task","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" * Converts the {@code ToDo} object to a string format suitable for saving to a file.","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the to-do task for file storage","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" public String toFile() {","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" return \"T | \" + super.toFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" * Returns a string representation of the {@code ToDo} object.","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the to-do task for display","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"aureliony":47}},{"path":"src/main/java/convobot/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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" * The {@code DateTime} class provides utility methods for handling date and time operations.","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" * It includes methods for converting between {@code LocalDate} objects and formatted strings,","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" * as well as handling exceptions related to date parsing.","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"public class DateTime {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" private static final DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" private static final DateTimeFormatter displayFormatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\");","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" * Converts a {@code LocalDate} object to a formatted string suitable for display.","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" * @param d the {@code LocalDate} object to be converted","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the date for display","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" public static String dateToString(LocalDate d) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" return d.format(displayFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" * Converts a {@code LocalDate} object to a formatted string suitable for file storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" * @param d the {@code LocalDate} object to be converted","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" * @return a formatted string representing the date for file storage","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" public static String dateToFile(LocalDate d) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" return d.format(inputFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" * Converts a formatted string to a {@code LocalDate} object.","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" * @param s the formatted string representing the date","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" * @return a {@code LocalDate} object parsed from the input string","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException if the input string is in an invalid date format","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" public static LocalDate stringToDate(String s) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" LocalDate d;","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" d \u003d LocalDate.parse(s, inputFormatter);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong date format.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" return d;","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":55}},{"path":"src/main/java/convobot/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.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import commands.Add;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"import commands.Bye;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"import commands.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"import commands.CommandType;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"import commands.Delete;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"import commands.Find;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"import commands.List;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"import commands.Mark;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"import commands.Unmark;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"import tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" * The {@code Parser} class provides utility methods for parsing user input and task-related information.","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * It includes methods for parsing user commands and converting task-related data to and from strings.","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" * Parses user input and returns the corresponding {@code Command} object.","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" * @param userInput the user input to be parsed","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" * @return the corresponding {@code Command} object","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException if the input is invalid or cannot be parsed","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" public static Command parseUserInput(String userInput) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" ArrayList\u003cString\u003e inputList \u003d new ArrayList\u003c\u003e(Arrays.asList(userInput.split(\" \")));","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" if (inputList.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Input must not be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" CommandType commandType;","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" commandType \u003d CommandType.valueOf(inputList.get(0).toUpperCase());","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" String strs \u003d Arrays.stream(CommandType.values())","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" .map(Enum::name)","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" .collect(Collectors.joining(\", \"));","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Input must be one of: \" + strs + \".\");","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" Command command \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" int i \u003d -1;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" int j \u003d -1;","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" int k \u003d -1;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" case BYE:","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" command \u003d new Bye();","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" case LIST:","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":" command \u003d new List();","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"aureliony"},"content":" case MARK:","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":" i \u003d Integer.parseInt(inputList.get(1)) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number format or index.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"aureliony"},"content":" if (inputList.size() !\u003d 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number of arguments.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"aureliony"},"content":" command \u003d new Mark(i);","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 UNMARK:","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"aureliony"},"content":" i \u003d Integer.parseInt(inputList.get(1)) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"aureliony"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number format or index.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"aureliony"},"content":" if (inputList.size() !\u003d 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number of arguments.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"aureliony"},"content":" command \u003d new Unmark(i);","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 DELETE:","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"aureliony"},"content":" i \u003d Integer.parseInt(inputList.get(1)) - 1;","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"aureliony"},"content":" } catch (NumberFormatException | IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number format or index.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"aureliony"},"content":" if (inputList.size() !\u003d 2) {","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number of arguments.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"aureliony"},"content":" command \u003d new Delete(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"aureliony"},"content":" case TODO:","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"aureliony"},"content":" if (userInput.length() \u003d\u003d 4) {","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"aureliony"},"content":" command \u003d new Add(new ToDo(userInput.substring(5)));","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"aureliony"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"aureliony"},"content":" j \u003d inputList.indexOf(\"/by\");","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"aureliony"},"content":" if (j \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. The description of a deadline cannot be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"aureliony"},"content":" if (j \u003d\u003d -1 || j \u003d\u003d inputList.size() - 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Start date missing.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"aureliony"},"content":" description \u003d String.join(\" \", inputList.subList(1, j));","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"aureliony"},"content":" String by \u003d String.join(\" \", inputList.subList(j + 1, inputList.size()));","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"aureliony"},"content":" command \u003d new Add(new Deadline(description, DateTime.stringToDate(by)));","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"aureliony"},"content":" case EVENT:","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"aureliony"},"content":" j \u003d inputList.indexOf(\"/from\");","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"aureliony"},"content":" k \u003d inputList.indexOf(\"/to\");","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"aureliony"},"content":" if (j \u003d\u003d 1 || k \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. The description of an event cannot be empty.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"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":130,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Start date missing.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"aureliony"},"content":" if (k \u003d\u003d -1 || k \u003d\u003d inputList.size() - 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. End date missing.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"aureliony"},"content":" description \u003d String.join(\" \", inputList.subList(1, j));","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"aureliony"},"content":" String from \u003d String.join(\" \", inputList.subList(j + 1, k));","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"aureliony"},"content":" String to \u003d String.join(\" \", inputList.subList(k + 1, inputList.size()));","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"aureliony"},"content":" command \u003d new Add(new Event(description, DateTime.stringToDate(from), DateTime.stringToDate(to)));","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"aureliony"},"content":" case FIND:","lastModifiedDate":"2024-01-30"},{"lineNumber":142,"author":{"gitId":"aureliony"},"content":" if (inputList.size() \u003c 2) {","lastModifiedDate":"2024-01-30"},{"lineNumber":143,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. Wrong number of arguments.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":144,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":145,"author":{"gitId":"aureliony"},"content":" String query \u003d String.join(\" \", inputList.subList(1, inputList.size()));","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"aureliony"},"content":" command \u003d new Find(query);","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":149,"author":{"gitId":"aureliony"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":150,"author":{"gitId":"aureliony"},"content":" // impossible to reach","lastModifiedDate":"2024-01-28"},{"lineNumber":151,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":153,"author":{"gitId":"aureliony"},"content":" return command;","lastModifiedDate":"2024-01-28"},{"lineNumber":154,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":155,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":156,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":157,"author":{"gitId":"aureliony"},"content":" * Parses a line of text and returns the corresponding {@code Task} object.","lastModifiedDate":"2024-01-30"},{"lineNumber":158,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"aureliony"},"content":" * @param line the line of text representing a task","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"aureliony"},"content":" * @return the corresponding {@code Task} object","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"aureliony"},"content":" * @throws IllegalArgumentException if the line is in an invalid format","lastModifiedDate":"2024-01-30"},{"lineNumber":162,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":163,"author":{"gitId":"aureliony"},"content":" public static Task parseTaskFromLine(String line) throws IllegalArgumentException {","lastModifiedDate":"2024-01-28"},{"lineNumber":164,"author":{"gitId":"aureliony"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-01-28"},{"lineNumber":165,"author":{"gitId":"aureliony"},"content":" if (parts.length \u003c 3 || parts.length \u003e 5) {","lastModifiedDate":"2024-01-28"},{"lineNumber":166,"author":{"gitId":"aureliony"},"content":" throw new IllegalArgumentException(\"Invalid line format: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":167,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"aureliony"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"aureliony"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-28"},{"lineNumber":170,"author":{"gitId":"aureliony"},"content":" Task task;","lastModifiedDate":"2024-01-28"},{"lineNumber":171,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":172,"author":{"gitId":"aureliony"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-01-28"},{"lineNumber":173,"author":{"gitId":"aureliony"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":174,"author":{"gitId":"aureliony"},"content":" task \u003d new ToDo(description, isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":175,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":176,"author":{"gitId":"aureliony"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":177,"author":{"gitId":"aureliony"},"content":" task \u003d new Deadline(description, isDone, DateTime.stringToDate(parts[3]));","lastModifiedDate":"2024-01-28"},{"lineNumber":178,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":179,"author":{"gitId":"aureliony"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":180,"author":{"gitId":"aureliony"},"content":" task \u003d new Event(description, isDone, DateTime.stringToDate(parts[3]), DateTime.stringToDate(parts[4]));","lastModifiedDate":"2024-01-28"},{"lineNumber":181,"author":{"gitId":"aureliony"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":182,"author":{"gitId":"aureliony"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":183,"author":{"gitId":"aureliony"},"content":" throw new IllegalArgumentException(\"Invalid line format: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":184,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":185,"author":{"gitId":"aureliony"},"content":" } catch (ConvoBotException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":186,"author":{"gitId":"aureliony"},"content":" throw new IllegalArgumentException(\"Invalid line format: \" + line);","lastModifiedDate":"2024-01-28"},{"lineNumber":187,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":188,"author":{"gitId":"aureliony"},"content":" return task;","lastModifiedDate":"2024-01-28"},{"lineNumber":189,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":190,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":190}},{"path":"src/main/java/convobot/utils/ResponseConstructor.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"package utils;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":" * The {@code ResponseConstructor} class constructs ConvoBot\u0027s response.","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" * It includes methods for formatting messages, tasks and errors.","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"public class ResponseConstructor {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" private final StringBuilder response \u003d new StringBuilder();","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code ResponseConstructor} instance.","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" public ResponseConstructor() {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" // ...","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" * Displays a welcome message in the console.","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" public void showWelcomeMsg() {","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" response.append(\"Hello! I\u0027m ConvoBot. What can I do for you?\");","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" * Displays an exit message in the console.","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" public void showExitMsg() {","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" response.append(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" * Displays the task list in the console.","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" * @param tasks the task list to be displayed","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" public void showTaskList(TaskList tasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" response.append(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" int index \u003d i + 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" response.append(Integer.toString(index) + \".\" + tasks.getTaskString(i) + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" } catch (ConvoBotException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" // impossible to reach here","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" * Displays the matching tasks from the provided ArrayList of tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" * Each task is printed with its corresponding index in the list.","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" * @param tasks An ArrayList of Strings containing the task strings to be displayed.","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" * @throws NullPointerException If the tasks ArrayList is null.","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":" public void showMatchingTasks(ArrayList\u003cString\u003e tasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" response.append(\"Here are the matching tasks in your list:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"aureliony"},"content":" int index \u003d i + 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"aureliony"},"content":" response.append(Integer.toString(index) + \".\" + tasks.get(i) + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":" * Displays a message indicating that a task has been added.","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"aureliony"},"content":" * @param taskString the string representation of the added task","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"aureliony"},"content":" * @param dbSize the size of the task list after adding the task","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"aureliony"},"content":" public void showAdded(String taskString, int dbSize) {","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"aureliony"},"content":" response.append(\"Got it. I\u0027ve added this task:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"aureliony"},"content":" response.append(\" \" + taskString + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"aureliony"},"content":" response.append(\"Now you have \" + Integer.toString(dbSize) + \" tasks in the list.\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"aureliony"},"content":" * Displays a message indicating that a task has been removed.","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"aureliony"},"content":" * @param taskString the string representation of the removed task","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"aureliony"},"content":" * @param dbSize the size of the task list after removing the task","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"aureliony"},"content":" public void showRemoved(String taskString, int dbSize) {","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"aureliony"},"content":" response.append(\"Noted. I\u0027ve removed this task:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"aureliony"},"content":" response.append(\" \" + taskString + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"aureliony"},"content":" response.append(\"Now you have \" + Integer.toString(dbSize) + \" tasks in the list.\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"aureliony"},"content":" * Displays a message indicating that a task has been marked as done.","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"aureliony"},"content":" * @param taskString the string representation of the marked task","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"aureliony"},"content":" public void showMarked(String taskString) {","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"aureliony"},"content":" response.append(\"Nice! I\u0027ve marked this task as done:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"aureliony"},"content":" response.append(\" \" + taskString + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"aureliony"},"content":" * Displays a message indicating that a task has been marked as not done.","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":106,"author":{"gitId":"aureliony"},"content":" * @param taskString the string representation of the unmarked task","lastModifiedDate":"2024-02-06"},{"lineNumber":107,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"aureliony"},"content":" public void showUnmarked(String taskString) {","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"aureliony"},"content":" response.append(\"OK, I\u0027ve marked this task as not done yet:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"aureliony"},"content":" response.append(\" \" + taskString + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":111,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":113,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"aureliony"},"content":" * Displays an error message in the console.","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"aureliony"},"content":" * @param errorMsg the error message to be displayed","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":118,"author":{"gitId":"aureliony"},"content":" public void showError(String errorMsg) {","lastModifiedDate":"2024-02-06"},{"lineNumber":119,"author":{"gitId":"aureliony"},"content":" response.append(errorMsg + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":121,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":122,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":123,"author":{"gitId":"aureliony"},"content":" * Returns the constructed string and clears the buffer.","lastModifiedDate":"2024-02-06"},{"lineNumber":124,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":125,"author":{"gitId":"aureliony"},"content":" * @return the constructed string.","lastModifiedDate":"2024-02-06"},{"lineNumber":126,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":127,"author":{"gitId":"aureliony"},"content":" public String getResponse() {","lastModifiedDate":"2024-02-06"},{"lineNumber":128,"author":{"gitId":"aureliony"},"content":" String result \u003d response.toString();","lastModifiedDate":"2024-02-06"},{"lineNumber":129,"author":{"gitId":"aureliony"},"content":" response.setLength(0);","lastModifiedDate":"2024-02-06"},{"lineNumber":130,"author":{"gitId":"aureliony"},"content":" return result;","lastModifiedDate":"2024-02-06"},{"lineNumber":131,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":132,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"aureliony":132}},{"path":"src/main/java/convobot/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.BufferedReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import java.io.File;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" * The {@code Storage} class provides methods for reading and writing task data to a file.","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" * It interacts with the file system to perform read and write operations on the task data file.","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" private final String filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code Storage} instance with the specified file path.","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" * @param filePath the file path where task data is stored","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" * Reads task data from the specified file and returns an {@code ArrayList} of tasks.","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" * @return an {@code ArrayList} of tasks read from the file","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" public ArrayList\u003cTask\u003e read() {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(filePath));","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" String line;","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" Task task \u003d Parser.parseTaskFromLine(line);","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" reader.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" // ignored as taskList will be returned empty","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" return taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" * Writes the provided {@code ArrayList} of tasks to the specified file.","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" * @param taskList the {@code ArrayList} of tasks to be written to the file","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" public void write(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(file));","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" writer.write(task.toFile());","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":" writer.newLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"aureliony"},"content":" writer.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"aureliony"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"aureliony"},"content":" // ignored, write to file failed possibly due to insufficient permissions","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":70}},{"path":"src/main/java/convobot/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":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" * The {@code TaskList} class represents a collection of tasks and provides methods for managing the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" * It includes operations such as adding tasks, marking tasks as done or not done, retrieving task details,","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" * deleting tasks, and obtaining the size of the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"public class TaskList {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" private Storage db;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code TaskList} instance with an empty task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":" public TaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" taskList \u003d new ArrayList\u003c\u003e();","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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" * Constructs a new {@code TaskList} instance and initializes it with tasks read from the specified storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" * @param db the storage instance used to read tasks","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" public TaskList(Storage db) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" this.db \u003d db;","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" taskList \u003d db.read();","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" * Adds a task to the task list and updates the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" * @param task the task to be added to the task list","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" public void add(Task task) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":" db.write(taskList);","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":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" * Marks a task in the task list as done or not done based on the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" * @param i the index of the task in the task list","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" * @param isDone {@code true} if the task should be marked as done, {@code false} if marked as not done","lastModifiedDate":"2024-01-30"},{"lineNumber":50,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException if the index is out of bounds","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"aureliony"},"content":" public void mark(int i, boolean isDone) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"aureliony"},"content":" if (i \u003c 0 || i \u003e\u003d taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. You must specify a valid index.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" Task task \u003d taskList.get(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" if (isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" task.markAsNotDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"aureliony"},"content":" * Retrieves the string representation of a task in the task list based on the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"aureliony"},"content":" * @param i the index of the task in the task list","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":" * @return the string representation of the specified task","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException if the index is out of bounds","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"aureliony"},"content":" public String getTaskString(int i) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"aureliony"},"content":" if (i \u003c 0 || i \u003e\u003d taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. You must specify a valid index.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"aureliony"},"content":" return taskList.get(i).toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"aureliony"},"content":" * Retrieves the description of the task at the specified index in the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"aureliony"},"content":" * @param i The index of the task to retrieve. It should be a non-negative integer","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"aureliony"},"content":" * and less than the size of the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"aureliony"},"content":" * @return The description of the task at the specified index.","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException If the index is less than 0 or greater than or equal to","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"aureliony"},"content":" * the size of the task list, an exception is thrown with","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"aureliony"},"content":" * the message \"Invalid input. You must specify a valid index.\"","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"aureliony"},"content":" public String getTaskDescription(int i) throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"aureliony"},"content":" if (i \u003c 0 || i \u003e\u003d taskList.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. You must specify a valid index.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"aureliony"},"content":" return taskList.get(i).getDescription();","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"aureliony"},"content":" * Deletes a task from the task list based on the specified index and updates the storage.","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"aureliony"},"content":" * @param i the index of the task in the task list","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"aureliony"},"content":" * @throws ConvoBotException if the index is out of bounds","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"aureliony"},"content":" public void delete(int i) throws ConvoBotException {","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"aureliony"},"content":" if (i \u003c 0 || i \u003e\u003d taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"aureliony"},"content":" throw new ConvoBotException(\"Invalid input. You must specify a valid index.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"aureliony"},"content":" taskList.remove(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"aureliony"},"content":" db.write(taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"aureliony"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"aureliony"},"content":" * Returns the number of tasks in the task list.","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"aureliony"},"content":" *","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"aureliony"},"content":" * @return the size of the task list","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"aureliony"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"aureliony"},"content":" public int size() {","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"aureliony"},"content":" return taskList.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"aureliony":117}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"Infinity\" maxWidth\u003d\"Infinity\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" minHeight\u003d\"-Infinity\" maxHeight\u003d\"Infinity\"\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" \u003cInsets top\u003d\"0.0\" right\u003d\"5.0\" bottom\u003d\"0.0\" left\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"80.0\" fitWidth\u003d\"80.0\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" \u003cInsets top\u003d\"15.0\" right\u003d\"5.0\" bottom\u003d\"15.0\" left\u003d\"5.0\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"aureliony":20}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"aureliony"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"aureliony"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"gui.MainWindow\"\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":" \u003cTextField fx:id\u003d\"userInput\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"0.0\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" vbarPolicy\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"558.0\" prefWidth\u003d\"384.0\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"aureliony":19}},{"path":"src/test/java/convobot/utils/ParserTest.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.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"","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":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"import commands.Add;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"import commands.Bye;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"import commands.Command;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"import commands.Delete;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"import commands.List;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"import commands.Mark;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"import commands.Unmark;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":"import tasks.Event;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":"class ParserTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" void parseUserInputByeCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"bye\";","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 Bye);","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 parseUserInputListCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"list\";","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 List);","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 parseUserInputMarkCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"mark 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 Mark);","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 parseUserInputUnmarkCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"unmark 1\";","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 Unmark);","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 parseUserInputDeleteCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"delete 1\";","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 Delete);","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 parseUserInputTodoCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"todo Read a book\";","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 parseUserInputDeadlineCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"deadline Finish project /by 2024-02-01\";","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" Command command \u003d Parser.parseUserInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"aureliony"},"content":" assertTrue(command instanceof Add);","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"aureliony"},"content":" void parseUserInputEventCommand_validInput_commandParsedSuccessfully() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"event Team meeting /from 2024-02-01 /to 2024-02-02\";","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"aureliony"},"content":" Command command \u003d Parser.parseUserInput(userInput);","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"aureliony"},"content":" assertTrue(command instanceof Add);","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"aureliony"},"content":" void parseUserInputInvalidCommand_invalidCommand_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"invalidCommand\";","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e Parser.parseUserInput(userInput));","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"aureliony"},"content":" void parseUserInputInvalidArguments_invalidArguments_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"mark\";","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e Parser.parseUserInput(userInput));","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":92,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"aureliony"},"content":" void parseUserInputEmptyInput_emptyInput_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"aureliony"},"content":" String userInput \u003d \"\";","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e Parser.parseUserInput(userInput));","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"aureliony"},"content":" void parseTaskFromLineTodo_validInput_taskParsedSuccessfully() throws IllegalArgumentException {","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"aureliony"},"content":" String line \u003d \"T | 0 | Read a book\";","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"aureliony"},"content":" Task task \u003d Parser.parseTaskFromLine(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":102,"author":{"gitId":"aureliony"},"content":" assertTrue(task instanceof ToDo);","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"aureliony"},"content":" assertFalse(task.getIsDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":104,"author":{"gitId":"aureliony"},"content":" assertEquals(\"Read a book\", task.getDescription());","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":107,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":108,"author":{"gitId":"aureliony"},"content":" void parseTaskFromLineDeadline_validInput_taskParsedSuccessfully() throws IllegalArgumentException {","lastModifiedDate":"2024-01-30"},{"lineNumber":109,"author":{"gitId":"aureliony"},"content":" String line \u003d \"D | 1 | Finish project | 2024-02-01\";","lastModifiedDate":"2024-01-30"},{"lineNumber":110,"author":{"gitId":"aureliony"},"content":" Task task \u003d Parser.parseTaskFromLine(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":111,"author":{"gitId":"aureliony"},"content":" assertTrue(task instanceof Deadline);","lastModifiedDate":"2024-01-30"},{"lineNumber":112,"author":{"gitId":"aureliony"},"content":" assertTrue(task.getIsDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":113,"author":{"gitId":"aureliony"},"content":" assertEquals(\"Finish project\", task.getDescription());","lastModifiedDate":"2024-01-30"},{"lineNumber":114,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":115,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"aureliony"},"content":" void parseTaskFromLineEvent_validInput_taskParsedSuccessfully() throws IllegalArgumentException {","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"aureliony"},"content":" String line \u003d \"E | 0 | Team meeting | 2024-02-01 | 2024-02-02\";","lastModifiedDate":"2024-01-30"},{"lineNumber":119,"author":{"gitId":"aureliony"},"content":" Task task \u003d Parser.parseTaskFromLine(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":120,"author":{"gitId":"aureliony"},"content":" assertTrue(task instanceof Event);","lastModifiedDate":"2024-01-30"},{"lineNumber":121,"author":{"gitId":"aureliony"},"content":" assertFalse(task.getIsDone());","lastModifiedDate":"2024-01-30"},{"lineNumber":122,"author":{"gitId":"aureliony"},"content":" assertEquals(\"Team meeting\", task.getDescription());","lastModifiedDate":"2024-01-30"},{"lineNumber":123,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":124,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"aureliony"},"content":" void parseTaskFromLineInvalidFormat_invalidFormat_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":127,"author":{"gitId":"aureliony"},"content":" String line \u003d \"Invalid Format\";","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"aureliony"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e Parser.parseTaskFromLine(line));","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"aureliony":130}},{"path":"src/test/java/convobot/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.assertEquals;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"aureliony"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"aureliony"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"aureliony"},"content":"import static org.mockito.Mockito.times;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"aureliony"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"aureliony"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"aureliony"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"aureliony"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"aureliony"},"content":"import exceptions.ConvoBotException;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"aureliony"},"content":"import tasks.Task;","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"aureliony"},"content":"import tasks.ToDo;","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"aureliony"},"content":"class TaskListTest {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"aureliony"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"aureliony"},"content":" private Storage storage;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"aureliony"},"content":" @BeforeEach","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"aureliony"},"content":" void setUp() {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"aureliony"},"content":" storage \u003d mock(Storage.class);","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"aureliony"},"content":" taskList \u003d new TaskList(storage);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"aureliony"},"content":" void addTask_sampleToDo_singleTaskAdded() {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"aureliony"},"content":" Task task \u003d mock(ToDo.class);","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"aureliony"},"content":" assertEquals(1, taskList.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"aureliony"},"content":" void markTaskAsDone_sampleToDo_taskMarkedAsDone() throws ConvoBotException {","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"aureliony"},"content":" Task task \u003d mock(ToDo.class);","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"aureliony"},"content":" taskList.mark(0, true);","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"aureliony"},"content":" verify(task, times(1)).markAsDone();","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"aureliony"},"content":" void getTaskString_validTaskIndex_taskStringReturned() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"aureliony"},"content":" Task task \u003d mock(ToDo.class);","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"aureliony"},"content":" when(task.toString()).thenReturn(\"[T][ ] Sample Task\");","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"aureliony"},"content":" String taskString \u003d taskList.getTaskString(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"aureliony"},"content":" assertEquals(\"[T][ ] Sample Task\", taskString);","lastModifiedDate":"2024-01-31"},{"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 deleteTask_validTaskIndex_taskDeleted() throws ConvoBotException {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"aureliony"},"content":" Task task \u003d mock(ToDo.class);","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"aureliony"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"aureliony"},"content":" taskList.delete(0);","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"aureliony"},"content":" assertEquals(0, taskList.size());","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"aureliony"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"aureliony"},"content":" @Test","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"aureliony"},"content":" void markTaskAsDone_invalidIndex_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e taskList.mark(-1, true));","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e taskList.mark(10, true));","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 getTaskString_invalidIndex_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e taskList.getTaskString(-1));","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e taskList.getTaskString(10));","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 deleteTask_invalidIndex_exceptionThrown() {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e taskList.delete(-1));","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"aureliony"},"content":" assertThrows(ConvoBotException.class, () -\u003e taskList.delete(10));","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"aureliony"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"aureliony"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"aureliony":77}}] diff --git a/aureliony_ip_master/commits.json b/aureliony_ip_master/commits.json index 2ca8762f..37bc4e38 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}}}]},{"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-Release","A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"5f8d7c2b197eb4a8ec4d9664c2de04cbf87d7493","isMergeCommit":false,"messageTitle":"Implement A-JavaDoc and convert CRLF line endings to LF","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"gradle":{"insertions":26,"deletions":13},"java":{"insertions":979,"deletions":477}}},{"hash":"a2eda5a22db1f0044891f624b220a0b00ca31ef9","isMergeCommit":false,"messageTitle":"Implement A-CodingStandard","messageBody":"","tags":["A-CodingStandard","A-CheckStyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"java":{"insertions":91,"deletions":49},"bat":{"insertions":21,"deletions":21}}},{"hash":"be20e6ea13fe387383bbe4a8992168b51227eb58","isMergeCommit":false,"messageTitle":"Implement Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":2}}},{"hash":"880934037bfdf51c01b006c31459e53b3b3ea296","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a6b87328c2c829eb66d0103a28b70ce66be9e079","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6dde2f96b10cdf247454731fafffe41f9a389eef","isMergeCommit":true,"messageTitle":"Resolve merge conflicts and implement A-Streams","messageBody":"","tags":["A-Streams"],"fileTypesAndContributionMap":{}},{"hash":"5a1af6841f66223e452a39031854d0bd73c8909b","isMergeCommit":false,"messageTitle":"Fix a bug with the Delete command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}}]},{"date":"2024-01-31","commitResults":[{"hash":"7e424491c3d576a7d52445c64c1b35b1f6ce43f0","isMergeCommit":false,"messageTitle":"Implement A-AbstractClasses and add stubbing to JUnit tests","messageBody":"","tags":["A-AbstractClasses"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":12}}},{"hash":"357e3054fcc8f4c4b7beddf5667f8d0604a1ba5c","isMergeCommit":false,"messageTitle":"Remove unnecessary import","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"0180a0296126b9b567190cdcafb068260fc3bf06","isMergeCommit":false,"messageTitle":"Fix bug with Storage.write()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"0995bd7230f3d527f2c8391f7cdb20e1260a2fdf","isMergeCommit":false,"messageTitle":"Remove file creation from Storage.read()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":6}}}]},{"date":"2024-02-01","commitResults":[{"hash":"9f9d11aec6b00a2f974d69adce8bb257e7fb99d9","isMergeCommit":false,"messageTitle":"Move all classes to convobot package","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":4,"deletions":1},"java":{"insertions":4,"deletions":0}}}]},{"date":"2024-02-06","commitResults":[{"hash":"be26d50344d691903e370285b94c49829d413a14","isMergeCommit":false,"messageTitle":"Add javafx dependency to build.gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":14,"deletions":0}}},{"hash":"73f94729bd4f46a6dd5ec906788efc17aeb2e342","isMergeCommit":false,"messageTitle":"Add JavaFX dependency and rename UI to Ui","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":2},"java":{"insertions":64,"deletions":21}}},{"hash":"cd482836b54b87fa030d04690229c107d7c9c3e9","isMergeCommit":false,"messageTitle":"Add FXML dependency and bump JavaFX version","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":2},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":194,"deletions":45}}},{"hash":"a0fcc1e2425a92b4466bae8c7f87439a1995cb0b","isMergeCommit":false,"messageTitle":"Move ConvoBot.java to cli folder and add GUI icons","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":23,"deletions":57}}},{"hash":"f2bd45d3ee8e36ee5b33e1c5541416426ac1a6c4","isMergeCommit":false,"messageTitle":"Split ConvoBot.java into CLI and GUI","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":1,"deletions":16}}},{"hash":"10b8c6a5571bfa7774197ec9c206e27de9c50b44","isMergeCommit":false,"messageTitle":"Implement Level-10 and drop CLI support","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":2},"java":{"insertions":251,"deletions":251}}},{"hash":"9ba599de789b30188cb2dc691d562e710cd1cc40","isMergeCommit":false,"messageTitle":"Remove ConvoBotTest.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":15}}},{"hash":"322a5ab577e3cc828d8aacf120a09937d0b68376","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":14}}},{"hash":"dec2dc815ef99dd3fc5c02a980d71c56295a41d1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d70eaa963a06b8209f1ae6c9895c6a865346634c","isMergeCommit":false,"messageTitle":"Update Javadoc for ResponseConstructor.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"8e2e1208c6c6b5ea372024430ced256c42c14754","isMergeCommit":false,"messageTitle":"Remove text-ui-test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":11},"bat":{"insertions":0,"deletions":21},"sh":{"insertions":0,"deletions":38}}},{"hash":"0fbc66385eef4abd1b765f662beff7fb8aab0418","isMergeCommit":false,"messageTitle":"Fix dialog text being cut off if too long","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":1,"deletions":1},"java":{"insertions":4,"deletions":4}}},{"hash":"ec6bb4cf4ac8fd92993c569446a1bc1e8fbe728c","isMergeCommit":false,"messageTitle":"Fix padding issues","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":10,"deletions":6}}}]}]},"authorFileTypeContributionMap":{"aureliony":{"java":1653,"md":0,"fxml":39,"sh":0,"bat":0,"gradle":46,"txt":0}},"authorContributionVariance":{"aureliony":258937.38},"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-Release","A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"5f8d7c2b197eb4a8ec4d9664c2de04cbf87d7493","isMergeCommit":false,"messageTitle":"Implement A-JavaDoc and convert CRLF line endings to LF","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"gradle":{"insertions":26,"deletions":13},"java":{"insertions":979,"deletions":477}}},{"hash":"a2eda5a22db1f0044891f624b220a0b00ca31ef9","isMergeCommit":false,"messageTitle":"Implement A-CodingStandard","messageBody":"","tags":["A-CodingStandard","A-CheckStyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"java":{"insertions":91,"deletions":49},"bat":{"insertions":21,"deletions":21}}},{"hash":"be20e6ea13fe387383bbe4a8992168b51227eb58","isMergeCommit":false,"messageTitle":"Implement Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":2}}},{"hash":"880934037bfdf51c01b006c31459e53b3b3ea296","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a6b87328c2c829eb66d0103a28b70ce66be9e079","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6dde2f96b10cdf247454731fafffe41f9a389eef","isMergeCommit":true,"messageTitle":"Resolve merge conflicts and implement A-Streams","messageBody":"","tags":["A-Streams"],"fileTypesAndContributionMap":{}},{"hash":"5a1af6841f66223e452a39031854d0bd73c8909b","isMergeCommit":false,"messageTitle":"Fix a bug with the Delete command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}}]},{"date":"2024-01-31","commitResults":[{"hash":"7e424491c3d576a7d52445c64c1b35b1f6ce43f0","isMergeCommit":false,"messageTitle":"Implement A-AbstractClasses and add stubbing to JUnit tests","messageBody":"","tags":["A-AbstractClasses"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":12}}},{"hash":"357e3054fcc8f4c4b7beddf5667f8d0604a1ba5c","isMergeCommit":false,"messageTitle":"Remove unnecessary import","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"0180a0296126b9b567190cdcafb068260fc3bf06","isMergeCommit":false,"messageTitle":"Fix bug with Storage.write()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"0995bd7230f3d527f2c8391f7cdb20e1260a2fdf","isMergeCommit":false,"messageTitle":"Remove file creation from Storage.read()","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":6}}}]},{"date":"2024-02-01","commitResults":[{"hash":"9f9d11aec6b00a2f974d69adce8bb257e7fb99d9","isMergeCommit":false,"messageTitle":"Move all classes to convobot package","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":4,"deletions":1},"java":{"insertions":4,"deletions":0}}}]},{"date":"2024-02-06","commitResults":[{"hash":"be26d50344d691903e370285b94c49829d413a14","isMergeCommit":false,"messageTitle":"Add javafx dependency to build.gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":14,"deletions":0}}},{"hash":"73f94729bd4f46a6dd5ec906788efc17aeb2e342","isMergeCommit":false,"messageTitle":"Add JavaFX dependency and rename UI to Ui","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":2},"java":{"insertions":64,"deletions":21}}},{"hash":"cd482836b54b87fa030d04690229c107d7c9c3e9","isMergeCommit":false,"messageTitle":"Add FXML dependency and bump JavaFX version","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":2},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":194,"deletions":45}}},{"hash":"a0fcc1e2425a92b4466bae8c7f87439a1995cb0b","isMergeCommit":false,"messageTitle":"Move ConvoBot.java to cli folder and add GUI icons","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":23,"deletions":57}}},{"hash":"f2bd45d3ee8e36ee5b33e1c5541416426ac1a6c4","isMergeCommit":false,"messageTitle":"Split ConvoBot.java into CLI and GUI","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":1,"deletions":16}}},{"hash":"10b8c6a5571bfa7774197ec9c206e27de9c50b44","isMergeCommit":false,"messageTitle":"Implement Level-10 and drop CLI support","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":2},"java":{"insertions":251,"deletions":251}}},{"hash":"9ba599de789b30188cb2dc691d562e710cd1cc40","isMergeCommit":false,"messageTitle":"Remove ConvoBotTest.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":15}}},{"hash":"322a5ab577e3cc828d8aacf120a09937d0b68376","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":14}}},{"hash":"dec2dc815ef99dd3fc5c02a980d71c56295a41d1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d70eaa963a06b8209f1ae6c9895c6a865346634c","isMergeCommit":false,"messageTitle":"Update Javadoc for ResponseConstructor.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"8e2e1208c6c6b5ea372024430ced256c42c14754","isMergeCommit":false,"messageTitle":"Remove text-ui-test","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":11},"bat":{"insertions":0,"deletions":21},"sh":{"insertions":0,"deletions":38}}},{"hash":"0fbc66385eef4abd1b765f662beff7fb8aab0418","isMergeCommit":false,"messageTitle":"Fix dialog text being cut off if too long","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":1,"deletions":1},"java":{"insertions":4,"deletions":4}}},{"hash":"ec6bb4cf4ac8fd92993c569446a1bc1e8fbe728c","isMergeCommit":false,"messageTitle":"Fix padding issues","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":10,"deletions":6}}},{"hash":"80a68274565aee707879ec460aea79e5e23c0d81","isMergeCommit":false,"messageTitle":"Implement styling with dark theme and custom fonts","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":4,"deletions":4},"java":{"insertions":4,"deletions":0}}}]},{"date":"2024-02-07","commitResults":[{"hash":"d64c0148abc7f7649f8efc0ffdf3694c74fe146f","isMergeCommit":false,"messageTitle":"Force window to be un-resizable","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"aureliony":{"java":1658,"md":0,"fxml":39,"sh":0,"bat":0,"gradle":46,"txt":0}},"authorContributionVariance":{"aureliony":250020.45},"authorDisplayNameMap":{"aureliony":"CS2103T-W12-3 LEON.. YEW"}} diff --git a/beefsausagee_ip_master/authorship.json b/beefsausagee_ip_master/authorship.json index 13a4a326..0ce88bea 100644 --- a/beefsausagee_ip_master/authorship.json +++ b/beefsausagee_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beefsausagee"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"beefsausagee"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"beefsausagee"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"beefsausagee"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"beefsausagee"},"content":" private static final String LINE \u003d \"___________________________________________________________\\n\";","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"beefsausagee"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"beefsausagee"},"content":" BufferedReader reader \u003d new BufferedReader(new InputStreamReader(System.in));","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"beefsausagee"},"content":" ArrayList\u003cString\u003e listOfStrings \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"beefsausagee"},"content":" boolean hasEnded \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"beefsausagee"},"content":" String botName \u003d \"Yube\";","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"beefsausagee"},"content":" int counter \u003d 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"beefsausagee"},"content":" greet(botName);","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"beefsausagee"},"content":" while (!(hasEnded)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"beefsausagee"},"content":" String input \u003d reader.readLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"beefsausagee"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"beefsausagee"},"content":" bye();","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"beefsausagee"},"content":" hasEnded \u003d true;","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"beefsausagee"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"beefsausagee"},"content":" printList(listOfStrings);","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"beefsausagee"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"beefsausagee"},"content":" repeatFunction(input);","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"beefsausagee"},"content":" listOfStrings.add(String.format(\"%s. %s\\n\", counter, input));","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"beefsausagee"},"content":" counter++;","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"beefsausagee"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"beefsausagee"},"content":" * Displays a greeting message","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"beefsausagee"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"beefsausagee"},"content":" * @param botName Name of the bot","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"beefsausagee"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"beefsausagee"},"content":" public static void greet(String botName) {","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"beefsausagee"},"content":" System.out.println(String.format(","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"beefsausagee"},"content":" \"%sHello! I\u0027m %s \\nWhat can I do for you? \\n%s\", LINE, botName, LINE));","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"beefsausagee"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"beefsausagee"},"content":" * Displays a farewell message","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"beefsausagee"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"beefsausagee"},"content":" public static void bye() {","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"beefsausagee"},"content":" System.out.println(String.format(","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"beefsausagee"},"content":" \"%sBye. Hope to see you again soon! \\n%s\", LINE, LINE));","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"beefsausagee"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"beefsausagee"},"content":" * Displays a repeated message of the input by the user","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"beefsausagee"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"beefsausagee"},"content":" * @param input User input","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"beefsausagee"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"beefsausagee"},"content":" public static void repeatFunction(String input) {","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"beefsausagee"},"content":" System.out.println(String.format(\"%sadded: %s\\n%s\", LINE, input, LINE));","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"beefsausagee"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"beefsausagee"},"content":" * Displays the list of Strings","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"beefsausagee"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"beefsausagee"},"content":" * @param listOfStrings list of Strings","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"beefsausagee"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"beefsausagee"},"content":" public static void printList(ArrayList\u003cString\u003e listOfStrings) {","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"beefsausagee"},"content":" StringBuilder finalString \u003d new StringBuilder();","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"beefsausagee"},"content":" finalString.append(LINE);","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"beefsausagee"},"content":" for (String c : listOfStrings) {","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"beefsausagee"},"content":" finalString.append(c);","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"beefsausagee"},"content":" finalString.append(LINE);","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"beefsausagee"},"content":" System.out.println(finalString.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"beefsausagee":70,"-":3}}] +[{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beefsausagee"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"beefsausagee"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"beefsausagee"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"beefsausagee"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"beefsausagee"},"content":" private static final String LINE \u003d \" ___________________________________________________________\\n\";","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"beefsausagee"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"beefsausagee"},"content":" BufferedReader reader \u003d new BufferedReader(new InputStreamReader(System.in));","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"beefsausagee"},"content":" ArrayList\u003cTask\u003e listOfTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"beefsausagee"},"content":" boolean hasEnded \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"beefsausagee"},"content":" String botName \u003d \"Yube\";","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"beefsausagee"},"content":" greet(botName);","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"beefsausagee"},"content":" while (!(hasEnded)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"beefsausagee"},"content":" String input \u003d reader.readLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"beefsausagee"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"beefsausagee"},"content":" bye();","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"beefsausagee"},"content":" hasEnded \u003d true;","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"beefsausagee"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"beefsausagee"},"content":" printList(listOfTasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"beefsausagee"},"content":" } else if (input.contains(\"mark\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"beefsausagee"},"content":" String[] parts \u003d input.split(\" \");","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"beefsausagee"},"content":" int index \u003d Integer.parseInt(parts[1]);","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"beefsausagee"},"content":" if (input.contains(\"unmark\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"beefsausagee"},"content":" unmark(listOfTasks.get(index - 1));","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"beefsausagee"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"beefsausagee"},"content":" mark(listOfTasks.get(index - 1));","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"beefsausagee"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"beefsausagee"},"content":" repeatFunction(input);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"beefsausagee"},"content":" listOfTasks.add(new Task(input));","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"beefsausagee"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"beefsausagee"},"content":" * Displays a greeting message.","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"beefsausagee"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"beefsausagee"},"content":" * @param botName Name of the bot.","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"beefsausagee"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"beefsausagee"},"content":" public static void greet(String botName) {","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"beefsausagee"},"content":" System.out.println(String.format(","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"beefsausagee"},"content":" \"%s Hello! I\u0027m %s \\n What can I do for you? \\n%s\", LINE, botName, LINE));","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"beefsausagee"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"beefsausagee"},"content":" * Marks a task as done.","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"beefsausagee"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"beefsausagee"},"content":" * @param task","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"beefsausagee"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"beefsausagee"},"content":" public static void mark(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"beefsausagee"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"beefsausagee"},"content":" System.out.println(\" Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"beefsausagee"},"content":" task.setDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"beefsausagee"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"beefsausagee"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"beefsausagee"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"beefsausagee"},"content":" * Marks a task as not done.","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"beefsausagee"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"beefsausagee"},"content":" * @param task","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"beefsausagee"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"beefsausagee"},"content":" public static void unmark(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"beefsausagee"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"beefsausagee"},"content":" System.out.println(\" OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"beefsausagee"},"content":" task.setNotDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"beefsausagee"},"content":" System.out.println(\" \" + task.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"beefsausagee"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"beefsausagee"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"beefsausagee"},"content":" * Displays a farewell message.","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"beefsausagee"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"beefsausagee"},"content":" public static void bye() {","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"beefsausagee"},"content":" System.out.println(String.format(","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"beefsausagee"},"content":" \"%s Bye. Hope to see you again soon! \\n%s\", LINE, LINE));","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"beefsausagee"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"beefsausagee"},"content":" * Displays a repeated message of the input by the user.","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"beefsausagee"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"beefsausagee"},"content":" * @param input User input.","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"beefsausagee"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"beefsausagee"},"content":" public static void repeatFunction(String input) {","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"beefsausagee"},"content":" System.out.println(String.format(\"%s added: %s\\n%s\", LINE, input, LINE));","lastModifiedDate":"2024-02-02"},{"lineNumber":90,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"beefsausagee"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":93,"author":{"gitId":"beefsausagee"},"content":" * Displays the list of Strings.","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"beefsausagee"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":95,"author":{"gitId":"beefsausagee"},"content":" * @param listOfStrings list of Strings.","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"beefsausagee"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"beefsausagee"},"content":" public static void printList(ArrayList\u003cTask\u003e listOfTasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"beefsausagee"},"content":" StringBuilder finalString \u003d new StringBuilder();","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"beefsausagee"},"content":" finalString.append(LINE);","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"beefsausagee"},"content":" for (Task c : listOfTasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"beefsausagee"},"content":" finalString.append(c);","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"beefsausagee"},"content":" finalString.append(LINE);","lastModifiedDate":"2024-02-02"},{"lineNumber":104,"author":{"gitId":"beefsausagee"},"content":" System.out.println(finalString.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"beefsausagee":103,"-":3}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"beefsausagee"},"content":"class Task {","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"beefsausagee"},"content":" private String name;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"beefsausagee"},"content":" private boolean isDone;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"beefsausagee"},"content":" Task(String name) {","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"beefsausagee"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"beefsausagee"},"content":" this.name \u003d name;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"beefsausagee"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"beefsausagee"},"content":" * Marks the task as Done","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"beefsausagee"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"beefsausagee"},"content":" public void setDone() {","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"beefsausagee"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"beefsausagee"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"beefsausagee"},"content":" * Marks the task as not done.","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"beefsausagee"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"beefsausagee"},"content":" public void setNotDone() {","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"beefsausagee"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"beefsausagee"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"beefsausagee"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"beefsausagee"},"content":" public String toString() {","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"beefsausagee"},"content":" if (this.isDone) {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"beefsausagee"},"content":" return String.format(\" [X] %s\\n\", this.name);","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"beefsausagee"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"beefsausagee"},"content":" return String.format(\" [ ] %s\\n\", this.name);","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"beefsausagee"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"beefsausagee"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"beefsausagee":32}}] diff --git a/beefsausagee_ip_master/commits.json b/beefsausagee_ip_master/commits.json index ff816b14..24f69106 100644 --- a/beefsausagee_ip_master/commits.json +++ b/beefsausagee_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"beefsausagee":[{"date":"2024-02-01","commitResults":[{"hash":"b19d5622a664a2ae988c30e5c5201f34eec07ec3","isMergeCommit":false,"messageTitle":"Implement changes for Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":6}}}]},{"date":"2024-02-02","commitResults":[{"hash":"85dcedc96fb44dd41289422be2882be3c40c36f1","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":14}}},{"hash":"8380b0eb9b6aad0d9642ad96ef15ebda40de0541","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"beefsausagee":{"java":70,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"beefsausagee":468.13333},"authorDisplayNameMap":{"beefsausagee":"CS2103-F15-4 ALVI.. HAN"}} +{"authorDailyContributionsMap":{"beefsausagee":[{"date":"2024-02-01","commitResults":[{"hash":"b19d5622a664a2ae988c30e5c5201f34eec07ec3","isMergeCommit":false,"messageTitle":"Implement changes for Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":6}}}]},{"date":"2024-02-02","commitResults":[{"hash":"85dcedc96fb44dd41289422be2882be3c40c36f1","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":14}}},{"hash":"8380b0eb9b6aad0d9642ad96ef15ebda40de0541","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":1}}}]},{"date":"2024-02-07","commitResults":[{"hash":"98302d685907b756fd69ea6f8d7fc8ee0ee6df05","isMergeCommit":false,"messageTitle":"Level 3. Mark As Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":11}}},{"hash":"e597f5ebb648f179f108504a756825f9c468d55a","isMergeCommit":false,"messageTitle":"Level 3. Mark As Done","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":7}}}]}]},"authorFileTypeContributionMap":{"beefsausagee":{"java":135,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":0}},"authorContributionVariance":{"beefsausagee":791.80994},"authorDisplayNameMap":{"beefsausagee":"CS2103-F15-4 ALVI.. HAN"}} diff --git a/brennalaurentan_ip_master/authorship.json b/brennalaurentan_ip_master/authorship.json index 24ed1c51..f03bd8fe 100644 --- a/brennalaurentan_ip_master/authorship.json +++ b/brennalaurentan_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/data/SavedList.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"T|0|someTask","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"T|0|someOtherTask","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"D|0|someDeadline|2024-04-11","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"brennalaurentan":3}},{"path":"src/main/java/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"public enum Commands {","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":" HELP,","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":" TODO,","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":" DEADLINE,","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":" EVENT,","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":" LIST,","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":" MARK,","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":" UNMARK,","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":" BYE,","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":" DELETE","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"brennalaurentan":11}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":" LocalDate dueDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":" public Deadline() {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":" super();","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":" public Deadline(String description, LocalDate dueDate) {","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":" super(description, \"D\");","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" this.dueDate \u003d dueDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" public Deadline(String description, LocalDate dueDate, boolean isDone) {","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" super(description, \"D\", isDone);","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":" this.dueDate \u003d dueDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":" public LocalDate getDueDate() {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" return this.dueDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":" public String getDueDateString() {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" String formattedString \u003d dueDate.format(formatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":" return formattedString;","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":" public String getTaskDetails() {","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":" String codeBox \u003d \"[\" + this.getTaskCode() + \"]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":" String statusBox \u003d \"[\" + this.getStatusIcon() + \"]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" String description \u003d this.getDescription();","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy\");","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":" String formattedDueDate \u003d dueDate.format(formatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":" String due \u003d \"(by: \" + formattedDueDate + \")\";","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" return codeBox + statusBox + \" \" + description + \" \" + due;","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":" public Task convertSaveToTask(String saveString) {","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":" //T|1|READ BOOK|dueDate","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":" String[] saveDetails \u003d saveString.split(\"\\\\|\");","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"brennalaurentan"},"content":" int doneStatus \u003d Integer.parseInt(saveDetails[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":" boolean isDone \u003d doneStatus \u003d\u003d 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":" String taskDescription \u003d saveDetails[2];","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":" String[] dueDateStringArray \u003d saveDetails[3].split(\"-\");","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":" int[] dueDateArray \u003d new int[3];","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":" for (int i \u003d 0; i \u003c 3; i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"brennalaurentan"},"content":" dueDateArray[i] \u003d Integer.parseInt(dueDateStringArray[i]);","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"brennalaurentan"},"content":" LocalDate dueDate \u003d LocalDate.of(dueDateArray[0], dueDateArray[1], dueDateArray[2]);","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"brennalaurentan"},"content":" return new Deadline(taskDescription, dueDate, isDone);","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"brennalaurentan"},"content":" public String convertTaskToSave() {","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"brennalaurentan"},"content":" String taskCode \u003d this.getTaskCode();","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"brennalaurentan"},"content":" String taskStatus \u003d \"0\";","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"brennalaurentan"},"content":" if (this.isDone()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"brennalaurentan"},"content":" taskStatus \u003d \"1\";","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"brennalaurentan"},"content":" String taskDescription \u003d this.getDescription();","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"brennalaurentan"},"content":" String taskDueDate \u003d this.getDueDateString();","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"brennalaurentan"},"content":" return taskCode + \"|\" + taskStatus + \"|\" + taskDescription + \"|\" + taskDueDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"brennalaurentan":67}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":" //String fromDate \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":" LocalDate fromDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":" //String toDate \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":" LocalDate toDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":" public Event() {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":" super();","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" public Event(String description, LocalDate fromDate, LocalDate toDate) {","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":" super(description, \"E\");","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" this.fromDate \u003d fromDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" this.toDate \u003d toDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":" public Event(String description, LocalDate fromDate, LocalDate toDate, boolean isDone) {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":" super(description, \"E\", isDone);","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":" this.fromDate \u003d fromDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" this.toDate \u003d toDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":" public LocalDate getFromDate() {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" return this.fromDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" public String getFromDateString() {","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":" String formattedString \u003d fromDate.format(formatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":" return formattedString;","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" public LocalDate getToDate() {","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":" return this.toDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":" public String getToDateString() {","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":" String formattedString \u003d toDate.format(formatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":" return formattedString;","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":" public String getTaskDetails() {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":" String codeBox \u003d \"[\" + this.getTaskCode() + \"]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":" String statusBox \u003d \"[\" + this.getStatusIcon() + \"]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":" String description \u003d this.getDescription();","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy\");","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"brennalaurentan"},"content":" String formattedFromDate \u003d this.fromDate.format(formatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":" String formattedToDate \u003d this.toDate.format(formatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"brennalaurentan"},"content":" String fromTo \u003d \"(from: \" + formattedFromDate + \" to: \" + formattedToDate + \")\";","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"brennalaurentan"},"content":" return codeBox + statusBox + \" \" + description + \" \" + fromTo;","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"brennalaurentan"},"content":" public Task convertSaveToTask(String saveString) {","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"brennalaurentan"},"content":" //T|1|READ BOOK|dueDate","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"brennalaurentan"},"content":" String[] saveDetails \u003d saveString.split(\"\\\\|\");","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"brennalaurentan"},"content":" int doneStatus \u003d Integer.parseInt(saveDetails[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"brennalaurentan"},"content":" boolean isDone \u003d doneStatus \u003d\u003d 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"brennalaurentan"},"content":" String taskDescription \u003d saveDetails[2];","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"brennalaurentan"},"content":" String fromDate \u003d saveDetails[3];","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"brennalaurentan"},"content":" String toDate \u003d saveDetails[4];","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"brennalaurentan"},"content":" String[] fromDateStringArray \u003d fromDate.split(\"-\");","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"brennalaurentan"},"content":" String[] toDateStringArray \u003d toDate.split(\"-\");","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"brennalaurentan"},"content":" int[] fromDateArray \u003d new int[3];","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"brennalaurentan"},"content":" int[] toDateArray \u003d new int[3];","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"brennalaurentan"},"content":" for (int i \u003d 0; i \u003c 3; i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"brennalaurentan"},"content":" fromDateArray[i] \u003d Integer.parseInt(fromDateStringArray[i]);","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"brennalaurentan"},"content":" toDateArray[i] \u003d Integer.parseInt(toDateStringArray[i]);","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"brennalaurentan"},"content":" LocalDate eventFromDateLocal \u003d LocalDate.of(fromDateArray[0], fromDateArray[1], fromDateArray[2]);","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"brennalaurentan"},"content":" LocalDate eventToDateLocal \u003d LocalDate.of(toDateArray[0], toDateArray[1], toDateArray[2]);","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"brennalaurentan"},"content":" return new Event(taskDescription,eventFromDateLocal, eventToDateLocal, isDone);","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"brennalaurentan"},"content":" public String convertTaskToSave() {","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"brennalaurentan"},"content":" String taskCode \u003d this.getTaskCode();","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"brennalaurentan"},"content":" String taskStatus \u003d \"0\";","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"brennalaurentan"},"content":" if (this.isDone()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"brennalaurentan"},"content":" taskStatus \u003d \"1\";","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"brennalaurentan"},"content":" String taskDescription \u003d this.getDescription();","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"brennalaurentan"},"content":" String taskFromDate \u003d this.getFromDateString();","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"brennalaurentan"},"content":" String taskToDate \u003d this.getToDateString();","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"brennalaurentan"},"content":" return taskCode + \"|\" + taskStatus + \"|\" + taskDescription + \"|\" + taskFromDate + \"|\" + taskToDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"brennalaurentan":89}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"public class Parser {","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":" private static String dividerText \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":" private static Scanner scannerObj \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":" public static int processCommand(TaskList existingTaskList) {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":" String input \u003d scannerObj.nextLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" String command \u003d splitInput[0].toLowerCase();","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" switch (command) {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" case \"bye\":","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":" case \"exit\":","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":" return 0;","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":" case \"list\":","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" existingTaskList.listTasks();","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":" case \"mark\":","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":" int taskNum \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" if (command.equals(\"mark\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":" existingTaskList.markTaskDone(taskNum);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":" existingTaskList.markTaskUndone(taskNum);","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Invalid task number entered\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Task does not exist! Type \u0027list\u0027 to check task numbers\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":" Storage.saveTaskList(existingTaskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":" case \"delete\":","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"brennalaurentan"},"content":" if (splitInput[1].equalsIgnoreCase(\"all\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":" existingTaskList.deleteAllTasks();","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":" else {","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":" int taskNum \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":" existingTaskList.deleteTask(taskNum);","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Invalid task number entered\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"brennalaurentan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Task does not exist! Type \u0027list\u0027 to check task numbers\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"brennalaurentan"},"content":" Storage.saveTaskList(existingTaskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"brennalaurentan"},"content":" case \"todo\":","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"brennalaurentan"},"content":" String todoDescription \u003d input.replace(\"todo\", \"\").trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"brennalaurentan"},"content":" if (todoDescription.equals(\"\")) { // missing description","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Missing task description!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"brennalaurentan"},"content":" } else if (todoDescription.contains(\"/by\")) { // unnecessary due date","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Todo task cannot have a due date!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"brennalaurentan"},"content":" } else if (todoDescription.contains(\"/from\") ||","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"brennalaurentan"},"content":" todoDescription.contains(\"/to\")) { // unnecessary from and to date","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Todo task cannot have a from and to date!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"brennalaurentan"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"brennalaurentan"},"content":" existingTaskList.addTodo(todoDescription);","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"brennalaurentan"},"content":" Storage.saveTaskList(existingTaskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"brennalaurentan"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"brennalaurentan"},"content":" String deadlineDescriptionDueDate \u003d input.replace(\"deadline\", \"\").trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"brennalaurentan"},"content":" if (!deadlineDescriptionDueDate.contains(\" /by \")) { // missing \u0027/by\u0027 keyword","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Missing due date!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"brennalaurentan"},"content":" Storage.saveTaskList(existingTaskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"brennalaurentan"},"content":" String[] deadlineDescriptionDueDateArray \u003d input.replace(\"deadline\", \"\")","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"brennalaurentan"},"content":" .trim().split(\" /by \");","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"brennalaurentan"},"content":" String deadlineDescription \u003d deadlineDescriptionDueDateArray[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"brennalaurentan"},"content":" String deadlineDueDate \u003d deadlineDescriptionDueDateArray[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"brennalaurentan"},"content":" if (deadlineDescription.equals(\"\")) { // empty description","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Missing task description!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"brennalaurentan"},"content":" else if (deadlineDueDate.equals(\"\")) { // empty due date","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Missing task due date!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"brennalaurentan"},"content":" else if (deadlineDescription.contains(\"/from\") ||","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"brennalaurentan"},"content":" deadlineDescription.contains(\"/to\")) { // unnecessary from and to date","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Deadline task cannot have a from and to date!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"brennalaurentan"},"content":" else {","lastModifiedDate":"2024-02-06"},{"lineNumber":106,"author":{"gitId":"brennalaurentan"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":107,"author":{"gitId":"brennalaurentan"},"content":" LocalDate deadlineDueDateLocal \u003d LocalDate.parse(deadlineDueDate);","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"brennalaurentan"},"content":" existingTaskList.addDeadline(deadlineDescription, deadlineDueDateLocal);","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"brennalaurentan"},"content":" catch (Exception e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":111,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Incorrect formatting of due date! Ensure it is yyyy-mm-dd\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":113,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"brennalaurentan"},"content":" Storage.saveTaskList(existingTaskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":118,"author":{"gitId":"brennalaurentan"},"content":" case \"event\":","lastModifiedDate":"2024-02-06"},{"lineNumber":119,"author":{"gitId":"brennalaurentan"},"content":" String eventDescriptionFromTo \u003d input.replace(\"event\", \"\").trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"brennalaurentan"},"content":" if (!eventDescriptionFromTo.contains(\" /from \") ||","lastModifiedDate":"2024-02-06"},{"lineNumber":121,"author":{"gitId":"brennalaurentan"},"content":" !eventDescriptionFromTo.contains(\" /to \")) { // missing \u0027/from\u0027 or \u0027/to\u0027 keywords","lastModifiedDate":"2024-02-06"},{"lineNumber":122,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Missing event from and/or to date!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":123,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":124,"author":{"gitId":"brennalaurentan"},"content":" Storage.saveTaskList(existingTaskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":125,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":126,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":127,"author":{"gitId":"brennalaurentan"},"content":" String[] eventDescriptionFromToArray \u003d input.replace(\"event\", \"\")","lastModifiedDate":"2024-02-06"},{"lineNumber":128,"author":{"gitId":"brennalaurentan"},"content":" .trim().split(\" /from \");","lastModifiedDate":"2024-02-06"},{"lineNumber":129,"author":{"gitId":"brennalaurentan"},"content":" String eventDescription \u003d eventDescriptionFromToArray[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":130,"author":{"gitId":"brennalaurentan"},"content":" String eventFromTo \u003d eventDescriptionFromToArray[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":131,"author":{"gitId":"brennalaurentan"},"content":" String[] eventFromToArray;","lastModifiedDate":"2024-02-06"},{"lineNumber":132,"author":{"gitId":"brennalaurentan"},"content":" String eventFrom \u003d \"\";","lastModifiedDate":"2024-02-06"},{"lineNumber":133,"author":{"gitId":"brennalaurentan"},"content":" String eventTo \u003d \"\";","lastModifiedDate":"2024-02-06"},{"lineNumber":134,"author":{"gitId":"brennalaurentan"},"content":" if (eventFromTo.contains(\" /to \")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":135,"author":{"gitId":"brennalaurentan"},"content":" eventFromToArray \u003d eventDescriptionFromToArray[1].trim().split(\" /to \");","lastModifiedDate":"2024-02-06"},{"lineNumber":136,"author":{"gitId":"brennalaurentan"},"content":" eventFrom \u003d eventFromToArray[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":137,"author":{"gitId":"brennalaurentan"},"content":" eventTo \u003d eventFromToArray[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":138,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":139,"author":{"gitId":"brennalaurentan"},"content":" if (eventDescription.equals(\"\")) { // missing description","lastModifiedDate":"2024-02-06"},{"lineNumber":140,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Missing task description!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":141,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":142,"author":{"gitId":"brennalaurentan"},"content":" } else if (eventFrom.equals(\"\")) { // missing from date","lastModifiedDate":"2024-02-06"},{"lineNumber":143,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Missing from date!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":144,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":145,"author":{"gitId":"brennalaurentan"},"content":" } else if (eventTo.equals(\"\")) { // missing to date","lastModifiedDate":"2024-02-06"},{"lineNumber":146,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Missing to date!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":147,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":148,"author":{"gitId":"brennalaurentan"},"content":" } else if (eventDescription.contains(\"/by\")) { // unnecessary due date","lastModifiedDate":"2024-02-06"},{"lineNumber":149,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Event task cannot have a due date!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":150,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":151,"author":{"gitId":"brennalaurentan"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":152,"author":{"gitId":"brennalaurentan"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":153,"author":{"gitId":"brennalaurentan"},"content":" LocalDate eventFromDateLocal \u003d LocalDate.parse(eventFrom);","lastModifiedDate":"2024-02-06"},{"lineNumber":154,"author":{"gitId":"brennalaurentan"},"content":" LocalDate eventToDateLocal \u003d LocalDate.parse(eventTo);","lastModifiedDate":"2024-02-06"},{"lineNumber":155,"author":{"gitId":"brennalaurentan"},"content":" existingTaskList.addEvent(eventDescription, eventFromDateLocal, eventToDateLocal);","lastModifiedDate":"2024-02-06"},{"lineNumber":156,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":157,"author":{"gitId":"brennalaurentan"},"content":" catch (Exception e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":158,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Incorrect formatting of due date! Ensure it is yyyy-mm-dd\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":159,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":160,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":161,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":162,"author":{"gitId":"brennalaurentan"},"content":" Storage.saveTaskList(existingTaskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":163,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":164,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":165,"author":{"gitId":"brennalaurentan"},"content":" case \"help\":","lastModifiedDate":"2024-02-06"},{"lineNumber":166,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"LIST OF COMMANDS\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":167,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Create todo: todo [task name] (eg: todo borrow book)\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":168,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Create deadline: deadline [task name] /by [due date] \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":169,"author":{"gitId":"brennalaurentan"},"content":" \"(eg: deadline homework /by Sun 6pm)\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":170,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Create event: event [task name] /from [from date] /to [to date] \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":171,"author":{"gitId":"brennalaurentan"},"content":" \"(eg: event concert /from Mon 6pm /to Mon 8pm)\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":172,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"List current tasks: list\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":173,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Mark a task as complete: mark [task number on list] \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":174,"author":{"gitId":"brennalaurentan"},"content":" \"(eg: mark 2)\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":175,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Mark a task as incomplete: unmark [task number on list] \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":176,"author":{"gitId":"brennalaurentan"},"content":" \"(eg: unmark 2)\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":177,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Delete a task: delete [task number on list] \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":178,"author":{"gitId":"brennalaurentan"},"content":" \"(eg: delete 3)\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":179,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Close Tam the Task Manager: bye\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":180,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":181,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":182,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":183,"author":{"gitId":"brennalaurentan"},"content":" default:","lastModifiedDate":"2024-02-06"},{"lineNumber":184,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Invalid command entered. Type \u0027help\u0027 for list of commands\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":185,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":186,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":187,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":188,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":189,"author":{"gitId":"brennalaurentan"},"content":" catch (Exception e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":190,"author":{"gitId":"brennalaurentan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":191,"author":{"gitId":"brennalaurentan"},"content":" return 0;","lastModifiedDate":"2024-02-06"},{"lineNumber":192,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":193,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":194,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":195,"author":{"gitId":"brennalaurentan"},"content":" public boolean isValidMark(String commandEntered) {","lastModifiedDate":"2024-02-06"},{"lineNumber":196,"author":{"gitId":"brennalaurentan"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":197,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":198,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":199,"author":{"gitId":"brennalaurentan"},"content":" public boolean isValidUnmark(String commandEntered) {","lastModifiedDate":"2024-02-06"},{"lineNumber":200,"author":{"gitId":"brennalaurentan"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":201,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":202,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":203,"author":{"gitId":"brennalaurentan"},"content":" public boolean isValidDelete(String commandEntered) {","lastModifiedDate":"2024-02-06"},{"lineNumber":204,"author":{"gitId":"brennalaurentan"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":205,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":206,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":207,"author":{"gitId":"brennalaurentan"},"content":" public boolean isValidTodo(String commandEntered) {","lastModifiedDate":"2024-02-06"},{"lineNumber":208,"author":{"gitId":"brennalaurentan"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":209,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":210,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":211,"author":{"gitId":"brennalaurentan"},"content":" public boolean isValidDeadline(String commandEntered) {","lastModifiedDate":"2024-02-06"},{"lineNumber":212,"author":{"gitId":"brennalaurentan"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":213,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":214,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":215,"author":{"gitId":"brennalaurentan"},"content":" public boolean isValidEvent(String commandEntered) {","lastModifiedDate":"2024-02-06"},{"lineNumber":216,"author":{"gitId":"brennalaurentan"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":217,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":218,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"brennalaurentan":218}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"import java.io.*;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"public class Storage {","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":" private static String workingDirectory \u003d System.getProperty(\"user.dir\");","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":" private static String dataDirectory \u003d workingDirectory + \"\\\\src\\\\main\\\\data\";","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":" private static String saveFilePath \u003d workingDirectory + \"\\\\src\\\\main\\\\data\\\\SavedList.txt\";","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":" public static TaskList getSavedTasks () {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":" File saveFile \u003d new File(saveFilePath);","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" TaskList taskListObj \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" if (fileExists(saveFilePath)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":" System.out.println(\"Previous saved list loaded.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":" taskList \u003d getListOfTasks(saveFile);","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":" taskListObj \u003d new TaskList(taskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" if (!directoryExists(dataDirectory)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":" createDirectory(dataDirectory);","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" saveFile.createNewFile();","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" System.out.println(\"File not found. New save file created.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" return taskListObj;","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":" catch (Exception e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":" return null;","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":" public static void saveTaskList(TaskList taskListObj) throws Exception {","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" File saveFile \u003d new File(saveFilePath);","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":" ArrayList\u003cTask\u003e taskList \u003d taskListObj.getTaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":" BufferedWriter writerObj \u003d new BufferedWriter(new FileWriter(saveFile, false));","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":" // save new","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":" //System.out.println(task.getTaskDetails());","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"brennalaurentan"},"content":" String taskStringToSave \u003d task.convertTaskToSave();","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":" //System.out.println(taskStringToSave);","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":" writerObj.write(taskStringToSave + \"\\n\");","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":" writerObj.close();","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":" //System.out.println(\"Task list changes saved\");","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"brennalaurentan"},"content":" public static boolean directoryExists(String directoryPath) throws Exception {","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"brennalaurentan"},"content":" boolean isExistent;","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"brennalaurentan"},"content":" File folderDirectory \u003d new File(directoryPath);","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"brennalaurentan"},"content":" isExistent \u003d folderDirectory.exists() \u0026\u0026 folderDirectory.isDirectory();","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"brennalaurentan"},"content":" return isExistent;","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"brennalaurentan"},"content":" public static File createDirectory(String directoryPath) throws Exception {","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"brennalaurentan"},"content":" Files.createDirectories(Paths.get(directoryPath));","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"brennalaurentan"},"content":" return new File(directoryPath);","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"brennalaurentan"},"content":" public static boolean fileExists(String filePath) throws Exception {","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"brennalaurentan"},"content":" boolean isExistent;","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"brennalaurentan"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"brennalaurentan"},"content":" isExistent \u003d file.exists();","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"brennalaurentan"},"content":" return isExistent;","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"brennalaurentan"},"content":" public static ArrayList\u003cTask\u003e getListOfTasks(File saveFile) throws Exception {","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"brennalaurentan"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"brennalaurentan"},"content":" BufferedReader readerObj \u003d new BufferedReader(new FileReader(saveFile));","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"brennalaurentan"},"content":" String nextLine;","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"brennalaurentan"},"content":" while ((nextLine \u003d readerObj.readLine()) !\u003d null) {","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"brennalaurentan"},"content":" String[] nextLineDetails \u003d nextLine.split(\"\\\\|\");","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"brennalaurentan"},"content":" String taskType \u003d nextLineDetails[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"brennalaurentan"},"content":" Task newTask \u003d new Todo();","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"brennalaurentan"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"brennalaurentan"},"content":" case \"T\":","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"brennalaurentan"},"content":" newTask \u003d new Todo();","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"brennalaurentan"},"content":" newTask \u003d newTask.convertSaveToTask(nextLine);","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"brennalaurentan"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"brennalaurentan"},"content":" case \"D\":","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"brennalaurentan"},"content":" newTask \u003d new Deadline();","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"brennalaurentan"},"content":" newTask \u003d newTask.convertSaveToTask(nextLine);","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"brennalaurentan"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"brennalaurentan"},"content":" case \"E\":","lastModifiedDate":"2024-02-02"},{"lineNumber":90,"author":{"gitId":"brennalaurentan"},"content":" newTask \u003d new Event();","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"brennalaurentan"},"content":" newTask \u003d newTask.convertSaveToTask(nextLine);","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"brennalaurentan"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":93,"author":{"gitId":"brennalaurentan"},"content":" default:","lastModifiedDate":"2024-02-02"},{"lineNumber":94,"author":{"gitId":"brennalaurentan"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":95,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":96,"author":{"gitId":"brennalaurentan"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"brennalaurentan"},"content":" return taskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"brennalaurentan":100}},{"path":"src/main/java/Tam.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"public class Tam {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":" private static TaskList taskListObj;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":" taskListObj \u003d Storage.getSavedTasks();","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":" Ui.greet();","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":" int status \u003d Parser.processCommand(taskListObj);","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":" while (status \u003d\u003d 1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":" status \u003d Parser.processCommand(taskListObj);","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":" Ui.exit();","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"brennalaurentan":17}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":" protected String taskCode;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":" public Task() {","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":" this.description \u003d \"NO DESCRIPTION\";","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":" public Task(String description, String taskCode) {","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" this.taskCode \u003d taskCode;","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" public Task(String description, String taskCode, boolean isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":" this.taskCode \u003d taskCode;","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":" return this.description;","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":" public String getTaskCode() { return this.taskCode; }","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":" public boolean isDone() {","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" return this.isDone;","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":" public abstract String getTaskDetails();","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":" public void markDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":" public void markUndone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"brennalaurentan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":" public abstract Task convertSaveToTask(String saveDetails);","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":" public abstract String convertTaskToSave();","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"brennalaurentan":51}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"public class TaskList {","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":" private static String dividerText \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":" public TaskList() {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":" this.taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":" public TaskList(ArrayList\u003cTask\u003e existingTaskList) {","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" this.taskList \u003d existingTaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" return this.taskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":" public void addTodo(String description) {","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" taskList.add(newTodo);","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"New todo added:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\" \" + newTodo.getTaskDetails() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Tasks in list: \" + taskList.size() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" public void addDeadline(String description, LocalDate dueDate) {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":" Deadline newDeadline \u003d new Deadline(description, dueDate);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":" taskList.add(newDeadline);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"New deadline added:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\" \" + newDeadline.getTaskDetails() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Tasks in list: \" + taskList.size() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" public void addEvent(String description, LocalDate fromDate, LocalDate toDate) {","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":" Event newEvent \u003d new Event(description, fromDate, toDate);","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":" taskList.add(newEvent);","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"New event added:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\" \" + newEvent.getTaskDetails() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Tasks in list: \" + taskList.size() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":" public void deleteTask(int taskNum) {","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":" Task taskToBeRemoved \u003d taskList.get(taskNum-1);","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":" taskList.remove(taskToBeRemoved);","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Task deleted:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\" \" + taskToBeRemoved.getTaskDetails() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Tasks in list: \" + taskList.size() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"brennalaurentan"},"content":" public void deleteAllTasks() {","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"brennalaurentan"},"content":" taskList.clear();","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"All tasks deleted.\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Tasks in list: \" + taskList.size() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"brennalaurentan"},"content":" public void listTasks() {","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"brennalaurentan"},"content":" if (!this.taskList.isEmpty()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"brennalaurentan"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"brennalaurentan"},"content":" Task thisTask \u003d taskList.get(i);","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"brennalaurentan"},"content":" System.out.print((i + 1) + \". \" + thisTask.getTaskDetails() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"brennalaurentan"},"content":" else {","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"No tasks in list.\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"brennalaurentan"},"content":" public void markTaskDone(int taskNum) {","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"brennalaurentan"},"content":" Task thisTask \u003d taskList.get(taskNum-1);","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"brennalaurentan"},"content":" thisTask.markDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"brennalaurentan"},"content":" String markedDoneText \u003d \"Nice! I\u0027ve marked this task as done:\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"brennalaurentan"},"content":" String taskText \u003d \" \" + thisTask.getTaskDetails() + \"\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(markedDoneText);","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(taskText);","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"brennalaurentan"},"content":" public void markTaskUndone(int taskNum) {","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"brennalaurentan"},"content":" Task thisTask \u003d taskList.get(taskNum-1);","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"brennalaurentan"},"content":" thisTask.markUndone();","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"brennalaurentan"},"content":" String markedUndoneText \u003d \"Ok, i\u0027ve marked this task as not done yet:\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"brennalaurentan"},"content":" String taskText \u003d \" \" + thisTask.getTaskDetails() + \"\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(markedUndoneText);","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(taskText);","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"brennalaurentan":97}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":" public Todo() {","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":" super();","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":" super(description, \"T\");","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":" super(description, \"T\", isDone);","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":" public String getTaskDetails() {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" String codeBox \u003d \"[\" + this.getTaskCode() + \"]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":" String statusBox \u003d \"[\" + this.getStatusIcon() + \"]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" String description \u003d this.getDescription();","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" return codeBox + statusBox + \" \" + description;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":" public Task convertSaveToTask(String saveString) {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":" //T|1|READ BOOK","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":" String[] saveDetails \u003d saveString.split(\"\\\\|\");","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" int doneStatus \u003d Integer.parseInt(saveDetails[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":" boolean isDone \u003d doneStatus \u003d\u003d 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":" String taskDescription \u003d saveDetails[2];","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":" return new Todo(taskDescription, isDone);","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":" public String convertTaskToSave() {","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" String taskCode \u003d this.getTaskCode();","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":" String taskStatus \u003d \"0\";","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":" if (this.isDone()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":" taskStatus \u003d \"1\";","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" String taskDescription \u003d this.getDescription();","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" return taskCode + \"|\" + taskStatus + \"|\" + taskDescription;","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"brennalaurentan":38}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"public class Ui {","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":" private static String dividerText \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":" public static void greet() {","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":" String greetText \u003d \"Hello! I\u0027m Tam the Task Manager!\\nWhat can I do for you?\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(greetText);","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":" public static void exit() {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":" String exitText \u003d \"Bye. Hope to see you again soon!\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(exitText);","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"brennalaurentan":17}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"todo borrow book","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"list","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"bye","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"brennalaurentan":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":"brennalaurentan"},"content":"java -classpath ..\\bin Tam \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":{"-":20,"brennalaurentan":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":"brennalaurentan"},"content":" mainClass.set(\"Tam\")","lastModifiedDate":"2024-02-07"},{"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":"brennalaurentan"},"content":" archiveBaseName \u003d \"tam\"","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" archiveVersion \u003d \"1.0\"","lastModifiedDate":"2024-02-07"},{"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,"brennalaurentan":3}},{"path":"src/main/java/Tam.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"import parser.Parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"import storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"public class Tam {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":" private static TaskList taskListObj;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":" private static Scanner scannerObj \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":" taskListObj \u003d Storage.getSavedTasks();","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" Ui.greet();","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":" String nextCommand \u003d scannerObj.nextLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" int status \u003d Parser.processCommand(nextCommand, taskListObj);","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" while (status \u003d\u003d 1) {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" nextCommand \u003d scannerObj.nextLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":" status \u003d Parser.processCommand(nextCommand, taskListObj);","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":" Ui.exit();","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"brennalaurentan":23}},{"path":"src/main/java/commands/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"public enum Commands {","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":" HELP,","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":" TODO,","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":" DEADLINE,","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":" EVENT,","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":" LIST,","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":" MARK,","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":" UNMARK,","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":" BYE,","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":" DELETE","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"brennalaurentan":13}},{"path":"src/main/java/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"package parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"import storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":"public class Parser {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":" private static String dividerText \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":" //private static Scanner scannerObj \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":" public static int processCommand(String input, TaskList existingTaskList) {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" //String input \u003d scannerObj.nextLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" String[] splitInput \u003d input.split(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" String command \u003d splitInput[0].toLowerCase();","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":" switch (command) {","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":" case \"bye\":","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" case \"exit\":","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":" return 0;","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":" case \"list\":","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" existingTaskList.listTasks();","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" case \"mark\":","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":" int taskNum \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":" if (command.equals(\"mark\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" existingTaskList.markTaskDone(taskNum);","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":" existingTaskList.markTaskUndone(taskNum);","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Invalid task number entered\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Task does not exist! Type \u0027list\u0027 to check task numbers\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":" Storage.saveTaskList(existingTaskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":" case \"delete\":","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":" if (splitInput[1].equalsIgnoreCase(\"all\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":" existingTaskList.deleteAllTasks();","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":" else {","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"brennalaurentan"},"content":" int taskNum \u003d Integer.parseInt(splitInput[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"brennalaurentan"},"content":" existingTaskList.deleteTask(taskNum);","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"brennalaurentan"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"brennalaurentan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Invalid task number entered\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"brennalaurentan"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Task does not exist! Type \u0027list\u0027 to check task numbers\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"brennalaurentan"},"content":" Storage.saveTaskList(existingTaskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"brennalaurentan"},"content":" case \"todo\":","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"brennalaurentan"},"content":" String todoDescription \u003d input.replace(\"todo\", \"\").trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"brennalaurentan"},"content":" if (todoDescription.equals(\"\")) { // missing description","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Missing task description!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"brennalaurentan"},"content":" } else if (todoDescription.contains(\"/by\")) { // unnecessary due date","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"tasks.Todo task cannot have a due date!\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"brennalaurentan"},"content":" } else if (todoDescription.contains(\"/from\") ||","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"brennalaurentan"},"content":" todoDescription.contains(\"/to\")) { // unnecessary from and to date","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"tasks.Todo task cannot have a from and to date!\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"brennalaurentan"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"brennalaurentan"},"content":" existingTaskList.addTodo(todoDescription);","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"brennalaurentan"},"content":" Storage.saveTaskList(existingTaskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"brennalaurentan"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"brennalaurentan"},"content":" String deadlineDescriptionDueDate \u003d input.replace(\"deadline\", \"\").trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"brennalaurentan"},"content":" if (!deadlineDescriptionDueDate.contains(\" /by \")) { // missing \u0027/by\u0027 keyword","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Missing due date!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"brennalaurentan"},"content":" Storage.saveTaskList(existingTaskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"brennalaurentan"},"content":" String[] deadlineDescriptionDueDateArray \u003d input.replace(\"deadline\", \"\")","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"brennalaurentan"},"content":" .trim().split(\" /by \");","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"brennalaurentan"},"content":" String deadlineDescription \u003d deadlineDescriptionDueDateArray[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"brennalaurentan"},"content":" String deadlineDueDate \u003d deadlineDescriptionDueDateArray[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"brennalaurentan"},"content":" if (deadlineDescription.equals(\"\")) { // empty description","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Missing task description!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"brennalaurentan"},"content":" else if (deadlineDueDate.equals(\"\")) { // empty due date","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Missing task due date!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"brennalaurentan"},"content":" else if (deadlineDescription.contains(\"/from\") ||","lastModifiedDate":"2024-02-06"},{"lineNumber":106,"author":{"gitId":"brennalaurentan"},"content":" deadlineDescription.contains(\"/to\")) { // unnecessary from and to date","lastModifiedDate":"2024-02-06"},{"lineNumber":107,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Deadline task cannot have a from and to date!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"brennalaurentan"},"content":" else {","lastModifiedDate":"2024-02-06"},{"lineNumber":111,"author":{"gitId":"brennalaurentan"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"brennalaurentan"},"content":" LocalDate deadlineDueDateLocal \u003d LocalDate.parse(deadlineDueDate);","lastModifiedDate":"2024-02-06"},{"lineNumber":113,"author":{"gitId":"brennalaurentan"},"content":" existingTaskList.addDeadline(deadlineDescription, deadlineDueDateLocal);","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"brennalaurentan"},"content":" catch (Exception e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Incorrect formatting of due date! Ensure it is yyyy-mm-dd\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":118,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":119,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"brennalaurentan"},"content":" Storage.saveTaskList(existingTaskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":121,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":122,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":123,"author":{"gitId":"brennalaurentan"},"content":" case \"event\":","lastModifiedDate":"2024-02-06"},{"lineNumber":124,"author":{"gitId":"brennalaurentan"},"content":" String eventDescriptionFromTo \u003d input.replace(\"event\", \"\").trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":125,"author":{"gitId":"brennalaurentan"},"content":" if (!eventDescriptionFromTo.contains(\" /from \") ||","lastModifiedDate":"2024-02-06"},{"lineNumber":126,"author":{"gitId":"brennalaurentan"},"content":" !eventDescriptionFromTo.contains(\" /to \")) { // missing \u0027/from\u0027 or \u0027/to\u0027 keywords","lastModifiedDate":"2024-02-06"},{"lineNumber":127,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Missing event from and/or to date!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":128,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":129,"author":{"gitId":"brennalaurentan"},"content":" Storage.saveTaskList(existingTaskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":130,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":131,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":132,"author":{"gitId":"brennalaurentan"},"content":" String[] eventDescriptionFromToArray \u003d input.replace(\"event\", \"\")","lastModifiedDate":"2024-02-06"},{"lineNumber":133,"author":{"gitId":"brennalaurentan"},"content":" .trim().split(\" /from \");","lastModifiedDate":"2024-02-06"},{"lineNumber":134,"author":{"gitId":"brennalaurentan"},"content":" String eventDescription \u003d eventDescriptionFromToArray[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":135,"author":{"gitId":"brennalaurentan"},"content":" String eventFromTo \u003d eventDescriptionFromToArray[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":136,"author":{"gitId":"brennalaurentan"},"content":" String[] eventFromToArray;","lastModifiedDate":"2024-02-06"},{"lineNumber":137,"author":{"gitId":"brennalaurentan"},"content":" String eventFrom \u003d \"\";","lastModifiedDate":"2024-02-06"},{"lineNumber":138,"author":{"gitId":"brennalaurentan"},"content":" String eventTo \u003d \"\";","lastModifiedDate":"2024-02-06"},{"lineNumber":139,"author":{"gitId":"brennalaurentan"},"content":" if (eventFromTo.contains(\" /to \")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":140,"author":{"gitId":"brennalaurentan"},"content":" eventFromToArray \u003d eventDescriptionFromToArray[1].trim().split(\" /to \");","lastModifiedDate":"2024-02-06"},{"lineNumber":141,"author":{"gitId":"brennalaurentan"},"content":" eventFrom \u003d eventFromToArray[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":142,"author":{"gitId":"brennalaurentan"},"content":" eventTo \u003d eventFromToArray[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":143,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":144,"author":{"gitId":"brennalaurentan"},"content":" if (eventDescription.equals(\"\")) { // missing description","lastModifiedDate":"2024-02-06"},{"lineNumber":145,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Missing task description!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":146,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":147,"author":{"gitId":"brennalaurentan"},"content":" } else if (eventFrom.equals(\"\")) { // missing from date","lastModifiedDate":"2024-02-06"},{"lineNumber":148,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Missing from date!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":149,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":150,"author":{"gitId":"brennalaurentan"},"content":" } else if (eventTo.equals(\"\")) { // missing to date","lastModifiedDate":"2024-02-06"},{"lineNumber":151,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Missing to date!\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":152,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":153,"author":{"gitId":"brennalaurentan"},"content":" } else if (eventDescription.contains(\"/by\")) { // unnecessary due date","lastModifiedDate":"2024-02-06"},{"lineNumber":154,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Event task cannot have a due date!\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":155,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":156,"author":{"gitId":"brennalaurentan"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":157,"author":{"gitId":"brennalaurentan"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":158,"author":{"gitId":"brennalaurentan"},"content":" LocalDate eventFromDateLocal \u003d LocalDate.parse(eventFrom);","lastModifiedDate":"2024-02-06"},{"lineNumber":159,"author":{"gitId":"brennalaurentan"},"content":" LocalDate eventToDateLocal \u003d LocalDate.parse(eventTo);","lastModifiedDate":"2024-02-06"},{"lineNumber":160,"author":{"gitId":"brennalaurentan"},"content":" existingTaskList.addEvent(eventDescription, eventFromDateLocal, eventToDateLocal);","lastModifiedDate":"2024-02-06"},{"lineNumber":161,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":162,"author":{"gitId":"brennalaurentan"},"content":" catch (Exception e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":163,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Incorrect formatting of due date! Ensure it is yyyy-mm-dd\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":164,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":165,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":166,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":167,"author":{"gitId":"brennalaurentan"},"content":" Storage.saveTaskList(existingTaskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":168,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":169,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":170,"author":{"gitId":"brennalaurentan"},"content":" case \"help\":","lastModifiedDate":"2024-02-06"},{"lineNumber":171,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"LIST OF COMMANDS\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":172,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Create todo: todo [task name] (eg: todo borrow book)\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":173,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Create deadline: deadline [task name] /by [due date] \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":174,"author":{"gitId":"brennalaurentan"},"content":" \"(eg: deadline homework /by Sun 6pm)\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":175,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Create event: event [task name] /from [from date] /to [to date] \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":176,"author":{"gitId":"brennalaurentan"},"content":" \"(eg: event concert /from Mon 6pm /to Mon 8pm)\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":177,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"List current tasks: list\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":178,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Mark a task as complete: mark [task number on list] \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":179,"author":{"gitId":"brennalaurentan"},"content":" \"(eg: mark 2)\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":180,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Mark a task as incomplete: unmark [task number on list] \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":181,"author":{"gitId":"brennalaurentan"},"content":" \"(eg: unmark 2)\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":182,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Delete a task: delete [task number on list] \" +","lastModifiedDate":"2024-02-06"},{"lineNumber":183,"author":{"gitId":"brennalaurentan"},"content":" \"(eg: delete 3)\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":184,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Close Tam the Task Manager: bye\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":185,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":186,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":187,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":188,"author":{"gitId":"brennalaurentan"},"content":" default:","lastModifiedDate":"2024-02-06"},{"lineNumber":189,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Invalid command entered. Type \u0027help\u0027 for list of commands\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":190,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":191,"author":{"gitId":"brennalaurentan"},"content":" return 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":192,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":193,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":194,"author":{"gitId":"brennalaurentan"},"content":" catch (Exception e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":195,"author":{"gitId":"brennalaurentan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":196,"author":{"gitId":"brennalaurentan"},"content":" return 0;","lastModifiedDate":"2024-02-06"},{"lineNumber":197,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":198,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":199,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":200,"author":{"gitId":"brennalaurentan"},"content":" public boolean isValidMark(String commandEntered) {","lastModifiedDate":"2024-02-06"},{"lineNumber":201,"author":{"gitId":"brennalaurentan"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":202,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":203,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":204,"author":{"gitId":"brennalaurentan"},"content":" public boolean isValidUnmark(String commandEntered) {","lastModifiedDate":"2024-02-06"},{"lineNumber":205,"author":{"gitId":"brennalaurentan"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":206,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":207,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":208,"author":{"gitId":"brennalaurentan"},"content":" public boolean isValidDelete(String commandEntered) {","lastModifiedDate":"2024-02-06"},{"lineNumber":209,"author":{"gitId":"brennalaurentan"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":210,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":211,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":212,"author":{"gitId":"brennalaurentan"},"content":" public boolean isValidTodo(String commandEntered) {","lastModifiedDate":"2024-02-06"},{"lineNumber":213,"author":{"gitId":"brennalaurentan"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":214,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":215,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":216,"author":{"gitId":"brennalaurentan"},"content":" public boolean isValidDeadline(String commandEntered) {","lastModifiedDate":"2024-02-06"},{"lineNumber":217,"author":{"gitId":"brennalaurentan"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":218,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":219,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":220,"author":{"gitId":"brennalaurentan"},"content":" public boolean isValidEvent(String commandEntered) {","lastModifiedDate":"2024-02-06"},{"lineNumber":221,"author":{"gitId":"brennalaurentan"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":222,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":223,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"brennalaurentan":223}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"package storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"import tasks.Deadline;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"import tasks.Event;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"import tasks.Todo;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":"import java.io.*;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":"public class Storage {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" private static String workingDirectory \u003d System.getProperty(\"user.dir\");","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" private static String dataDirectory \u003d workingDirectory + \"\\\\src\\\\main\\\\data\";","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" private static String saveFilePath \u003d workingDirectory + \"\\\\src\\\\main\\\\data\\\\SavedList.txt\";","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":" public static TaskList getSavedTasks () {","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":" File saveFile \u003d new File(saveFilePath);","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":" TaskList taskListObj \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":" if (fileExists(saveFilePath)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" System.out.println(\"Previous saved list loaded.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" taskList \u003d getListOfTasks(saveFile);","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":" taskListObj \u003d new TaskList(taskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":" if (!directoryExists(dataDirectory)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":" createDirectory(dataDirectory);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" saveFile.createNewFile();","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" System.out.println(\"File not found. New save file created.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":" return taskListObj;","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":" catch (Exception e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":" return null;","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":" public static void saveTaskList(TaskList taskListObj) throws Exception {","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":" File saveFile \u003d new File(saveFilePath);","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":" ArrayList\u003cTask\u003e taskList \u003d taskListObj.getTaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":" BufferedWriter writerObj \u003d new BufferedWriter(new FileWriter(saveFile, false));","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":" // save new","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"brennalaurentan"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":" //System.out.println(task.getTaskDetails());","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"brennalaurentan"},"content":" String taskStringToSave \u003d task.convertTaskToSave();","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"brennalaurentan"},"content":" //System.out.println(taskStringToSave);","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"brennalaurentan"},"content":" writerObj.write(taskStringToSave + \"\\n\");","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"brennalaurentan"},"content":" writerObj.close();","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"brennalaurentan"},"content":" //System.out.println(\"Task list changes saved\");","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"brennalaurentan"},"content":" public static boolean directoryExists(String directoryPath) throws Exception {","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"brennalaurentan"},"content":" boolean isExistent;","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"brennalaurentan"},"content":" File folderDirectory \u003d new File(directoryPath);","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"brennalaurentan"},"content":" isExistent \u003d folderDirectory.exists() \u0026\u0026 folderDirectory.isDirectory();","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"brennalaurentan"},"content":" return isExistent;","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"brennalaurentan"},"content":" public static File createDirectory(String directoryPath) throws Exception {","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"brennalaurentan"},"content":" Files.createDirectories(Paths.get(directoryPath));","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"brennalaurentan"},"content":" return new File(directoryPath);","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"brennalaurentan"},"content":" public static boolean fileExists(String filePath) throws Exception {","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"brennalaurentan"},"content":" boolean isExistent;","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"brennalaurentan"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"brennalaurentan"},"content":" isExistent \u003d file.exists();","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"brennalaurentan"},"content":" return isExistent;","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"brennalaurentan"},"content":" public static ArrayList\u003cTask\u003e getListOfTasks(File saveFile) throws Exception {","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"brennalaurentan"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"brennalaurentan"},"content":" BufferedReader readerObj \u003d new BufferedReader(new FileReader(saveFile));","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"brennalaurentan"},"content":" String nextLine;","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"brennalaurentan"},"content":" while ((nextLine \u003d readerObj.readLine()) !\u003d null) {","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"brennalaurentan"},"content":" String[] nextLineDetails \u003d nextLine.split(\"\\\\|\");","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"brennalaurentan"},"content":" String taskType \u003d nextLineDetails[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"brennalaurentan"},"content":" Task newTask \u003d new Todo();","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"brennalaurentan"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"brennalaurentan"},"content":" case \"T\":","lastModifiedDate":"2024-02-02"},{"lineNumber":90,"author":{"gitId":"brennalaurentan"},"content":" newTask \u003d new Todo();","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"brennalaurentan"},"content":" newTask \u003d newTask.convertSaveToTask(nextLine);","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"brennalaurentan"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":93,"author":{"gitId":"brennalaurentan"},"content":" case \"D\":","lastModifiedDate":"2024-02-02"},{"lineNumber":94,"author":{"gitId":"brennalaurentan"},"content":" newTask \u003d new Deadline();","lastModifiedDate":"2024-02-02"},{"lineNumber":95,"author":{"gitId":"brennalaurentan"},"content":" newTask \u003d newTask.convertSaveToTask(nextLine);","lastModifiedDate":"2024-02-02"},{"lineNumber":96,"author":{"gitId":"brennalaurentan"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"brennalaurentan"},"content":" case \"E\":","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"brennalaurentan"},"content":" newTask \u003d new Event();","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"brennalaurentan"},"content":" newTask \u003d newTask.convertSaveToTask(nextLine);","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"brennalaurentan"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"brennalaurentan"},"content":" default:","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"brennalaurentan"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":104,"author":{"gitId":"brennalaurentan"},"content":" taskList.add(newTask);","lastModifiedDate":"2024-02-02"},{"lineNumber":105,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":106,"author":{"gitId":"brennalaurentan"},"content":" return taskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":107,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":108,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"brennalaurentan":108}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"package tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":" LocalDate dueDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":" public Deadline() {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":" super();","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":" public Deadline(String description, LocalDate dueDate) {","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" super(description, \"D\");","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":" this.dueDate \u003d dueDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" public Deadline(String description, LocalDate dueDate, boolean isDone) {","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":" super(description, \"D\", isDone);","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":" this.dueDate \u003d dueDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" public LocalDate getDueDate() {","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":" return this.dueDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" public String getDueDateString() {","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":" String formattedString \u003d dueDate.format(formatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" return formattedString;","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":" public String getTaskDetails() {","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":" String codeBox \u003d \"[\" + this.getTaskCode() + \"]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" String statusBox \u003d \"[\" + this.getStatusIcon() + \"]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" String description \u003d this.getDescription();","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy\");","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":" String formattedDueDate \u003d dueDate.format(formatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" String due \u003d \"(by: \" + formattedDueDate + \")\";","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":" return codeBox + statusBox + \" \" + description + \" \" + due;","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":" public Task convertSaveToTask(String saveString) {","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":" //T|1|READ BOOK|dueDate","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"brennalaurentan"},"content":" String[] saveDetails \u003d saveString.split(\"\\\\|\");","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":" int doneStatus \u003d Integer.parseInt(saveDetails[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":" boolean isDone \u003d doneStatus \u003d\u003d 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":" String taskDescription \u003d saveDetails[2];","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":" String[] dueDateStringArray \u003d saveDetails[3].split(\"-\");","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":" int[] dueDateArray \u003d new int[3];","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"brennalaurentan"},"content":" for (int i \u003d 0; i \u003c 3; i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":" dueDateArray[i] \u003d Integer.parseInt(dueDateStringArray[i]);","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"brennalaurentan"},"content":" LocalDate dueDate \u003d LocalDate.of(dueDateArray[0], dueDateArray[1], dueDateArray[2]);","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"brennalaurentan"},"content":" return new Deadline(taskDescription, dueDate, isDone);","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"brennalaurentan"},"content":" public String convertTaskToSave() {","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"brennalaurentan"},"content":" String taskCode \u003d this.getTaskCode();","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"brennalaurentan"},"content":" String taskStatus \u003d \"0\";","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"brennalaurentan"},"content":" if (this.isDone()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"brennalaurentan"},"content":" taskStatus \u003d \"1\";","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"brennalaurentan"},"content":" String taskDescription \u003d this.getDescription();","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"brennalaurentan"},"content":" String taskDueDate \u003d this.getDueDateString();","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"brennalaurentan"},"content":" return taskCode + \"|\" + taskStatus + \"|\" + taskDescription + \"|\" + taskDueDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"brennalaurentan":68}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"package tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":" //String fromDate \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":" LocalDate fromDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":" //String toDate \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":" LocalDate toDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":" public Event() {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":" super();","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" public Event(String description, LocalDate fromDate, LocalDate toDate) {","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" super(description, \"E\");","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" this.fromDate \u003d fromDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":" this.toDate \u003d toDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":" public Event(String description, LocalDate fromDate, LocalDate toDate, boolean isDone) {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" super(description, \"E\", isDone);","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":" this.fromDate \u003d fromDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":" this.toDate \u003d toDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" public LocalDate getFromDate() {","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":" return this.fromDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":" public String getFromDateString() {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":" String formattedString \u003d fromDate.format(formatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" return formattedString;","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":" public LocalDate getToDate() {","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" return this.toDate;","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":" public String getToDateString() {","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":" String formattedString \u003d toDate.format(formatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"brennalaurentan"},"content":" return formattedString;","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":" public String getTaskDetails() {","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":" String codeBox \u003d \"[\" + this.getTaskCode() + \"]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":" String statusBox \u003d \"[\" + this.getStatusIcon() + \"]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"brennalaurentan"},"content":" String description \u003d this.getDescription();","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy\");","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"brennalaurentan"},"content":" String formattedFromDate \u003d this.fromDate.format(formatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"brennalaurentan"},"content":" String formattedToDate \u003d this.toDate.format(formatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"brennalaurentan"},"content":" String fromTo \u003d \"(from: \" + formattedFromDate + \" to: \" + formattedToDate + \")\";","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"brennalaurentan"},"content":" return codeBox + statusBox + \" \" + description + \" \" + fromTo;","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"brennalaurentan"},"content":" public Task convertSaveToTask(String saveString) {","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"brennalaurentan"},"content":" //T|1|READ BOOK|dueDate","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"brennalaurentan"},"content":" String[] saveDetails \u003d saveString.split(\"\\\\|\");","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"brennalaurentan"},"content":" int doneStatus \u003d Integer.parseInt(saveDetails[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"brennalaurentan"},"content":" boolean isDone \u003d doneStatus \u003d\u003d 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"brennalaurentan"},"content":" String taskDescription \u003d saveDetails[2];","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"brennalaurentan"},"content":" String fromDate \u003d saveDetails[3];","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"brennalaurentan"},"content":" String toDate \u003d saveDetails[4];","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"brennalaurentan"},"content":" String[] fromDateStringArray \u003d fromDate.split(\"-\");","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"brennalaurentan"},"content":" String[] toDateStringArray \u003d toDate.split(\"-\");","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"brennalaurentan"},"content":" int[] fromDateArray \u003d new int[3];","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"brennalaurentan"},"content":" int[] toDateArray \u003d new int[3];","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"brennalaurentan"},"content":" for (int i \u003d 0; i \u003c 3; i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"brennalaurentan"},"content":" fromDateArray[i] \u003d Integer.parseInt(fromDateStringArray[i]);","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"brennalaurentan"},"content":" toDateArray[i] \u003d Integer.parseInt(toDateStringArray[i]);","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"brennalaurentan"},"content":" LocalDate eventFromDateLocal \u003d LocalDate.of(fromDateArray[0], fromDateArray[1], fromDateArray[2]);","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"brennalaurentan"},"content":" LocalDate eventToDateLocal \u003d LocalDate.of(toDateArray[0], toDateArray[1], toDateArray[2]);","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"brennalaurentan"},"content":" return new Event(taskDescription,eventFromDateLocal, eventToDateLocal, isDone);","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"brennalaurentan"},"content":" public String convertTaskToSave() {","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"brennalaurentan"},"content":" String taskCode \u003d this.getTaskCode();","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"brennalaurentan"},"content":" String taskStatus \u003d \"0\";","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"brennalaurentan"},"content":" if (this.isDone()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"brennalaurentan"},"content":" taskStatus \u003d \"1\";","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"brennalaurentan"},"content":" String taskDescription \u003d this.getDescription();","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"brennalaurentan"},"content":" String taskFromDate \u003d this.getFromDateString();","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"brennalaurentan"},"content":" String taskToDate \u003d this.getToDateString();","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"brennalaurentan"},"content":" return taskCode + \"|\" + taskStatus + \"|\" + taskDescription + \"|\" + taskFromDate + \"|\" + taskToDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":90,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"brennalaurentan":91}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"package tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":" protected String description;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":" protected String taskCode;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":" public Task() {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":" this.description \u003d \"NO DESCRIPTION\";","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":" public Task(String description, String taskCode) {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":" this.taskCode \u003d taskCode;","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":" public Task(String description, String taskCode, boolean isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":" this.description \u003d description;","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":" this.taskCode \u003d taskCode;","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":" return this.description;","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":" public String getTaskCode() { return this.taskCode; }","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" public boolean isDone() {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" return this.isDone;","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" public abstract String getTaskDetails();","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":" public void markDone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"brennalaurentan"},"content":" public void markUndone() {","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":" public abstract Task convertSaveToTask(String saveDetails);","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"brennalaurentan"},"content":" public abstract String convertTaskToSave();","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"brennalaurentan":52}},{"path":"src/main/java/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"package tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"import tasks.Event;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"import tasks.Todo;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":"public class TaskList {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":" private static String dividerText \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":" private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" public TaskList() {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":" this.taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" public TaskList(ArrayList\u003cTask\u003e existingTaskList) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":" this.taskList \u003d existingTaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" return this.taskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":" public void addTodo(String description) {","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" Todo newTodo \u003d new Todo(description);","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" taskList.add(newTodo);","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"New todo added:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\" \" + newTodo.getTaskDetails() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Tasks in list: \" + taskList.size() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" public void addDeadline(String description, LocalDate dueDate) {","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" Deadline newDeadline \u003d new Deadline(description, dueDate);","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":" taskList.add(newDeadline);","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"New deadline added:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\" \" + newDeadline.getTaskDetails() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Tasks in list: \" + taskList.size() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":" public void addEvent(String description, LocalDate fromDate, LocalDate toDate) {","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"brennalaurentan"},"content":" Event newEvent \u003d new Event(description, fromDate, toDate);","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":" taskList.add(newEvent);","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"New event added:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\" \" + newEvent.getTaskDetails() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Tasks in list: \" + taskList.size() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"brennalaurentan"},"content":" public void deleteTask(int taskNum) {","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"brennalaurentan"},"content":" Task taskToBeRemoved \u003d taskList.get(taskNum-1);","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"brennalaurentan"},"content":" taskList.remove(taskToBeRemoved);","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Task deleted:\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\" \" + taskToBeRemoved.getTaskDetails() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Tasks in list: \" + taskList.size() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"brennalaurentan"},"content":" public void deleteAllTasks() {","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"brennalaurentan"},"content":" taskList.clear();","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"All tasks deleted.\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"Tasks in list: \" + taskList.size() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"brennalaurentan"},"content":" public void listTasks() {","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"brennalaurentan"},"content":" if (!this.taskList.isEmpty()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"brennalaurentan"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"brennalaurentan"},"content":" Task thisTask \u003d taskList.get(i);","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"brennalaurentan"},"content":" System.out.print((i + 1) + \". \" + thisTask.getTaskDetails() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"brennalaurentan"},"content":" else {","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(\"No tasks in list.\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"brennalaurentan"},"content":" public void markTaskDone(int taskNum) {","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"brennalaurentan"},"content":" Task thisTask \u003d taskList.get(taskNum-1);","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"brennalaurentan"},"content":" thisTask.markDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"brennalaurentan"},"content":" String markedDoneText \u003d \"Nice! I\u0027ve marked this task as done:\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"brennalaurentan"},"content":" String taskText \u003d \" \" + thisTask.getTaskDetails() + \"\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(markedDoneText);","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(taskText);","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"brennalaurentan"},"content":" public void markTaskUndone(int taskNum) {","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"brennalaurentan"},"content":" Task thisTask \u003d taskList.get(taskNum-1);","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"brennalaurentan"},"content":" thisTask.markUndone();","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"brennalaurentan"},"content":" String markedUndoneText \u003d \"Ok, i\u0027ve marked this task as not done yet:\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"brennalaurentan"},"content":" String taskText \u003d \" \" + thisTask.getTaskDetails() + \"\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(markedUndoneText);","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(taskText);","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"brennalaurentan":102}},{"path":"src/main/java/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"package tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":" public Todo() {","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":" super();","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":" super(description, \"T\");","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":" public Todo(String description, boolean isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":" super(description, \"T\", isDone);","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":" public String getTaskDetails() {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" String codeBox \u003d \"[\" + this.getTaskCode() + \"]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" String statusBox \u003d \"[\" + this.getStatusIcon() + \"]\";","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" String description \u003d this.getDescription();","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":" return codeBox + statusBox + \" \" + description;","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":" public Task convertSaveToTask(String saveString) {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" //T|1|READ BOOK","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":" String[] saveDetails \u003d saveString.split(\"\\\\|\");","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":" int doneStatus \u003d Integer.parseInt(saveDetails[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":" boolean isDone \u003d doneStatus \u003d\u003d 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" String taskDescription \u003d saveDetails[2];","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" return new Todo(taskDescription, isDone);","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":" public String convertTaskToSave() {","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":" String taskCode \u003d this.getTaskCode();","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":" String taskStatus \u003d \"0\";","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":" if (this.isDone()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" taskStatus \u003d \"1\";","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":" String taskDescription \u003d this.getDescription();","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":" return taskCode + \"|\" + taskStatus + \"|\" + taskDescription;","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"brennalaurentan":40}},{"path":"src/main/java/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"package ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"public class Ui {","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":" private static String dividerText \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":" public static void greet() {","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":" String greetText \u003d \"Hello! I\u0027m Tam the Task Manager!\\nWhat can I do for you?\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(greetText);","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" public static void exit() {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":" String exitText \u003d \"Bye. Hope to see you again soon!\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(exitText);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" System.out.print(dividerText);","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"brennalaurentan":19}},{"path":"src/test/java/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"package parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"public class ParserTest {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":" public void createEvent_wrongDateFormat_exceptionThrown() {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":" TaskList existingTaskList \u003d new TaskList();","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" Parser.processCommand(\"event Sleep /from 14/09/2011 /to 15/4/2022\",","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":" existingTaskList);","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" catch (Exception e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" assertEquals(\"Text \u002714/09/2011\u0027 could not be parsed at index 0\", e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" public void deleteTask_taskNumberIsString_exceptionThrown() {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":" TaskList existingTaskList \u003d new TaskList();","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" Parser.processCommand(\"delete fifty\", existingTaskList);","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":" catch (NumberFormatException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" assertEquals(\"For input string: \\\"fifty\\\"\", e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"brennalaurentan":33}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"todo borrow book","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"list","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"bye","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"brennalaurentan":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":"brennalaurentan"},"content":"java -classpath ..\\bin Tam \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":{"-":20,"brennalaurentan":1}}] diff --git a/brennalaurentan_ip_master/commits.json b/brennalaurentan_ip_master/commits.json index 83dc3fce..36441990 100644 --- a/brennalaurentan_ip_master/commits.json +++ b/brennalaurentan_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"brennalaurentan":[{"date":"2024-01-26","commitResults":[{"hash":"4a7b1fa018ed833c71248d6347bc2c4dd5cab06d","isMergeCommit":false,"messageTitle":"Removed Duke class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}},{"hash":"613265b7a8ed12e48437dba14818c26bbae6f1b8","isMergeCommit":false,"messageTitle":"Added Tam class with greet and exit texts","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"c7f91d75ac6136f460c7690a58f469dd9261706f","isMergeCommit":false,"messageTitle":"Added Echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"844e2d133a49a9a841513c13ad851bb8f63b1e31","isMergeCommit":false,"messageTitle":"Added add task and list features","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"a268be2ed7a382d5e58b5ca2b194a2108effa433","isMergeCommit":false,"messageTitle":"Added Task class and Mark/Unmark Task feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":8}}}]},{"date":"2024-01-27","commitResults":[{"hash":"fc07ddf0829247df917449119199ecd55f982399","isMergeCommit":false,"messageTitle":"Added Todo, Deadline, Event classes","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":140,"deletions":33}}},{"hash":"48d7ea8a316a5bf8b68016e0e4c6763d2e776960","isMergeCommit":false,"messageTitle":"Added automated testing using I/O redirection","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"37c3aec19f904de1ca826d427e0e8437e2c9e4b9","isMergeCommit":false,"messageTitle":"Added basic error handling for incorrect inputs for all Todo, Deadline, Event task types (missing parameters, empty parameters)","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":16}}}]},{"date":"2024-01-28","commitResults":[{"hash":"be5647252955c37872e42a0f2f5ccd34624e94ab","isMergeCommit":false,"messageTitle":"Added delete task feature with error handling","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":9}}},{"hash":"0e1abe4f84fe84696ba39521c6c59ba135dde2f7","isMergeCommit":false,"messageTitle":"Added enumeration usage with Commands enum","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"8f706643c5d87e7fad9ef10b250681c657df0606","isMergeCommit":false,"messageTitle":"Updated Help feature with new Delete command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}}]},{"date":"2024-02-02","commitResults":[{"hash":"0a181532c4c12efbd30d8c225f477c14a9ca556f","isMergeCommit":false,"messageTitle":"Add formatting between String and Task form for all Task subclasses, for saving feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":104,"deletions":0}}},{"hash":"a29f949abc6a549d8a854708f1b13b5a7948eb64","isMergeCommit":false,"messageTitle":"Add FileRetriever class for list saving and retrieving between sessions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":0}}},{"hash":"097eb3165d3357edeeedbf9d22f7bdccb8ee7071","isMergeCommit":false,"messageTitle":"Add list retrieving on startup and saving after changes made","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":152,"deletions":146}}},{"hash":"cba00b6b8fec0dbc60f6fb8673faedd6077787f6","isMergeCommit":false,"messageTitle":"Sample saved list","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}}]},{"date":"2024-02-03","commitResults":[{"hash":"edb464425aed5c4ed45467a7a5b51ad1c40dc229","isMergeCommit":false,"messageTitle":"Add LocalDate formatting for saving due, from and to dates for Deadline and Event tasks","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":107,"deletions":26}}}]},{"date":"2024-02-06","commitResults":[{"hash":"f921a64856147edd853cb449ec0b06abb1e7a875","isMergeCommit":false,"messageTitle":"Refactor code into Ui, Storage, Parser, TaskList","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":4},"java":{"insertions":546,"deletions":298}}},{"hash":"722a5f68975c6b1f5196d680ee3497390d04c1ca","isMergeCommit":false,"messageTitle":"Add delete all tasks feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":5},"java":{"insertions":15,"deletions":216}}}]}]},"authorFileTypeContributionMap":{"brennalaurentan":{"java":705,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":8}},"authorContributionVariance":{"brennalaurentan":69002.9},"authorDisplayNameMap":{"brennalaurentan":"CS2103T-T15-3 BREN.. ERN"}} +{"authorDailyContributionsMap":{"brennalaurentan":[{"date":"2024-01-26","commitResults":[{"hash":"4a7b1fa018ed833c71248d6347bc2c4dd5cab06d","isMergeCommit":false,"messageTitle":"Removed Duke class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}},{"hash":"613265b7a8ed12e48437dba14818c26bbae6f1b8","isMergeCommit":false,"messageTitle":"Added Tam class with greet and exit texts","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"c7f91d75ac6136f460c7690a58f469dd9261706f","isMergeCommit":false,"messageTitle":"Added Echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"844e2d133a49a9a841513c13ad851bb8f63b1e31","isMergeCommit":false,"messageTitle":"Added add task and list features","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"a268be2ed7a382d5e58b5ca2b194a2108effa433","isMergeCommit":false,"messageTitle":"Added Task class and Mark/Unmark Task feature","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":8}}}]},{"date":"2024-01-27","commitResults":[{"hash":"fc07ddf0829247df917449119199ecd55f982399","isMergeCommit":false,"messageTitle":"Added Todo, Deadline, Event classes","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":140,"deletions":33}}},{"hash":"48d7ea8a316a5bf8b68016e0e4c6763d2e776960","isMergeCommit":false,"messageTitle":"Added automated testing using I/O redirection","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"37c3aec19f904de1ca826d427e0e8437e2c9e4b9","isMergeCommit":false,"messageTitle":"Added basic error handling for incorrect inputs for all Todo, Deadline, Event task types (missing parameters, empty parameters)","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":106,"deletions":16}}}]},{"date":"2024-01-28","commitResults":[{"hash":"be5647252955c37872e42a0f2f5ccd34624e94ab","isMergeCommit":false,"messageTitle":"Added delete task feature with error handling","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":9}}},{"hash":"0e1abe4f84fe84696ba39521c6c59ba135dde2f7","isMergeCommit":false,"messageTitle":"Added enumeration usage with Commands enum","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"8f706643c5d87e7fad9ef10b250681c657df0606","isMergeCommit":false,"messageTitle":"Updated Help feature with new Delete command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}}]},{"date":"2024-02-02","commitResults":[{"hash":"0a181532c4c12efbd30d8c225f477c14a9ca556f","isMergeCommit":false,"messageTitle":"Add formatting between String and Task form for all Task subclasses, for saving feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":104,"deletions":0}}},{"hash":"a29f949abc6a549d8a854708f1b13b5a7948eb64","isMergeCommit":false,"messageTitle":"Add FileRetriever class for list saving and retrieving between sessions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":97,"deletions":0}}},{"hash":"097eb3165d3357edeeedbf9d22f7bdccb8ee7071","isMergeCommit":false,"messageTitle":"Add list retrieving on startup and saving after changes made","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":152,"deletions":146}}},{"hash":"cba00b6b8fec0dbc60f6fb8673faedd6077787f6","isMergeCommit":false,"messageTitle":"Sample saved list","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}}]},{"date":"2024-02-03","commitResults":[{"hash":"edb464425aed5c4ed45467a7a5b51ad1c40dc229","isMergeCommit":false,"messageTitle":"Add LocalDate formatting for saving due, from and to dates for Deadline and Event tasks","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":107,"deletions":26}}}]},{"date":"2024-02-06","commitResults":[{"hash":"f921a64856147edd853cb449ec0b06abb1e7a875","isMergeCommit":false,"messageTitle":"Refactor code into Ui, Storage, Parser, TaskList","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":4},"java":{"insertions":546,"deletions":298}}},{"hash":"722a5f68975c6b1f5196d680ee3497390d04c1ca","isMergeCommit":false,"messageTitle":"Add delete all tasks feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":5},"java":{"insertions":15,"deletions":216}}}]},{"date":"2024-02-07","commitResults":[{"hash":"420db78a69f803f5e9a4aa87812bac5d7f6ed53e","isMergeCommit":false,"messageTitle":"Organise into packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":8}}},{"hash":"dd2d050431162d45848d98090bd814d343875eb9","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"f2e1d557b170a1f1657e490efd2b1a388b827371","isMergeCommit":false,"messageTitle":"Update Storage.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"8fc2499a143842d11323fafffd03d509b32a352f","isMergeCommit":false,"messageTitle":"Add JUnit testing","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":45,"deletions":6}}},{"hash":"2086e138bfdcc7850abedcd1531923854254c171","isMergeCommit":false,"messageTitle":"Update build.gradle with JAR details","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"brennalaurentan":{"java":772,"md":0,"fxml":0,"sh":0,"bat":1,"gradle":3,"txt":5}},"authorContributionVariance":{"brennalaurentan":65559.36},"authorDisplayNameMap":{"brennalaurentan":"CS2103T-T15-3 BREN.. ERN"}} diff --git a/c-wenlong_ip_master/authorship.json b/c-wenlong_ip_master/authorship.json index a89f0155..9fb7ffac 100644 --- a/c-wenlong_ip_master/authorship.json +++ b/c-wenlong_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":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" mainClass.set(\"duke.KBot.Main\")","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"c-wenlong":17,"-":41}},{"path":"src/main/java/duke/KBot/KBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.kbot;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import duke.actions.Command;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"import duke.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import duke.exceptions.InvalidInputException;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"import duke.ui_design.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * Encapsulate a chatbot names kaipybara that takes in input from the user and","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" * perform tasks such as creating a todo list.","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"public class KBot {","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" * Simulate what goes on in the chatbot.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" public static void simulate() {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" Scanner sc \u003d new Scanner(System.in); // read inputs from user","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" while (true) {","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" String userInput \u003d sc.nextLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" System.out.println(ui.getLine());","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" if (userInput.equals(\"bye\")) { // stops the program","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" Command c \u003d Parser.parse(userInput);","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" System.out.println(c.execute());","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" System.out.println(\"Error: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" System.out.println(\"Error: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" } catch (InvalidInputException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" System.out.println(\"Error: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" System.out.println(\"Error: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" System.out.print(ui.getLine());","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" sc.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":50}},{"path":"src/main/java/duke/KBot/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.kbot;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import duke.ui_design.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":" * Main class where we enter the program.","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":"public class Main {","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" System.out.println(ui.getStartMessage()); // opening statement","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" TaskManager.loadLocalSavedTasks(); // checking if there are local files to load","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" KBot.simulate(); // simulate kaipybara chatbot","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" System.out.println(ui.getEndMessage()); // closing statement","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" System.out.println(ui.getFlower());","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":20}},{"path":"src/main/java/duke/KBot/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.kbot;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import duke.actions.AddTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import duke.actions.Command;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import duke.actions.DeleteTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"import duke.actions.FindTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import duke.actions.Help;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"import duke.actions.ListTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"import duke.actions.MarkTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"import duke.actions.UnMarkTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":"import duke.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":"import duke.exceptions.InvalidInputException;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" * Parse through the commands to return a specific command class.","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":"public class Parser {","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" * Execute whatever command thrown at the bot by the user","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" * @param userInput String representing command to the bot.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" * @throws InvalidCommandException Exceptions thrown when the command is not","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" * valid.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" * @throws InvalidInputException Exception thrown when command parameters are","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" * not valid.","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" * @return Returns a Command to be executed.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" public static Command parse(String userInput) throws InvalidCommandException, InvalidInputException {","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" String[] inputs \u003d userInput.trim().split(\" \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" String instruction \u003d inputs[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" if (inputs.length \u003e 1) { // for ins with parameter","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" switch (instruction) { // correct ins but wrong params handled by each method call","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" int indexToMark \u003d Integer.parseInt(inputs[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" return new MarkTask(indexToMark - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" int indexToUnmark \u003d Integer.parseInt(inputs[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" return new UnMarkTask(indexToUnmark - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" int indexToDelete \u003d Integer.parseInt(inputs[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" return new DeleteTask(indexToDelete - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" case \"event\":","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" String parameter \u003d inputs[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":" return new AddTask(instruction, parameter);","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"c-wenlong"},"content":" case \"find\":","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":" String key \u003d inputs[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"c-wenlong"},"content":" return new FindTask(key);","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"c-wenlong"},"content":" default: // incorrect ins with incorrect params handled here","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"c-wenlong"},"content":" throw new InvalidCommandException(\"Invalid command: \" + instruction","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"c-wenlong"},"content":" + \"\\nPlease input the correct commands. Input help to see list of commands.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"c-wenlong"},"content":" } else { // for ins with no parameter","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"c-wenlong"},"content":" switch (instruction) {","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"c-wenlong"},"content":" case \"list\":","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"c-wenlong"},"content":" return new ListTask();","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"c-wenlong"},"content":" case \"help\":","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"c-wenlong"},"content":" return new Help();","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"c-wenlong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"c-wenlong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"c-wenlong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"c-wenlong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"c-wenlong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"c-wenlong"},"content":" case \"event\": // correct ins but no param handled","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"c-wenlong"},"content":" throw new InvalidInputException(\"Error: \" + \"Invalid parameters for \" + instruction);","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"c-wenlong"},"content":" default: // incorrect ins and no param handled here","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"c-wenlong"},"content":" throw new InvalidCommandException(\"Invalid command: \" + instruction","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"c-wenlong"},"content":" + \"\\nPlease input the correct commands. Input help to see list of commands.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":77}},{"path":"src/main/java/duke/KBot/TaskFileManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.kbot;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Event;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.ToDo;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" * TaskFileManager class that encapsulates the saving of data onto the local","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" * hard drive.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":"public class TaskFileManager {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" /** Filepath of where to save to local disk for TASKS */","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" private static final String FILEPATH \u003d \"src/main/java/duke/memory/output.txt\";","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" /** Storage format for date. */","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" private static final DateTimeFormatter STORAGEFORMAT \u003d DateTimeFormatter.ofPattern(\"d-M-yy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" * Constructor for TaskFileManager.","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" public TaskFileManager() {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" * Implementation to save tasks to file","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" * @param tasks Tasks to be saved to the local drive.","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" * @throws IOException Thrown when saving to file and file is not found.","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" public static void saveTasksToFile(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" FileWriter fw \u003d new FileWriter(FILEPATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" String taskToStore \u003d t.convertToStorageFormat();","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":" fw.write(taskToStore + \"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"c-wenlong"},"content":" * Implementation to load tasks from local drive.","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"c-wenlong"},"content":" * @throws FileNotFoundException Thrown when file cannot be found.","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"c-wenlong"},"content":" * @throws IOException Thrown when there is issue loading the file.","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"c-wenlong"},"content":" * @return Tasks which are saved in the local drive as an ArrayList\u003cTask\u003e.","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"c-wenlong"},"content":" public static ArrayList\u003cTask\u003e loadTasksFromFile() throws FileNotFoundException, IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"c-wenlong"},"content":" File file \u003d new File(FILEPATH); // create a File for the given file path","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"c-wenlong"},"content":" if (!file.exists()) { // Check if the file exists. If not, create a new file.","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"c-wenlong"},"content":" file.createNewFile();","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"c-wenlong"},"content":" Scanner sc \u003d new Scanner(file); // create a Scanner using the File as the source","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"c-wenlong"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"c-wenlong"},"content":" while (sc.hasNext()) { // TYPE | MARK | NAME \\ BY \\ FROM | TO","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"c-wenlong"},"content":" String[] taskSegments \u003d sc.nextLine().split(\" \\\\| \", 2);","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"c-wenlong"},"content":" String instruction \u003d taskSegments[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"c-wenlong"},"content":" String parameter \u003d taskSegments[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"c-wenlong"},"content":" tasks.add(loadTask(instruction, parameter));","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"c-wenlong"},"content":" sc.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"c-wenlong"},"content":" return tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"c-wenlong"},"content":" * Load the individual Task in the correct format using the instruction String","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"c-wenlong"},"content":" * and the information stored in the instruction. Helper function for","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"c-wenlong"},"content":" * loadTasksFromFile().","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"c-wenlong"},"content":" * @param ins String representing the different instructions.","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"c-wenlong"},"content":" * @param info String representing the information stored in the Task.","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"c-wenlong"},"content":" * @return Returns the Task that is loaded from the given instruction and info.","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"c-wenlong"},"content":" public static Task loadTask(String instruction, String parameter) {","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"c-wenlong"},"content":" Task t \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"c-wenlong"},"content":" switch (instruction) {","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"c-wenlong"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"c-wenlong"},"content":" String[] todoInput \u003d parameter.split(\" \\\\| \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":93,"author":{"gitId":"c-wenlong"},"content":" boolean todoIsCompleted \u003d (todoInput[0].trim() !\u003d \"\");","lastModifiedDate":"2024-02-02"},{"lineNumber":94,"author":{"gitId":"c-wenlong"},"content":" String tName \u003d todoInput[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":95,"author":{"gitId":"c-wenlong"},"content":" t \u003d new ToDo(tName, todoIsCompleted);","lastModifiedDate":"2024-02-02"},{"lineNumber":96,"author":{"gitId":"c-wenlong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"c-wenlong"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"c-wenlong"},"content":" String[] deadlineInputs \u003d parameter.split(\" \\\\| \", 3);","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"c-wenlong"},"content":" boolean deadlineIsCompleted \u003d (deadlineInputs[0].trim() !\u003d \"\");","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"c-wenlong"},"content":" String deadlineName \u003d deadlineInputs[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"c-wenlong"},"content":" String deadlineDate \u003d deadlineInputs[2];","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"c-wenlong"},"content":" LocalDate deadline \u003d LocalDate.parse(deadlineDate, STORAGEFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":104,"author":{"gitId":"c-wenlong"},"content":" t \u003d new Deadline(deadlineName, deadline, deadlineIsCompleted);","lastModifiedDate":"2024-02-02"},{"lineNumber":105,"author":{"gitId":"c-wenlong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"c-wenlong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"c-wenlong"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"c-wenlong"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"c-wenlong"},"content":" String[] eventInputs \u003d parameter.split(\" \\\\| \", 4);","lastModifiedDate":"2024-02-02"},{"lineNumber":111,"author":{"gitId":"c-wenlong"},"content":" boolean eventIsCompleted \u003d (eventInputs[0].trim() !\u003d \"\");","lastModifiedDate":"2024-02-02"},{"lineNumber":112,"author":{"gitId":"c-wenlong"},"content":" String eventName \u003d eventInputs[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":113,"author":{"gitId":"c-wenlong"},"content":" String eventFrom \u003d eventInputs[2];","lastModifiedDate":"2024-02-02"},{"lineNumber":114,"author":{"gitId":"c-wenlong"},"content":" String eventTo \u003d eventInputs[3];","lastModifiedDate":"2024-02-02"},{"lineNumber":115,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"c-wenlong"},"content":" LocalDate from \u003d LocalDate.parse(eventFrom, STORAGEFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":117,"author":{"gitId":"c-wenlong"},"content":" LocalDate to \u003d LocalDate.parse(eventTo, STORAGEFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":118,"author":{"gitId":"c-wenlong"},"content":" t \u003d new Event(eventName, from, to, eventIsCompleted);","lastModifiedDate":"2024-02-02"},{"lineNumber":119,"author":{"gitId":"c-wenlong"},"content":" } catch (DateTimeParseException f) {","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"c-wenlong"},"content":" System.out.println(f.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":121,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"c-wenlong"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"c-wenlong"},"content":" return t;","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"c-wenlong":126}},{"path":"src/main/java/duke/KBot/TaskManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.kbot;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" * Manages all communications between the bot simulation and the database of","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * Tasks. Inspired by ChatGPT, but I simply just created this class and","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * transferred all my original code over from KBot.java","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":"public class TaskManager {","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" /** ArrayList\u003cTask\u003e to store all the Tasks the user has created. */","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" private static ArrayList\u003cTask\u003e TASKS \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" public static ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" return TASKS;","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" * Checks if there is local save and load it into system if there exist.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" public static void loadLocalSavedTasks() {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" TASKS \u003d TaskFileManager.loadTasksFromFile();","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" System.err.println(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" System.out.println(\"Error while accessing the file: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" * Saves the data in the Tasks ArrayList onto a local file.","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" public static void saveToLocalStorage() {","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" TaskFileManager.saveTasksToFile(TASKS);","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" System.out.println(\"Error while accessing the file: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":48}},{"path":"src/main/java/duke/actions/AddTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.actions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"import duke.exceptions.InvalidInputException;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskFileManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Event;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.ToDo;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" * An add task command that adds a task onto the tasks array.","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":"public class AddTask extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" /** Instruction or type of command. */","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" private String instruction;","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" /** Input parameters to the command. */","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" private String parameter;","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" /** Output format for printing dates. */","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" private static final DateTimeFormatter PRINTFORMAT \u003d DateTimeFormatter.ofPattern(\"d-M-yy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" * Constructor for AddTask.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" * @param taskInstruction Takes in an instruction.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" * @param taskInfo Takes in instruction parameters.","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" public AddTask(String instruction, String parameter) {","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" this.instruction \u003d instruction;","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" this.parameter \u003d parameter;","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" * Executes the adding of a new Task to the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" * @throws IOException Exception for writing and loading from","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" * memory.","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" * @throws InvalidInputException Exception when input parameters are","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" * invalid.","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":" public String execute() throws IOException, InvalidInputException {","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"c-wenlong"},"content":" Task t \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"c-wenlong"},"content":" switch (instruction) {","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"c-wenlong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"c-wenlong"},"content":" t \u003d new ToDo(parameter);","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"c-wenlong"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"c-wenlong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"c-wenlong"},"content":" String[] deadlineParameter \u003d parameter.split(\" /by \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"c-wenlong"},"content":" if (deadlineParameter.length \u003d\u003d 1) { // if there is command but no input","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"c-wenlong"},"content":" throw new InvalidInputException(\"Invalid parameters for \" + instruction);","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"c-wenlong"},"content":" String deadlineName \u003d deadlineParameter[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"c-wenlong"},"content":" String deadlineEndDate \u003d deadlineParameter[1].trim();","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"c-wenlong"},"content":" LocalDate deadline \u003d LocalDate.parse(deadlineEndDate, PRINTFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"c-wenlong"},"content":" t \u003d new Deadline(deadlineName, deadline);","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"c-wenlong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"c-wenlong"},"content":" return (\"Error while parsing date: Format should be d-M-yy.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"c-wenlong"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"c-wenlong"},"content":" case \"event\":","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"c-wenlong"},"content":" String[] eventParameter \u003d parameter.split(\" /from \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"c-wenlong"},"content":" if (eventParameter.length \u003d\u003d 1) { // if there is command but no input","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"c-wenlong"},"content":" throw new InvalidInputException(\"Invalid parameters for \" + instruction);","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"c-wenlong"},"content":" String eventName \u003d eventParameter[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"c-wenlong"},"content":" String eventDates \u003d eventParameter[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"c-wenlong"},"content":" String[] dateParameters \u003d eventDates.split(\" /to \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"c-wenlong"},"content":" if (dateParameters.length \u003c 2) { // if there are less than 2 dates given","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"c-wenlong"},"content":" throw new InvalidInputException(\"Invalid parameters for \" + instruction);","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"c-wenlong"},"content":" String eventStartDate \u003d dateParameters[0].trim();","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"c-wenlong"},"content":" String eventEndDate \u003d dateParameters[1].trim();","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"c-wenlong"},"content":" LocalDate start \u003d LocalDate.parse(eventStartDate, PRINTFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"c-wenlong"},"content":" LocalDate end \u003d LocalDate.parse(eventEndDate, PRINTFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"c-wenlong"},"content":" t \u003d new Event(eventName, start, end);","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"c-wenlong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"c-wenlong"},"content":" return (\"Error while parsing date: Format should be d-M-yy.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"c-wenlong"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"c-wenlong"},"content":" if (t !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"c-wenlong"},"content":" TaskManager.getTasks().add(t);","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"c-wenlong"},"content":" TaskFileManager.saveTasksToFile(TaskManager.getTasks());","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"c-wenlong"},"content":" String response \u003d \"Got it. I\u0027ve added this task:\\n\" + t + \"\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"c-wenlong"},"content":" \"Now you have \" + TaskManager.getTasks().size() + \" tasks in the list.\";","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"c-wenlong"},"content":" return (response);","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"c-wenlong"},"content":" return \"\";","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":104}},{"path":"src/main/java/duke/actions/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.actions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.lang.IndexOutOfBoundsException;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"import duke.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import duke.exceptions.InvalidInputException;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" * A command abstract class is the parent of all types of commands.","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" /** Empty constructor */","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" public Command() {","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" * Executes the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" * @return String to show if the task has been ran successfully.","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" * @throws IOException Exception for writing and loading from","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" * memory.","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" * @throws IndexOutOfBoundsException Exception when the user mark/unmark/deletes","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" * off the array.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" * @throws InvalidInputException Exception when input parameters are","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" * invalid.","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" * @throws InvalidCommandException Exception when command is invalid.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" abstract public String execute()","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" throws IOException, IndexOutOfBoundsException, InvalidInputException, InvalidCommandException;","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":34}},{"path":"src/main/java/duke/actions/DeleteTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.actions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.lang.IndexOutOfBoundsException;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskFileManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * A delete command that deletes a Task from the task list,","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":"public class DeleteTask extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" /** Index where Task is removed. */","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" private int index;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" * Constructor for deleting the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" * @param index Index where Task is removed.","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" public DeleteTask(int index) {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" * Deletes an existing task.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" * @return String of whether there has been an error or a success.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" * @throws IndexOutOfBoundsException Throws the exception when the index to mark","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" * is out of range.","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" * @throws IOException When saving to file and the directory does","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" * not exist.","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" public String execute() throws IndexOutOfBoundsException, IOException {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" Task taskToDelete \u003d TaskManager.getTasks().remove(index); // may throw IndexOutOfBoundsException","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" TaskFileManager.saveTasksToFile(TaskManager.getTasks()); // may throw IOException","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" return (\"OK, I\u0027ve deleted this task:\\n\" + taskToDelete","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" + \"\\nNow you have \" + TaskManager.getTasks().size() + \" tasks in this list!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" return (e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" return (e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":50}},{"path":"src/main/java/duke/actions/FindTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.actions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" * An find key command that finds you tasks that contains the key.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":"public class FindTask extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" /** String key that stores what we will be searching for */","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" private String key;","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" * Constructor for FindTask.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" * @param key Key what we will be searching for.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" public FindTask(String key) {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" this.key \u003d key;","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" * Executes the finding of the class","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" * @return Returns the Tasks that contain the key.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" public String execute() {","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" ArrayList\u003cTask\u003e tasksFound \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" for (Task t : TaskManager.getTasks()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" if (t.find(key)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" tasksFound.add(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" StringBuilder response \u003d new StringBuilder();","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" response.append(\"Here are the matching tasks in your list:\\n\");","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" for (int i \u003d 0; i \u003c tasksFound.size(); i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" response.append((i + 1)).append(\". \").append(tasksFound.get(i)).append(\"\\n\");","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" return response.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"c-wenlong":47}},{"path":"src/main/java/duke/actions/Help.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.actions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":" * A help command that gives the user a list of all possible commands and how to","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":" * use them.","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"public class Help extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" /** String of all possible commands. */","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" private static final String HELP \u003d \"Active commands:x\\n\" +","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" \"\\nVIEW\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" \"list: lists all tasks saved.\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" \"help: lists all available commands.\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" \"\\nEDIT\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" \"mark \u003cindex\u003e: marks the task at index to be completed.\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" \"unmark \u003cindex\u003e: marks the task at index to be not completed.\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" \"delete \u003cindex\u003e: deletes task at index.\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" \"\\nADD TASK\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" \"todo \u003cname\u003e: adds a todo task with its name.\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" \"deadline \u003cname\u003e /by \u003cdate\u003e: adds a deadline task with name and date in d-M-yy format.\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" \"event \u003cname\u003e /from \u003cdate\u003e /to \u003cdate\u003e: adds an event task with name and date in d-M-yy format.\" +","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" \"find \u003ckey\u003e: lists all tasks matching given key\";","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" * Constructor for Help command.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" public Help() {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" /** Executes by returning all commands. */","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" public String execute() {","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" return HELP;","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":38}},{"path":"src/main/java/duke/actions/ListTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.actions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.lang.StringBuilder;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" * A list command that gives the user a list of all Tasks in the array.","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":"public class ListTask extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" * Constructor for ListTask.","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" public ListTask() {","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" * Prints the Task List, labels them with numbers","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" public String execute() {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" if (TaskManager.getTasks().size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" return (\"There are no tasks here. Please add a task!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" StringBuilder response \u003d new StringBuilder();","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" response.append(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" for (int i \u003d 0; i \u003c TaskManager.getTasks().size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" response.append((i + 1)).append(\". \").append(TaskManager.getTasks().get(i)).append(\"\\n\");","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" return response.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":36}},{"path":"src/main/java/duke/actions/MarkTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.actions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.lang.IndexOutOfBoundsException;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskFileManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * A mark command that marks a Task as completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":"public class MarkTask extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" /** Index where Task is marked as completed. */","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" private int index;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" * Constructor for MarkTask.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" * @param index Index where Task is marked.","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" public MarkTask(int index) {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" * Marks a Task as completed.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" * @return String of whether there has been an error or a success.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" * @throws IndexOutOfBoundsException Throws the exception when the index to mark","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" * is out of range.","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" * @throws IOException When saving to file and the directory does","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" * not exist.","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" public String execute() throws IndexOutOfBoundsException, IOException {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" Task taskToMark \u003d TaskManager.getTasks().get(index); // may throw IndexOutOfBoundsException","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" taskToMark.setCompleted();","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" TaskFileManager.saveTasksToFile(TaskManager.getTasks()); // may throw IOException","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" return (\"Nice! I\u0027ve marked this task as done:\\n\" + taskToMark);","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" return (e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" return (e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":50}},{"path":"src/main/java/duke/actions/UnMarkTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.actions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.lang.IndexOutOfBoundsException;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskFileManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * A unmark command that marks a Task as not completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":"public class UnMarkTask extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" /** Index where we mark Task as not complete. */","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" private int index;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" * Constructor for UnMarkTask.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" * @param index Index where we unmark the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" public UnMarkTask(int index) {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" * Marks a Task as not completed.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" * @return String of whether there has been an error or a success.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" * @throws IndexOutOfBoundsException Throws the exception when the index to mark","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" * is out of range.","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" * @throws IOException When saving to file and the directory does","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" * not exist.","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" public String execute() throws IndexOutOfBoundsException, IOException {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" Task taskToUnmark \u003d TaskManager.getTasks().get(index); // may throw IndexOutOfBoundsException","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" taskToUnmark.setNotCompleted();","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" TaskFileManager.saveTasksToFile(TaskManager.getTasks()); // may throw IOException","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" return (\"OK, I\u0027ve marked this task as not done yet:\\n\" + taskToUnmark);","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" return (e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" return (e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":50}},{"path":"src/main/java/duke/exceptions/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.exceptions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":" * Encapsulates exception where command is not valid.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"public class InvalidCommandException extends KException {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * Constructor for InvalidCommandException.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * @param message Prints out a message when exception is thrown.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" public InvalidCommandException(String message) {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" super(message);","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":18}},{"path":"src/main/java/duke/exceptions/InvalidInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.exceptions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":" * Encapsulates exception where parameters for the command is not valid.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"public class InvalidInputException extends KException {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * Constructor for InvalidInputException.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * @param message Prints the message when exception is thrown.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" public InvalidInputException(String message) {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" super(message);","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":18}},{"path":"src/main/java/duke/exceptions/KException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.exceptions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":" * Exception class for all errors or warning generated within the KBot program.","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"public class KException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * Constructor for KException.","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" * @param message The String message to be printed when an error is thrown.","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" public KException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"c-wenlong":19}},{"path":"src/main/java/duke/memory/output.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"T | | book return","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"c-wenlong":1}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" * A class that encapsulates the Deadlines tasks, a type of Task.","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" /** A String value that represent the type of Task, D for Deadline. */","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" private static final String TYPE \u003d \"D\";","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" /** Storage date format. */","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" private static final DateTimeFormatter STORAGEFORMAT \u003d DateTimeFormatter.ofPattern(\"d-M-yy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" /** Output date format. */","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" private static final DateTimeFormatter PRINTFORMAT \u003d DateTimeFormatter.ofPattern(\"MMM-d-yyyy\");","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" /** A LocalDataTime value that represents the date of deadline. */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" private LocalDate endDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" * Constructor for the ToDo.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" * @param name A String value that states the name of the Task.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" * @param endTime A LocalDate to state the date of deadline.","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" public Deadline(String name, LocalDate endDate) {","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" super(name, TYPE, false);","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" * Constuctor used when we are loading from storage.","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" * @param name A String value that states the name of the Task.","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" * @param endDate LocalDate of when the deadline is.","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" * @param completed Boolean of whether Task is completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" public Deadline(String name, LocalDate endDate, boolean IsCompleted) {","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" super(name, TYPE, IsCompleted);","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" * Searches for a key in name.","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"c-wenlong"},"content":" * @param key String to find in the name.","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":" * @return Boolean if key is found or not.","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"c-wenlong"},"content":" public boolean find(String key) {","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"c-wenlong"},"content":" return super.find(key);","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"c-wenlong"},"content":" * Converts the data (Deadline) here into a format to be stored in the file.","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"c-wenlong"},"content":" * @return String representation of the Deadline to be store in local disk.","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"c-wenlong"},"content":" public String convertToStorageFormat() {","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"c-wenlong"},"content":" return super.convertToStorageFormat() + \" | \" + this.endDate.format(STORAGEFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"c-wenlong"},"content":" * String representation of a Deadline.","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"c-wenlong"},"content":" * @return Returns the String representation of a Deadline.","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"c-wenlong"},"content":" public String toString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"c-wenlong"},"content":" // [T][X] name (by: time)","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"c-wenlong"},"content":" String formattedDeadline \u003d this.endDate.format(PRINTFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"c-wenlong"},"content":" return super.toString() + \" (by: \" + formattedDeadline + \")\"; // [T][X] name (by: time)","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":79}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" * A class that encapsulates the ToDo tasks, a type of Task.","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" /** A String value that represent the type of Task, Efor Event. */","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" private static final String TYPE \u003d \"E\";","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" /** A LocalDate value that represents the date of the start of event. */","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" private LocalDate startDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" /** A LocalDate value that represents the date of the end of event. */","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" private LocalDate endDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" private static final DateTimeFormatter STORAGEFORMAT \u003d DateTimeFormatter.ofPattern(\"d-M-yy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" private static final DateTimeFormatter PRINTFORMAT \u003d DateTimeFormatter.ofPattern(\"MMM-d-yyyy\");","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" * Constructor for the Event.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" * @param name A String value that states the name of the Task.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" * @param startDate A LocalDate representation of the start of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" * @param endDate A LocalDate representation of the end of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" public Event(String name, LocalDate startDate, LocalDate endDate) {","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" super(name, TYPE, false);","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" * Constuctor used when we are loading from storage.","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" * @param name A String value that states the name of the Task.","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" * @param startDate A LocalDateTime to state the start of event.","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" * @param endDate A LocalDateTime to state the end of event.","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" * @param isCompleted Boolean of whether Task is completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" public Event(String name, LocalDate startDate, LocalDate endDate, boolean isCompleted) {","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" super(name, TYPE, isCompleted);","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"c-wenlong"},"content":" * Searches for a key in name.","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"c-wenlong"},"content":" * @param key String to find in the name.","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"c-wenlong"},"content":" * @return Boolean if key is found or not.","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"c-wenlong"},"content":" public boolean find(String key) {","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"c-wenlong"},"content":" return super.find(key);","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"c-wenlong"},"content":" * Converts the data (Event) here into a format to be stored in the file.","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"c-wenlong"},"content":" * @return String representation of the Event to be store in local disk.","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"c-wenlong"},"content":" public String convertToStorageFormat() {","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"c-wenlong"},"content":" return super.convertToStorageFormat() + \" | \" + this.startDate.format(STORAGEFORMAT) + \" | \"","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"c-wenlong"},"content":" + this.endDate.format(STORAGEFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"c-wenlong"},"content":" * String representation of an Event.","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"c-wenlong"},"content":" * @return Returns the String representation of an Event.","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"c-wenlong"},"content":" public String toString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"c-wenlong"},"content":" // [T][X] name (from: startTime to: endTime)","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"c-wenlong"},"content":" return super.toString() + \" (from: \" + this.startDate.format(PRINTFORMAT) + \" to: \"","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"c-wenlong"},"content":" + this.endDate.format(PRINTFORMAT) + \")\";","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":84}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":" * Encapsulate a Task with a name and status of boolean to represent whether it","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":" * has been completed.","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" /** A String value that states the name of the Task. */","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" private String name;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" /** A String value that represent the type of Task. */","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" private String type;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" /** A boolean value that states whether the Task has been completed or not. */","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" private boolean isCompleted;","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" * Constructor for the Task.","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" * @param name A String value that states the name of the Task.","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" public Task(String name, String type, boolean isCompleted) {","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" * Sets the status of completed to true.","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" public void setCompleted() {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" this.isCompleted \u003d true;","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" * Sets the status of completed to false.","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" public void setNotCompleted() {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" * Searches for a key in name.","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" * @param key String to find in the name.","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" * @return Boolean if key is found or not.","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"c-wenlong"},"content":" public boolean find(String key) {","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":" String[] words \u003d this.name.split(\" \");","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"c-wenlong"},"content":" for (String s : words) {","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"c-wenlong"},"content":" if (s.equals(key)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"c-wenlong"},"content":" return true;","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"c-wenlong"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"c-wenlong"},"content":" * Converts the data here into a format to be stored in the file.","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"c-wenlong"},"content":" * @return String representation of the Task to be store in local disk.","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"c-wenlong"},"content":" public String convertToStorageFormat() {","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"c-wenlong"},"content":" String mark \u003d isCompleted ? \"X\" : \" \";","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"c-wenlong"},"content":" return this.type + \" | \" + mark + \" | \" + this.name;","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"c-wenlong"},"content":" * String representation of a Task.","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"c-wenlong"},"content":" * @return Returns the String representation of a Task.","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"c-wenlong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"c-wenlong"},"content":" String mark \u003d isCompleted ? \"X\" : \" \";","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"c-wenlong"},"content":" return \"[\" + this.type + \"]\" + \"[\" + mark + \"]\" + \" \" + this.name;","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"c-wenlong":81}},{"path":"src/main/java/duke/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":" * A class that encapsulates the ToDo tasks, a type of Task.","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" /** A String value that represent the type of Task, in this case T for ToDo */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" private static final String TYPE \u003d \"T\";","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" * Constructor for the ToDo.","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" * @param name A String value that states the name of the Task.","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" super(name, TYPE, false);","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" * Constuctor used when we are loading from storage.","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" * @param name A String value that states the name of the Task.","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" * @param completed Boolean of whether Task is completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" public ToDo(String name, boolean isCompleted) {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" super(name, TYPE, isCompleted);","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" * Searches for a key in name.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" * @param key String to find in the name.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" * @return Boolean if key is found or not.","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" public boolean find(String key) {","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" return super.find(key);","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" * Converts the data (ToDo) here into a format to be stored in the file.","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" * @return String representation of the ToDo to be store in local disk.","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" public String convertToStorageFormat() {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" return super.convertToStorageFormat();","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"c-wenlong"},"content":" * String representation of a ToDo.","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"c-wenlong"},"content":" * @return Returns the String representation of a ToDo.","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"c-wenlong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"c-wenlong"},"content":" return super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"c-wenlong":61}},{"path":"src/main/java/duke/test.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.time.*;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"public class test {","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" timetest();","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" public static void timetest() {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" DateTimeFormatter DATEFORMAT \u003d DateTimeFormatter.ofPattern(\"d-M-yy\");","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" String s \u003d \"1-2-24\";","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" LocalDate l \u003d LocalDate.parse(s, DATEFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" String a \u003d l.format(DateTimeFormatter.ofPattern(\"MMM-d-yy\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" System.out.println(l);","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" System.out.println(a);","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"c-wenlong":19}},{"path":"src/main/java/duke/ui_design/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.ui_design;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":" * Manages all messages that should be printed as the UI component.","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"public class Ui {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" /** A String to separate user input and system output. */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" private static final String LINE \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" /** A String to print when program starts running. */","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" private static final String START \u003d \"Hey, nice to meet you! I am your personal chatbot:\\n\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" + \" /\u0027 _/ /\u0027 \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" + \" /\u0027 _/~ /\u0027 \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" + \" ,/\u0027_/~ ____ O ____ /\u0027__ ____ ____ ____ \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" + \" /\\\\/~ /\u0027 ) /\u0027 /\u0027 )--/\u0027 / /\u0027 ) /\u0027 ) )\u0027 )--/\u0027 )\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" + \" /\u0027 \\\\ /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" + \"/\u0027 \\\\(___,/(__(__/(___,/\u0027 (___,/(__(___,/(__(___,/(__/\u0027 (___,/(__ \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" + \" /\u0027 /\u0027 \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" + \" /\u0027 / /\u0027 \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" + \" /\u0027 (___,/\u0027 \\n\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" + \"What can I do for you today? :)\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" /** A String to print when program stops running. */","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" private static final String END \u003d \"See you later alligator!\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" /** ASCII art of a wolf */","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" private static final String WOLF \u003d \" ..:::::..\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" \" .:::::::::::.\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" \" :::::::::::::::\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" \" :::::::::::::::::\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" \" :::::::_/|:::::::\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" \" ::::\u003d/_/:::::::\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" \" `:_/ |::::::\u0027\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" \" ( / ,|:::\u0027\u0027\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" \" \\\\_/^\\\\/||__\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" \" _/~ `\\\"\\\"~`\\\"` \\\\_\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" \" __/ -\u0027/ `-._ `\\\\_\\\\__\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" \" /-\u0027` /-\u0027` `\\\\ \\\\ \\\\-.\\\\\";","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" /** ASCII art of a garden */","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" private static final String FLOWERS \u003d \" _(_)_ wWWWw _\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" \" @@@@ (_)@(_) vVVVv _ @@@@ (___) _(_)_\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" \" @@()@@ wWWWw (_)\\\\ (___) _(_)_ @@()@@ Y (_)@(_)\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" \" @@@@ (___) `|/ Y (_)@(_) @@@@ \\\\|/ (_)\\\\\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" \" / Y \\\\| \\\\|/ /(_) \\\\| |/ |\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" \" \\\\ | \\\\ |/ | /\\\\ | / \\\\|/ |/ \\\\| \\\\|/\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":" \" \\\\\\\\\\\\|/// \\\\\\\\|/// \\\\\\\\\\\\\\\\|//\\\\\\\\|///\\\\|/// \\\\\\\\\\\\|// \\\\\\\\|// \\\\\\\\\\\\|///\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"c-wenlong"},"content":" \" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n\";","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"c-wenlong"},"content":" * Constructor for messages","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"c-wenlong"},"content":" public Ui() {","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"c-wenlong"},"content":" * Get welcome message.","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"c-wenlong"},"content":" * @return Welcome message.","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"c-wenlong"},"content":" public String getStartMessage() {","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"c-wenlong"},"content":" return START;","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"c-wenlong"},"content":" * Get end of program message.","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"c-wenlong"},"content":" * @return End of program message.","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"c-wenlong"},"content":" public String getEndMessage() {","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"c-wenlong"},"content":" return END;","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"c-wenlong"},"content":" * A line to separate user inputs and system outputs.","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"c-wenlong"},"content":" * @return A line.","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"c-wenlong"},"content":" public String getLine() {","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"c-wenlong"},"content":" return LINE;","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"c-wenlong"},"content":" * Design of a wolf.","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"c-wenlong"},"content":" * @return A wolf.","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"c-wenlong"},"content":" public String getWolf() {","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"c-wenlong"},"content":" return WOLF;","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"c-wenlong"},"content":" * Design of a flower garden.","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"c-wenlong"},"content":" * @return A flower garden.s","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"c-wenlong"},"content":" public String getFlower() {","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"c-wenlong"},"content":" return FLOWERS;","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"c-wenlong":103}},{"path":"src/test/java/duke/tasks/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" * Encapsulate the test for Deadline class.","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" public void Deadline_toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" assertEquals(\"[D][ ] assignment (by: Jan-28-2024)\",","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" new Deadline(\"assignment\", LocalDate.of(2024, 1, 28)).toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" public void Deadline_toStorageFormat() {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" assertEquals(\"D | | assignment | 28-1-24\",","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" new Deadline(\"assignment\", LocalDate.of(2024, 1, 28)).convertToStorageFormat());","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"c-wenlong":27}},{"path":"src/test/java/duke/tasks/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" * Encapsulate the test for Event class.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":"public class EventTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" public void Event_toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" assertEquals(\"[E][ ] open house (from: Jan-28-2024 to: Jan-30-2024)\",","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" new Event(\"open house\", LocalDate.of(2024, 1, 28), LocalDate.of(2024, 1, 30)).toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" public void Event_toStorageFormat() {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" assertEquals(\"E | | open house | 28-1-24 | 30-1-24\",","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" new Event(\"open house\", LocalDate.of(2024, 1, 28), LocalDate.of(2024, 1, 30)).convertToStorageFormat());","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"c-wenlong":26}},{"path":"src/test/java/duke/tasks/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" * Encapsulate the test for Task class.","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":"public class TaskTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" public void Task_toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" assertEquals(\"[T][X] homework\", new Task(\"homework\", \"T\", true).toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" public void Task_toStorageFormat() {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" assertEquals(\"T | X | homework\", new Task(\"homework\", \"T\", true).convertToStorageFormat());","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"c-wenlong":23}},{"path":"src/test/java/duke/tasks/ToDoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":" * Encapsulate the test for ToDo class.","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":"public class ToDoTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" public void ToDo_toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" assertEquals(\"[T][X] homework\", new ToDo(\"homework\", true).toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" public void ToDo_toStorageFormat() {","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" assertEquals(\"T | X | homework\", new ToDo(\"homework\", true).convertToStorageFormat());","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"c-wenlong":21}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"todo homework","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"deadline more homework /by tomorrow","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"event hackathon /from today /to tomorrow","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"todo finish coding for hackathon","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"mark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"unmark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"c-wenlong":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":"c-wenlong"},"content":"# run this file at its working directory such that the relative path is sustained.","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" echo \"/bin created!\"","lastModifiedDate":"2024-01-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":"c-wenlong"},"content":" echo \"Text generated!\"","lastModifiedDate":"2024-01-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":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":"java -classpath ../bin KBot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"# compare the output to the expected output","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"}],"authorContributionMap":{"c-wenlong":4,"-":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":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" mainClass.set(\"duke.KBot.Main\")","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"c-wenlong":17,"-":41}},{"path":"src/main/java/duke/KBot/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.kbot;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" /** What is to be printed on the dialogue box. */","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" private Label text;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" /** What is to be the display picture. */","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" * Constructor for a dialogue box.","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" * @param label Label of what the dialogue box will say.","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" * @param imageView Image of the user/chatbot.","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" public DialogBox(Label label, ImageView imageView) {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" text \u003d label;","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" displayPicture \u003d imageView;","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" text.setWrapText(true);","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" displayPicture.setFitWidth(75.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" displayPicture.setFitHeight(100.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" this.setAlignment(Pos.TOP_RIGHT);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" this.getChildren().addAll(text, displayPicture);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" * right.","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" private void flip() {","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" this.setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" FXCollections.reverse(tmp);","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" this.getChildren().setAll(tmp);","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" * Makes a dialogue box for the user.","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" * @param label Label containing what user will say.","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" * @param imageView Image of the user.","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":" * @return The dialogue box of the user.","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":" public static DialogBox getUserDialog(Label label, ImageView imageView) {","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"c-wenlong"},"content":" return new DialogBox(label, imageView);","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"c-wenlong"},"content":" * Flips the dialogue box and return the chatbot output.","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"c-wenlong"},"content":" * @param label Label containing what chatbot will say.","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"c-wenlong"},"content":" * @param imageView Image of the chatbot.","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"c-wenlong"},"content":" * @return The dialogue box of the chatbot.","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"c-wenlong"},"content":" public static DialogBox getDukeDialog(Label label, ImageView imageView) {","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"c-wenlong"},"content":" var dialogueBox \u003d new DialogBox(label, imageView);","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"c-wenlong"},"content":" dialogueBox.flip();","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"c-wenlong"},"content":" return dialogueBox;","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"c-wenlong":69}},{"path":"src/main/java/duke/KBot/KBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.kbot;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import duke.actions.Command;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import duke.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import duke.exceptions.InvalidInputException;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" * Encapsulate a chatbot names kaipybara that takes in input from the user and","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * perform tasks such as creating a todo list.","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":"public class KBot {","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" * Empty constructor for JavaFX. JavaFX creates the Application instance by","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" * calling the no-argument constructor.","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" public KBot() {","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" * Simulate what goes on in the chatbot.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" public static String simulate(String userInput) {","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" while (true) {","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" if (userInput.equals(\"bye\")) { // stops the program","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" return \"\";","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" Command c \u003d Parser.parse(userInput);","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" return c.execute();","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" return (\"Error: \" + e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" return (\"Error: \" + e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" } catch (InvalidInputException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" return (\"Error: \" + e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" } catch (InvalidCommandException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" return (\"Error: \" + e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":47}},{"path":"src/main/java/duke/KBot/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.kbot;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":" * Entry point to the program JavaFx.","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"public class Launcher {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" TaskManager.loadLocalSavedTasks(); // checking if there are local files to load","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"c-wenlong":13}},{"path":"src/main/java/duke/KBot/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.kbot;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import javafx.application.Platform;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":"import javafx.scene.text.Font;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":"import javafx.scene.text.FontWeight;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" * Main class where we enter the program.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" /** Image used to represent user. */","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" private Image user \u003d new Image(this.getClass().getResourceAsStream(\"/images/aaron.jpg\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" /** Image used to represent chatbot. */","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" private Image duke \u003d new Image(this.getClass().getResourceAsStream(\"/images/halim.png\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" /** Text input by user. */","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" private TextField userInput; // Declare userInput as an instance variable","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" /** Contains the dialogue between the user and chatbot. */","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" private VBox dialogContainer; // Declare dialogContainer as an instance variable","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" * Starts the JavaFx and launches the GUI.","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" * @param stage Main container of all the nodes of graphical components.","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" * @throws Exception Exceptions thrown when setting up the JavaFx program.","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" public void start(Stage stage) throws Exception {","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" // set up main diaplay","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" ScrollPane scrollPane \u003d new ScrollPane();","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" dialogContainer \u003d new VBox();","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"c-wenlong"},"content":" // Anchoring the main layout","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":" scrollPane.setContent(dialogContainer);","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"c-wenlong"},"content":" userInput \u003d new TextField();","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"c-wenlong"},"content":" Button sendButton \u003d new Button(\"Send\");","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"c-wenlong"},"content":" Button closeButton \u003d new Button(\"Close\");","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"c-wenlong"},"content":" AnchorPane mainLayout \u003d new AnchorPane();","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"c-wenlong"},"content":" mainLayout.getChildren().addAll(scrollPane, userInput, sendButton, closeButton);","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"c-wenlong"},"content":" Scene scene \u003d new Scene(mainLayout);","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"c-wenlong"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"c-wenlong"},"content":" stage.show();","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"c-wenlong"},"content":" // Formatting the window","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"c-wenlong"},"content":" stage.setTitle(\"Kaipybara Bot\");","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"c-wenlong"},"content":" stage.setResizable(false);","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"c-wenlong"},"content":" stage.setMinHeight(600.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"c-wenlong"},"content":" stage.setMinWidth(400.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"c-wenlong"},"content":" mainLayout.setPrefSize(400.0, 600.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"c-wenlong"},"content":" scrollPane.setPrefSize(385, 535);","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"c-wenlong"},"content":" scrollPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"c-wenlong"},"content":" scrollPane.setVbarPolicy(ScrollPane.ScrollBarPolicy.ALWAYS);","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"c-wenlong"},"content":" scrollPane.setVvalue(1.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"c-wenlong"},"content":" scrollPane.setFitToWidth(true);","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"c-wenlong"},"content":" dialogContainer.setPrefHeight(Region.USE_COMPUTED_SIZE);","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"c-wenlong"},"content":" userInput.setPrefWidth(280.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"c-wenlong"},"content":" sendButton.setPrefWidth(55.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"c-wenlong"},"content":" closeButton.setPrefWidth(55.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"c-wenlong"},"content":" AnchorPane.setTopAnchor(scrollPane, 1.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"c-wenlong"},"content":" AnchorPane.setBottomAnchor(sendButton, 1.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"c-wenlong"},"content":" AnchorPane.setRightAnchor(sendButton, 60.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"c-wenlong"},"content":" AnchorPane.setBottomAnchor(closeButton, 1.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"c-wenlong"},"content":" AnchorPane.setRightAnchor(closeButton, 1.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"c-wenlong"},"content":" AnchorPane.setLeftAnchor(userInput, 1.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"c-wenlong"},"content":" AnchorPane.setBottomAnchor(userInput, 1.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"c-wenlong"},"content":" // Add functionality to the buttons","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"c-wenlong"},"content":" sendButton.setOnMouseClicked((event) -\u003e {","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"c-wenlong"},"content":" handleUserInput();","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"c-wenlong"},"content":" });","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"c-wenlong"},"content":" userInput.setOnAction((event) -\u003e {","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"c-wenlong"},"content":" handleUserInput();","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"c-wenlong"},"content":" });","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"c-wenlong"},"content":" closeButton.setOnAction((event) -\u003e {","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"c-wenlong"},"content":" Platform.exit(); // Close the JavaFX application","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"c-wenlong"},"content":" });","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"c-wenlong"},"content":" // Scroll down to the end every time dialogContainer\u0027s height changes.","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"c-wenlong"},"content":" dialogContainer.heightProperty().addListener((observable) -\u003e scrollPane.setVvalue(1.0));","lastModifiedDate":"2024-02-06"},{"lineNumber":106,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":107,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"c-wenlong"},"content":" * Creates two dialog boxes, one echoing user input and the other containing","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"c-wenlong"},"content":" * Duke\u0027s reply and then appends them to","lastModifiedDate":"2024-02-06"},{"lineNumber":111,"author":{"gitId":"c-wenlong"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":113,"author":{"gitId":"c-wenlong"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"c-wenlong"},"content":" if (userInput.getText().equals(\"\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"c-wenlong"},"content":" Platform.exit(); // alternative method to exit besides the Close button","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"c-wenlong"},"content":" Label userText \u003d new Label(userInput.getText());","lastModifiedDate":"2024-02-06"},{"lineNumber":118,"author":{"gitId":"c-wenlong"},"content":" Label dukeText \u003d new Label(getResponse(userInput.getText()));","lastModifiedDate":"2024-02-06"},{"lineNumber":119,"author":{"gitId":"c-wenlong"},"content":" userText.setFont(Font.font(\"Verdana\", FontWeight.NORMAL, 8)); // Set font type and size","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"c-wenlong"},"content":" dukeText.setFont(Font.font(\"Verdana\", FontWeight.NORMAL, 8)); // Set font type and size","lastModifiedDate":"2024-02-06"},{"lineNumber":121,"author":{"gitId":"c-wenlong"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-06"},{"lineNumber":122,"author":{"gitId":"c-wenlong"},"content":" DialogBox.getUserDialog(userText, new ImageView(user)),","lastModifiedDate":"2024-02-06"},{"lineNumber":123,"author":{"gitId":"c-wenlong"},"content":" DialogBox.getDukeDialog(dukeText, new ImageView(duke)));","lastModifiedDate":"2024-02-06"},{"lineNumber":124,"author":{"gitId":"c-wenlong"},"content":" userInput.clear();","lastModifiedDate":"2024-02-06"},{"lineNumber":125,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":127,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":128,"author":{"gitId":"c-wenlong"},"content":" * You should have your own function to generate a response to user input.","lastModifiedDate":"2024-02-06"},{"lineNumber":129,"author":{"gitId":"c-wenlong"},"content":" * Replace this stub with your completed method.","lastModifiedDate":"2024-02-06"},{"lineNumber":130,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":131,"author":{"gitId":"c-wenlong"},"content":" private String getResponse(String input) {","lastModifiedDate":"2024-02-06"},{"lineNumber":132,"author":{"gitId":"c-wenlong"},"content":" return KBot.simulate(input);","lastModifiedDate":"2024-02-06"},{"lineNumber":133,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":134,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":135,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":135}},{"path":"src/main/java/duke/KBot/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.kbot;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import duke.actions.AddTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import duke.actions.Command;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import duke.actions.DeleteTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"import duke.actions.FindTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import duke.actions.Help;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"import duke.actions.ListTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"import duke.actions.MarkTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"import duke.actions.UnMarkTask;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":"import duke.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":"import duke.exceptions.InvalidInputException;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" * Parse through the commands to return a specific command class.","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":"public class Parser {","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" * Execute whatever command thrown at the bot by the user","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" * @param userInput String representing command to the bot.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" * @throws InvalidCommandException Exceptions thrown when the command is not","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" * valid.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" * @throws InvalidInputException Exception thrown when command parameters are","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" * not valid.","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" * @return Returns a Command to be executed.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" public static Command parse(String userInput) throws InvalidCommandException, InvalidInputException {","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" String[] inputs \u003d userInput.trim().split(\" \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" String instruction \u003d inputs[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" if (inputs.length \u003e 1) { // for ins with parameter","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" switch (instruction) { // correct ins but wrong params handled by each method call","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" int indexToMark \u003d Integer.parseInt(inputs[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" return new MarkTask(indexToMark - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" int indexToUnmark \u003d Integer.parseInt(inputs[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" return new UnMarkTask(indexToUnmark - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" int indexToDelete \u003d Integer.parseInt(inputs[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" return new DeleteTask(indexToDelete - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" case \"event\":","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" String parameter \u003d inputs[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":" return new AddTask(instruction, parameter);","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"c-wenlong"},"content":" case \"find\":","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":" String key \u003d inputs[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"c-wenlong"},"content":" return new FindTask(key);","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"c-wenlong"},"content":" default: // incorrect ins with incorrect params handled here","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"c-wenlong"},"content":" throw new InvalidCommandException(\"Invalid command: \" + instruction","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"c-wenlong"},"content":" + \"\\nPlease input the correct commands. Input help to see list of commands.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"c-wenlong"},"content":" } else { // for ins with no parameter","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"c-wenlong"},"content":" switch (instruction) {","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"c-wenlong"},"content":" case \"list\":","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"c-wenlong"},"content":" return new ListTask();","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"c-wenlong"},"content":" case \"help\":","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"c-wenlong"},"content":" return new Help();","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"c-wenlong"},"content":" case \"mark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"c-wenlong"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"c-wenlong"},"content":" case \"delete\":","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"c-wenlong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"c-wenlong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"c-wenlong"},"content":" case \"event\": // correct ins but no param handled","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"c-wenlong"},"content":" throw new InvalidInputException(\"Error: \" + \"Invalid parameters for \" + instruction);","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"c-wenlong"},"content":" default: // incorrect ins and no param handled here","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"c-wenlong"},"content":" throw new InvalidCommandException(\"Invalid command: \" + instruction","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"c-wenlong"},"content":" + \"\\nPlease input the correct commands. Input help to see list of commands.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":77}},{"path":"src/main/java/duke/KBot/TaskFileManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.kbot;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Event;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.ToDo;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" * TaskFileManager class that encapsulates the saving of data onto the local","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" * hard drive.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":"public class TaskFileManager {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" /** Filepath of where to save to local disk for TASKS */","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" private static final String FILEPATH \u003d \"src/main/java/duke/memory/output.txt\";","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" /** Storage format for date. */","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" private static final DateTimeFormatter STORAGEFORMAT \u003d DateTimeFormatter.ofPattern(\"d-M-yy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" * Constructor for TaskFileManager.","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" public TaskFileManager() {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" * Implementation to save tasks to file","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" * @param tasks Tasks to be saved to the local drive.","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" * @throws IOException Thrown when saving to file and file is not found.","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" public static void saveTasksToFile(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" FileWriter fw \u003d new FileWriter(FILEPATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" String taskToStore \u003d t.convertToStorageFormat();","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":" fw.write(taskToStore + \"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"c-wenlong"},"content":" * Implementation to load tasks from local drive.","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"c-wenlong"},"content":" * @throws FileNotFoundException Thrown when file cannot be found.","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"c-wenlong"},"content":" * @throws IOException Thrown when there is issue loading the file.","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"c-wenlong"},"content":" * @return Tasks which are saved in the local drive as an ArrayList\u003cTask\u003e.","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"c-wenlong"},"content":" public static ArrayList\u003cTask\u003e loadTasksFromFile() throws FileNotFoundException, IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"c-wenlong"},"content":" File file \u003d new File(FILEPATH); // create a File for the given file path","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"c-wenlong"},"content":" if (!file.exists()) { // Check if the file exists. If not, create a new file.","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"c-wenlong"},"content":" file.createNewFile();","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"c-wenlong"},"content":" Scanner sc \u003d new Scanner(file); // create a Scanner using the File as the source","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"c-wenlong"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"c-wenlong"},"content":" while (sc.hasNext()) { // TYPE | MARK | NAME \\ BY \\ FROM | TO","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"c-wenlong"},"content":" String[] taskSegments \u003d sc.nextLine().split(\" \\\\| \", 2);","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"c-wenlong"},"content":" String instruction \u003d taskSegments[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"c-wenlong"},"content":" String parameter \u003d taskSegments[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"c-wenlong"},"content":" tasks.add(loadTask(instruction, parameter));","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"c-wenlong"},"content":" sc.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"c-wenlong"},"content":" return tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"c-wenlong"},"content":" * Load the individual Task in the correct format using the instruction String","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"c-wenlong"},"content":" * and the information stored in the instruction. Helper function for","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"c-wenlong"},"content":" * loadTasksFromFile().","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"c-wenlong"},"content":" * @param ins String representing the different instructions.","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"c-wenlong"},"content":" * @param info String representing the information stored in the Task.","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"c-wenlong"},"content":" * @return Returns the Task that is loaded from the given instruction and info.","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"c-wenlong"},"content":" public static Task loadTask(String instruction, String parameter) {","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"c-wenlong"},"content":" Task t \u003d null;","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"c-wenlong"},"content":" switch (instruction) {","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"c-wenlong"},"content":" case \"T\":","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"c-wenlong"},"content":" String[] todoInput \u003d parameter.split(\" \\\\| \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":93,"author":{"gitId":"c-wenlong"},"content":" boolean todoIsCompleted \u003d (todoInput[0].trim() !\u003d \"\");","lastModifiedDate":"2024-02-02"},{"lineNumber":94,"author":{"gitId":"c-wenlong"},"content":" String tName \u003d todoInput[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":95,"author":{"gitId":"c-wenlong"},"content":" t \u003d new ToDo(tName, todoIsCompleted);","lastModifiedDate":"2024-02-02"},{"lineNumber":96,"author":{"gitId":"c-wenlong"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"c-wenlong"},"content":" case \"D\":","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"c-wenlong"},"content":" String[] deadlineInputs \u003d parameter.split(\" \\\\| \", 3);","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"c-wenlong"},"content":" boolean deadlineIsCompleted \u003d (deadlineInputs[0].trim() !\u003d \"\");","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"c-wenlong"},"content":" String deadlineName \u003d deadlineInputs[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"c-wenlong"},"content":" String deadlineDate \u003d deadlineInputs[2];","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"c-wenlong"},"content":" LocalDate deadline \u003d LocalDate.parse(deadlineDate, STORAGEFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":104,"author":{"gitId":"c-wenlong"},"content":" t \u003d new Deadline(deadlineName, deadline, deadlineIsCompleted);","lastModifiedDate":"2024-02-02"},{"lineNumber":105,"author":{"gitId":"c-wenlong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"c-wenlong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"c-wenlong"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"c-wenlong"},"content":" case \"E\":","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"c-wenlong"},"content":" String[] eventInputs \u003d parameter.split(\" \\\\| \", 4);","lastModifiedDate":"2024-02-02"},{"lineNumber":111,"author":{"gitId":"c-wenlong"},"content":" boolean eventIsCompleted \u003d (eventInputs[0].trim() !\u003d \"\");","lastModifiedDate":"2024-02-02"},{"lineNumber":112,"author":{"gitId":"c-wenlong"},"content":" String eventName \u003d eventInputs[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":113,"author":{"gitId":"c-wenlong"},"content":" String eventFrom \u003d eventInputs[2];","lastModifiedDate":"2024-02-02"},{"lineNumber":114,"author":{"gitId":"c-wenlong"},"content":" String eventTo \u003d eventInputs[3];","lastModifiedDate":"2024-02-02"},{"lineNumber":115,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"c-wenlong"},"content":" LocalDate from \u003d LocalDate.parse(eventFrom, STORAGEFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":117,"author":{"gitId":"c-wenlong"},"content":" LocalDate to \u003d LocalDate.parse(eventTo, STORAGEFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":118,"author":{"gitId":"c-wenlong"},"content":" t \u003d new Event(eventName, from, to, eventIsCompleted);","lastModifiedDate":"2024-02-02"},{"lineNumber":119,"author":{"gitId":"c-wenlong"},"content":" } catch (DateTimeParseException f) {","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"c-wenlong"},"content":" System.out.println(f.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":121,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"c-wenlong"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"c-wenlong"},"content":" return t;","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"c-wenlong":126}},{"path":"src/main/java/duke/KBot/TaskManager.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.kbot;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" * Manages all communications between the bot simulation and the database of","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * Tasks. Inspired by ChatGPT, but I simply just created this class and","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * transferred all my original code over from KBot.java","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":"public class TaskManager {","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" /** ArrayList\u003cTask\u003e to store all the Tasks the user has created. */","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" private static ArrayList\u003cTask\u003e TASKS \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" public static ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" return TASKS;","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" * Checks if there is local save and load it into system if there exist.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" public static void loadLocalSavedTasks() {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" TASKS \u003d TaskFileManager.loadTasksFromFile();","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" System.err.println(\"File not found: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" System.out.println(\"Error while accessing the file: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" * Saves the data in the Tasks ArrayList onto a local file.","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" public static void saveToLocalStorage() {","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" TaskFileManager.saveTasksToFile(TASKS);","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" System.out.println(\"Error while accessing the file: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":48}},{"path":"src/main/java/duke/actions/AddTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.actions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"import duke.exceptions.InvalidInputException;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskFileManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Event;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.ToDo;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" * An add task command that adds a task onto the tasks array.","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":"public class AddTask extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" /** Instruction or type of command. */","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" private String instruction;","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" /** Input parameters to the command. */","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" private String parameter;","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" /** Output format for printing dates. */","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" private static final DateTimeFormatter PRINTFORMAT \u003d DateTimeFormatter.ofPattern(\"d-M-yy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" * Constructor for AddTask.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" * @param taskInstruction Takes in an instruction.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" * @param taskInfo Takes in instruction parameters.","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" public AddTask(String instruction, String parameter) {","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" this.instruction \u003d instruction;","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" this.parameter \u003d parameter;","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" * Executes the adding of a new Task to the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" * @throws IOException Exception for writing and loading from","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" * memory.","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" * @throws InvalidInputException Exception when input parameters are","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" * invalid.","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":" public String execute() throws IOException, InvalidInputException {","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"c-wenlong"},"content":" Task t \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"c-wenlong"},"content":" switch (instruction) {","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"c-wenlong"},"content":" case \"todo\":","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"c-wenlong"},"content":" t \u003d new ToDo(parameter);","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"c-wenlong"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"c-wenlong"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"c-wenlong"},"content":" String[] deadlineParameter \u003d parameter.split(\" /by \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"c-wenlong"},"content":" if (deadlineParameter.length \u003d\u003d 1) { // if there is command but no input","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"c-wenlong"},"content":" throw new InvalidInputException(\"Invalid parameters for \" + instruction);","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"c-wenlong"},"content":" String deadlineName \u003d deadlineParameter[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"c-wenlong"},"content":" String deadlineEndDate \u003d deadlineParameter[1].trim();","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"c-wenlong"},"content":" LocalDate deadline \u003d LocalDate.parse(deadlineEndDate, PRINTFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"c-wenlong"},"content":" t \u003d new Deadline(deadlineName, deadline);","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"c-wenlong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"c-wenlong"},"content":" return (\"Error while parsing date: Format should be d-M-yy.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"c-wenlong"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"c-wenlong"},"content":" case \"event\":","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"c-wenlong"},"content":" String[] eventParameter \u003d parameter.split(\" /from \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"c-wenlong"},"content":" if (eventParameter.length \u003d\u003d 1) { // if there is command but no input","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"c-wenlong"},"content":" throw new InvalidInputException(\"Invalid parameters for \" + instruction);","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"c-wenlong"},"content":" String eventName \u003d eventParameter[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"c-wenlong"},"content":" String eventDates \u003d eventParameter[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"c-wenlong"},"content":" String[] dateParameters \u003d eventDates.split(\" /to \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"c-wenlong"},"content":" if (dateParameters.length \u003c 2) { // if there are less than 2 dates given","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"c-wenlong"},"content":" throw new InvalidInputException(\"Invalid parameters for \" + instruction);","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"c-wenlong"},"content":" String eventStartDate \u003d dateParameters[0].trim();","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"c-wenlong"},"content":" String eventEndDate \u003d dateParameters[1].trim();","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"c-wenlong"},"content":" LocalDate start \u003d LocalDate.parse(eventStartDate, PRINTFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"c-wenlong"},"content":" LocalDate end \u003d LocalDate.parse(eventEndDate, PRINTFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"c-wenlong"},"content":" t \u003d new Event(eventName, start, end);","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"c-wenlong"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"c-wenlong"},"content":" return (\"Error while parsing date: Format should be d-M-yy.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"c-wenlong"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"c-wenlong"},"content":" if (t !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"c-wenlong"},"content":" TaskManager.getTasks().add(t);","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"c-wenlong"},"content":" TaskFileManager.saveTasksToFile(TaskManager.getTasks());","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"c-wenlong"},"content":" String response \u003d \"Got it. I\u0027ve added this task:\\n\" + t + \"\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"c-wenlong"},"content":" \"Now you have \" + TaskManager.getTasks().size() + \" tasks in the list.\";","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"c-wenlong"},"content":" return (response);","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"c-wenlong"},"content":" return \"\";","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":104}},{"path":"src/main/java/duke/actions/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.actions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.lang.IndexOutOfBoundsException;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"import duke.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import duke.exceptions.InvalidInputException;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" * A command abstract class is the parent of all types of commands.","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" /** Empty constructor */","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" public Command() {","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" * Executes the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" * @return String to show if the task has been ran successfully.","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" * @throws IOException Exception for writing and loading from","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" * memory.","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" * @throws IndexOutOfBoundsException Exception when the user mark/unmark/deletes","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" * off the array.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" * @throws InvalidInputException Exception when input parameters are","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" * invalid.","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" * @throws InvalidCommandException Exception when command is invalid.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" abstract public String execute()","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" throws IOException, IndexOutOfBoundsException, InvalidInputException, InvalidCommandException;","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":34}},{"path":"src/main/java/duke/actions/DeleteTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.actions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.lang.IndexOutOfBoundsException;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskFileManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * A delete command that deletes a Task from the task list,","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":"public class DeleteTask extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" /** Index where Task is removed. */","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" private int index;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" * Constructor for deleting the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" * @param index Index where Task is removed.","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" public DeleteTask(int index) {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" * Deletes an existing task.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" * @return String of whether there has been an error or a success.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" * @throws IndexOutOfBoundsException Throws the exception when the index to mark","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" * is out of range.","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" * @throws IOException When saving to file and the directory does","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" * not exist.","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" public String execute() throws IndexOutOfBoundsException, IOException {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" Task taskToDelete \u003d TaskManager.getTasks().remove(index); // may throw IndexOutOfBoundsException","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" TaskFileManager.saveTasksToFile(TaskManager.getTasks()); // may throw IOException","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" return (\"OK, I\u0027ve deleted this task:\\n\" + taskToDelete","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" + \"\\nNow you have \" + TaskManager.getTasks().size() + \" tasks in this list!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" return (e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" return (e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":50}},{"path":"src/main/java/duke/actions/FindTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.actions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" * An find key command that finds you tasks that contains the key.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":"public class FindTask extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" /** String key that stores what we will be searching for */","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" private String key;","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" * Constructor for FindTask.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" * @param key Key what we will be searching for.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" public FindTask(String key) {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" this.key \u003d key;","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" * Executes the finding of the class","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" * @return Returns the Tasks that contain the key.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" public String execute() {","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" ArrayList\u003cTask\u003e tasksFound \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" for (Task t : TaskManager.getTasks()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" if (t.find(key)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" tasksFound.add(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" StringBuilder response \u003d new StringBuilder();","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" response.append(\"Here are the matching tasks in your list:\\n\");","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" for (int i \u003d 0; i \u003c tasksFound.size(); i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" response.append((i + 1)).append(\". \").append(tasksFound.get(i)).append(\"\\n\");","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" return response.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"c-wenlong":47}},{"path":"src/main/java/duke/actions/Help.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.actions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":" * A help command that gives the user a list of all possible commands and how to","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":" * use them.","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"public class Help extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" /** String of all possible commands. */","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" private static final String HELP \u003d \"Active commands:x\\n\" +","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" \"\\nVIEW\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" \"list: lists all tasks saved.\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" \"help: lists all available commands.\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" \"\\nEDIT\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" \"mark \u003cindex\u003e: marks the task at index to be completed.\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" \"unmark \u003cindex\u003e: marks the task at index to be not completed.\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" \"delete \u003cindex\u003e: deletes task at index.\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" \"\\nADD TASK\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" \"todo \u003cname\u003e: adds a todo task with its name.\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" \"deadline \u003cname\u003e /by \u003cdate\u003e: adds a deadline task with name and date in d-M-yy format.\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" \"event \u003cname\u003e /from \u003cdate\u003e /to \u003cdate\u003e: adds an event task with name and date in d-M-yy format.\" +","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" \"find \u003ckey\u003e: lists all tasks matching given key\";","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" * Constructor for Help command.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" public Help() {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" /** Executes by returning all commands. */","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" public String execute() {","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" return HELP;","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":38}},{"path":"src/main/java/duke/actions/ListTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.actions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.lang.StringBuilder;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" * A list command that gives the user a list of all Tasks in the array.","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":"public class ListTask extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" * Constructor for ListTask.","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" public ListTask() {","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" * Prints the Task List, labels them with numbers","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" public String execute() {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" if (TaskManager.getTasks().size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" return (\"There are no tasks here. Please add a task!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" StringBuilder response \u003d new StringBuilder();","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" response.append(\"Here are the tasks in your list:\\n\");","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" for (int i \u003d 0; i \u003c TaskManager.getTasks().size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" response.append((i + 1)).append(\". \").append(TaskManager.getTasks().get(i)).append(\"\\n\");","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" return response.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":36}},{"path":"src/main/java/duke/actions/MarkTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.actions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.lang.IndexOutOfBoundsException;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskFileManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * A mark command that marks a Task as completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":"public class MarkTask extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" /** Index where Task is marked as completed. */","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" private int index;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" * Constructor for MarkTask.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" * @param index Index where Task is marked.","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" public MarkTask(int index) {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" * Marks a Task as completed.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" * @return String of whether there has been an error or a success.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" * @throws IndexOutOfBoundsException Throws the exception when the index to mark","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" * is out of range.","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" * @throws IOException When saving to file and the directory does","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" * not exist.","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" public String execute() throws IndexOutOfBoundsException, IOException {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" Task taskToMark \u003d TaskManager.getTasks().get(index); // may throw IndexOutOfBoundsException","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" taskToMark.setCompleted();","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" TaskFileManager.saveTasksToFile(TaskManager.getTasks()); // may throw IOException","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" return (\"Nice! I\u0027ve marked this task as done:\\n\" + taskToMark);","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" return (e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" return (e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":50}},{"path":"src/main/java/duke/actions/UnMarkTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.actions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.lang.IndexOutOfBoundsException;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskFileManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import duke.kbot.TaskManager;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * A unmark command that marks a Task as not completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":"public class UnMarkTask extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" /** Index where we mark Task as not complete. */","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" private int index;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" * Constructor for UnMarkTask.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" * @param index Index where we unmark the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" public UnMarkTask(int index) {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" * Marks a Task as not completed.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" * @return String of whether there has been an error or a success.","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" * @throws IndexOutOfBoundsException Throws the exception when the index to mark","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" * is out of range.","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" * @throws IOException When saving to file and the directory does","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" * not exist.","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" public String execute() throws IndexOutOfBoundsException, IOException {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" Task taskToUnmark \u003d TaskManager.getTasks().get(index); // may throw IndexOutOfBoundsException","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" taskToUnmark.setNotCompleted();","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" TaskFileManager.saveTasksToFile(TaskManager.getTasks()); // may throw IOException","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" return (\"OK, I\u0027ve marked this task as not done yet:\\n\" + taskToUnmark);","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" return (e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" return (e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":50}},{"path":"src/main/java/duke/exceptions/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.exceptions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":" * Encapsulates exception where command is not valid.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"public class InvalidCommandException extends KException {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * Constructor for InvalidCommandException.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * @param message Prints out a message when exception is thrown.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" public InvalidCommandException(String message) {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" super(message);","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":18}},{"path":"src/main/java/duke/exceptions/InvalidInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.exceptions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":" * Encapsulates exception where parameters for the command is not valid.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"public class InvalidInputException extends KException {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * Constructor for InvalidInputException.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * @param message Prints the message when exception is thrown.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" public InvalidInputException(String message) {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" super(message);","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":18}},{"path":"src/main/java/duke/exceptions/KException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.exceptions;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":" * Exception class for all errors or warning generated within the KBot program.","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"public class KException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * Constructor for KException.","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" * @param message The String message to be printed when an error is thrown.","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" public KException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" super(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"c-wenlong":19}},{"path":"src/main/java/duke/memory/output.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"T | | book return","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"c-wenlong":1}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" * A class that encapsulates the Deadlines tasks, a type of Task.","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" /** A String value that represent the type of Task, D for Deadline. */","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" private static final String TYPE \u003d \"D\";","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" /** Storage date format. */","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" private static final DateTimeFormatter STORAGEFORMAT \u003d DateTimeFormatter.ofPattern(\"d-M-yy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" /** Output date format. */","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" private static final DateTimeFormatter PRINTFORMAT \u003d DateTimeFormatter.ofPattern(\"MMM-d-yyyy\");","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" /** A LocalDataTime value that represents the date of deadline. */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" private LocalDate endDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" * Constructor for the ToDo.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" * @param name A String value that states the name of the Task.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" * @param endTime A LocalDate to state the date of deadline.","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" public Deadline(String name, LocalDate endDate) {","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" super(name, TYPE, false);","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" * Constuctor used when we are loading from storage.","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" * @param name A String value that states the name of the Task.","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" * @param endDate LocalDate of when the deadline is.","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" * @param completed Boolean of whether Task is completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" public Deadline(String name, LocalDate endDate, boolean IsCompleted) {","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" super(name, TYPE, IsCompleted);","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" * Searches for a key in name.","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"c-wenlong"},"content":" * @param key String to find in the name.","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":" * @return Boolean if key is found or not.","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"c-wenlong"},"content":" public boolean find(String key) {","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"c-wenlong"},"content":" return super.find(key);","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"c-wenlong"},"content":" * Converts the data (Deadline) here into a format to be stored in the file.","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"c-wenlong"},"content":" * @return String representation of the Deadline to be store in local disk.","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"c-wenlong"},"content":" public String convertToStorageFormat() {","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"c-wenlong"},"content":" return super.convertToStorageFormat() + \" | \" + this.endDate.format(STORAGEFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"c-wenlong"},"content":" * String representation of a Deadline.","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"c-wenlong"},"content":" * @return Returns the String representation of a Deadline.","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"c-wenlong"},"content":" public String toString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"c-wenlong"},"content":" // [T][X] name (by: time)","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"c-wenlong"},"content":" String formattedDeadline \u003d this.endDate.format(PRINTFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"c-wenlong"},"content":" return super.toString() + \" (by: \" + formattedDeadline + \")\"; // [T][X] name (by: time)","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":79}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" * A class that encapsulates the ToDo tasks, a type of Task.","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" /** A String value that represent the type of Task, Efor Event. */","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" private static final String TYPE \u003d \"E\";","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" /** A LocalDate value that represents the date of the start of event. */","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" private LocalDate startDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" /** A LocalDate value that represents the date of the end of event. */","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" private LocalDate endDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" private static final DateTimeFormatter STORAGEFORMAT \u003d DateTimeFormatter.ofPattern(\"d-M-yy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" private static final DateTimeFormatter PRINTFORMAT \u003d DateTimeFormatter.ofPattern(\"MMM-d-yyyy\");","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" * Constructor for the Event.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" * @param name A String value that states the name of the Task.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" * @param startDate A LocalDate representation of the start of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" * @param endDate A LocalDate representation of the end of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" public Event(String name, LocalDate startDate, LocalDate endDate) {","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" super(name, TYPE, false);","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" * Constuctor used when we are loading from storage.","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" * @param name A String value that states the name of the Task.","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" * @param startDate A LocalDateTime to state the start of event.","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" * @param endDate A LocalDateTime to state the end of event.","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" * @param isCompleted Boolean of whether Task is completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" public Event(String name, LocalDate startDate, LocalDate endDate, boolean isCompleted) {","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" super(name, TYPE, isCompleted);","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"c-wenlong"},"content":" * Searches for a key in name.","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"c-wenlong"},"content":" * @param key String to find in the name.","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"c-wenlong"},"content":" * @return Boolean if key is found or not.","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"c-wenlong"},"content":" public boolean find(String key) {","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"c-wenlong"},"content":" return super.find(key);","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"c-wenlong"},"content":" * Converts the data (Event) here into a format to be stored in the file.","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"c-wenlong"},"content":" * @return String representation of the Event to be store in local disk.","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"c-wenlong"},"content":" public String convertToStorageFormat() {","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"c-wenlong"},"content":" return super.convertToStorageFormat() + \" | \" + this.startDate.format(STORAGEFORMAT) + \" | \"","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"c-wenlong"},"content":" + this.endDate.format(STORAGEFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"c-wenlong"},"content":" * String representation of an Event.","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"c-wenlong"},"content":" * @return Returns the String representation of an Event.","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"c-wenlong"},"content":" public String toString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"c-wenlong"},"content":" // [T][X] name (from: startTime to: endTime)","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"c-wenlong"},"content":" return super.toString() + \" (from: \" + this.startDate.format(PRINTFORMAT) + \" to: \"","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"c-wenlong"},"content":" + this.endDate.format(PRINTFORMAT) + \")\";","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"c-wenlong":84}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":" * Encapsulate a Task with a name and status of boolean to represent whether it","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":" * has been completed.","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" /** A String value that states the name of the Task. */","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" private String name;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" /** A String value that represent the type of Task. */","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" private String type;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" /** A boolean value that states whether the Task has been completed or not. */","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" private boolean isCompleted;","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" * Constructor for the Task.","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" * @param name A String value that states the name of the Task.","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" public Task(String name, String type, boolean isCompleted) {","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" * Sets the status of completed to true.","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" public void setCompleted() {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" this.isCompleted \u003d true;","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" * Sets the status of completed to false.","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" public void setNotCompleted() {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" this.isCompleted \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" * Searches for a key in name.","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" * @param key String to find in the name.","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" * @return Boolean if key is found or not.","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"c-wenlong"},"content":" public boolean find(String key) {","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":" String[] words \u003d this.name.split(\" \");","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"c-wenlong"},"content":" for (String s : words) {","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"c-wenlong"},"content":" if (s.equals(key)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"c-wenlong"},"content":" return true;","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"c-wenlong"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"c-wenlong"},"content":" * Converts the data here into a format to be stored in the file.","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"c-wenlong"},"content":" * @return String representation of the Task to be store in local disk.","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"c-wenlong"},"content":" public String convertToStorageFormat() {","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"c-wenlong"},"content":" String mark \u003d isCompleted ? \"X\" : \" \";","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"c-wenlong"},"content":" return this.type + \" | \" + mark + \" | \" + this.name;","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"c-wenlong"},"content":" * String representation of a Task.","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"c-wenlong"},"content":" * @return Returns the String representation of a Task.","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"c-wenlong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"c-wenlong"},"content":" String mark \u003d isCompleted ? \"X\" : \" \";","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"c-wenlong"},"content":" return \"[\" + this.type + \"]\" + \"[\" + mark + \"]\" + \" \" + this.name;","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"c-wenlong":81}},{"path":"src/main/java/duke/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":" * A class that encapsulates the ToDo tasks, a type of Task.","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" /** A String value that represent the type of Task, in this case T for ToDo */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" private static final String TYPE \u003d \"T\";","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" * Constructor for the ToDo.","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" * @param name A String value that states the name of the Task.","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" super(name, TYPE, false);","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" * Constuctor used when we are loading from storage.","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" * @param name A String value that states the name of the Task.","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" * @param completed Boolean of whether Task is completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":" public ToDo(String name, boolean isCompleted) {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" super(name, TYPE, isCompleted);","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" * Searches for a key in name.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" * @param key String to find in the name.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" * @return Boolean if key is found or not.","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" public boolean find(String key) {","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" return super.find(key);","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" * Converts the data (ToDo) here into a format to be stored in the file.","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" * @return String representation of the ToDo to be store in local disk.","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" public String convertToStorageFormat() {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" return super.convertToStorageFormat();","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"c-wenlong"},"content":" * String representation of a ToDo.","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"c-wenlong"},"content":" * @return Returns the String representation of a ToDo.","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"c-wenlong"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"c-wenlong"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"c-wenlong"},"content":" return super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"c-wenlong":61}},{"path":"src/main/java/duke/test.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import java.time.*;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"public class test {","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" timetest();","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" public static void timetest() {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" DateTimeFormatter DATEFORMAT \u003d DateTimeFormatter.ofPattern(\"d-M-yy\");","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" String s \u003d \"1-2-24\";","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" LocalDate l \u003d LocalDate.parse(s, DATEFORMAT);","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" String a \u003d l.format(DateTimeFormatter.ofPattern(\"MMM-d-yy\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" System.out.println(l);","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" System.out.println(a);","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"c-wenlong":19}},{"path":"src/main/java/duke/ui_design/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.ui_design;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":" * Manages all messages that should be printed as the UI component.","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"public class Ui {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" /** A String to separate user input and system output. */","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" private static final String LINE \u003d \"____________________________________________________________\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" /** A String to print when program starts running. */","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" private static final String START \u003d \"Hey, nice to meet you! I am your personal chatbot:\\n\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" + \" /\u0027 _/ /\u0027 \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" + \" /\u0027 _/~ /\u0027 \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" + \" ,/\u0027_/~ ____ O ____ /\u0027__ ____ ____ ____ \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" + \" /\\\\/~ /\u0027 ) /\u0027 /\u0027 )--/\u0027 / /\u0027 ) /\u0027 ) )\u0027 )--/\u0027 )\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" + \" /\u0027 \\\\ /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 /\u0027 \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" + \"/\u0027 \\\\(___,/(__(__/(___,/\u0027 (___,/(__(___,/(__(___,/(__/\u0027 (___,/(__ \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" + \" /\u0027 /\u0027 \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" + \" /\u0027 / /\u0027 \\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" + \" /\u0027 (___,/\u0027 \\n\\n\"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" + \"What can I do for you today? :)\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" /** A String to print when program stops running. */","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":" private static final String END \u003d \"See you later alligator!\\n\";","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"c-wenlong"},"content":" /** ASCII art of a wolf */","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"c-wenlong"},"content":" private static final String WOLF \u003d \" ..:::::..\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"c-wenlong"},"content":" \" .:::::::::::.\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"c-wenlong"},"content":" \" :::::::::::::::\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"c-wenlong"},"content":" \" :::::::::::::::::\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"c-wenlong"},"content":" \" :::::::_/|:::::::\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"c-wenlong"},"content":" \" ::::\u003d/_/:::::::\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"c-wenlong"},"content":" \" `:_/ |::::::\u0027\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"c-wenlong"},"content":" \" ( / ,|:::\u0027\u0027\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"c-wenlong"},"content":" \" \\\\_/^\\\\/||__\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"c-wenlong"},"content":" \" _/~ `\\\"\\\"~`\\\"` \\\\_\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"c-wenlong"},"content":" \" __/ -\u0027/ `-._ `\\\\_\\\\__\\n\" + //","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"c-wenlong"},"content":" \" /-\u0027` /-\u0027` `\\\\ \\\\ \\\\-.\\\\\";","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"c-wenlong"},"content":" /** ASCII art of a garden */","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"c-wenlong"},"content":" private static final String FLOWERS \u003d \" _(_)_ wWWWw _\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"c-wenlong"},"content":" \" @@@@ (_)@(_) vVVVv _ @@@@ (___) _(_)_\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"c-wenlong"},"content":" \" @@()@@ wWWWw (_)\\\\ (___) _(_)_ @@()@@ Y (_)@(_)\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"c-wenlong"},"content":" \" @@@@ (___) `|/ Y (_)@(_) @@@@ \\\\|/ (_)\\\\\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"c-wenlong"},"content":" \" / Y \\\\| \\\\|/ /(_) \\\\| |/ |\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"c-wenlong"},"content":" \" \\\\ | \\\\ |/ | /\\\\ | / \\\\|/ |/ \\\\| \\\\|/\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"c-wenlong"},"content":" \" \\\\\\\\\\\\|/// \\\\\\\\|/// \\\\\\\\\\\\\\\\|//\\\\\\\\|///\\\\|/// \\\\\\\\\\\\|// \\\\\\\\|// \\\\\\\\\\\\|///\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"c-wenlong"},"content":" \" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n\";","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"c-wenlong"},"content":" * Constructor for messages","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"c-wenlong"},"content":" public Ui() {","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"c-wenlong"},"content":" * Get welcome message.","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"c-wenlong"},"content":" * @return Welcome message.","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"c-wenlong"},"content":" public String getStartMessage() {","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"c-wenlong"},"content":" return START;","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"c-wenlong"},"content":" * Get end of program message.","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"c-wenlong"},"content":" * @return End of program message.","lastModifiedDate":"2024-01-25"},{"lineNumber":72,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"c-wenlong"},"content":" public String getEndMessage() {","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"c-wenlong"},"content":" return END;","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"c-wenlong"},"content":" * A line to separate user inputs and system outputs.","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"c-wenlong"},"content":" * @return A line.","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"c-wenlong"},"content":" public String getLine() {","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"c-wenlong"},"content":" return LINE;","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"c-wenlong"},"content":" * Design of a wolf.","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"c-wenlong"},"content":" * @return A wolf.","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"c-wenlong"},"content":" public String getWolf() {","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"c-wenlong"},"content":" return WOLF;","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"c-wenlong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"c-wenlong"},"content":" * Design of a flower garden.","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"c-wenlong"},"content":" * ","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"c-wenlong"},"content":" * @return A flower garden.s","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"c-wenlong"},"content":" public String getFlower() {","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"c-wenlong"},"content":" return FLOWERS;","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"c-wenlong":103}},{"path":"src/test/java/duke/tasks/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" * Encapsulate the test for Deadline class.","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" public void Deadline_toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" assertEquals(\"[D][ ] assignment (by: Jan-28-2024)\",","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" new Deadline(\"assignment\", LocalDate.of(2024, 1, 28)).toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" public void Deadline_toStorageFormat() {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" assertEquals(\"D | | assignment | 28-1-24\",","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" new Deadline(\"assignment\", LocalDate.of(2024, 1, 28)).convertToStorageFormat());","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"c-wenlong":27}},{"path":"src/test/java/duke/tasks/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" * Encapsulate the test for Event class.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":"public class EventTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" public void Event_toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" assertEquals(\"[E][ ] open house (from: Jan-28-2024 to: Jan-30-2024)\",","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" new Event(\"open house\", LocalDate.of(2024, 1, 28), LocalDate.of(2024, 1, 30)).toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" public void Event_toStorageFormat() {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":" assertEquals(\"E | | open house | 28-1-24 | 30-1-24\",","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"c-wenlong"},"content":" new Event(\"open house\", LocalDate.of(2024, 1, 28), LocalDate.of(2024, 1, 30)).convertToStorageFormat());","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"c-wenlong":26}},{"path":"src/test/java/duke/tasks/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" * Encapsulate the test for Task class.","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":"public class TaskTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" public void Task_toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":" assertEquals(\"[T][X] homework\", new Task(\"homework\", \"T\", true).toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" public void Task_toStorageFormat() {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":" assertEquals(\"T | X | homework\", new Task(\"homework\", \"T\", true).convertToStorageFormat());","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"c-wenlong":23}},{"path":"src/test/java/duke/tasks/ToDoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"package duke.tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":" * Encapsulate the test for ToDo class.","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" * @author: CHEN WENLONG","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":" * @version: CS2103T AY23/24 Semester 2","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":"public class ToDoTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"c-wenlong"},"content":" public void ToDo_toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"c-wenlong"},"content":" assertEquals(\"[T][X] homework\", new ToDo(\"homework\", true).toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"c-wenlong"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"c-wenlong"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"c-wenlong"},"content":" public void ToDo_toStorageFormat() {","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"c-wenlong"},"content":" assertEquals(\"T | X | homework\", new ToDo(\"homework\", true).convertToStorageFormat());","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"c-wenlong"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"c-wenlong"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"c-wenlong":21}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"c-wenlong"},"content":"todo homework","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"c-wenlong"},"content":"deadline more homework /by tomorrow","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"c-wenlong"},"content":"event hackathon /from today /to tomorrow","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"c-wenlong"},"content":"todo finish coding for hackathon","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"c-wenlong"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"c-wenlong"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"c-wenlong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":"mark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"c-wenlong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"c-wenlong"},"content":"unmark 3","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"c-wenlong"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"c-wenlong"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"c-wenlong":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":"c-wenlong"},"content":"# run this file at its working directory such that the relative path is sustained.","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"c-wenlong"},"content":" echo \"/bin created!\"","lastModifiedDate":"2024-01-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":"c-wenlong"},"content":" echo \"Text generated!\"","lastModifiedDate":"2024-01-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":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"c-wenlong"},"content":"java -classpath ../bin KBot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"# compare the output to the expected output","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"}],"authorContributionMap":{"c-wenlong":4,"-":37}}] diff --git a/c-wenlong_ip_master/commits.json b/c-wenlong_ip_master/commits.json index 091c202d..ca1526dc 100644 --- a/c-wenlong_ip_master/commits.json +++ b/c-wenlong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"c-wenlong":[{"date":"2024-01-24","commitResults":[{"hash":"fb0069c078c1af030b131a9225f6f30cfcdfc266","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["level-0"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":6}}},{"hash":"dc781d5400850ec01feb2a9c8b0bcbad25afcf2b","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":8}}},{"hash":"4ff6c3523b5333012c2545c2e1db7ea176e57c38","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":23}}}]},{"date":"2024-01-25","commitResults":[{"hash":"52316212ef865459424bb44f14327f258be3e1d3","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["level-3"],"fileTypesAndContributionMap":{"java":{"insertions":134,"deletions":26}}},{"hash":"0ddbc48ba609d2905f3569eb243b21b8177be044","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["level-4"],"fileTypesAndContributionMap":{"java":{"insertions":369,"deletions":19}}},{"hash":"722dc2275dff2605e9904144d3e81a47bb358719","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":0,"deletions":109},"sh":{"insertions":4,"deletions":1}}},{"hash":"5e691893c6fa02005204fc515548a56033211c18","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["level-5"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":9}}},{"hash":"b9a7603a116bf649c2bcbf55c415f57f964b2580","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["level-6"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":2}}}]},{"date":"2024-01-28","commitResults":[{"hash":"1535dce61819694603ab3dd10e3e69b13a8f89cf","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes. Load the data from the hard disk when the chatbot starts up.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":226,"deletions":51}}},{"hash":"4e8dabd31fd459282e8d36dcb787df4c3d5ffde1","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes. Load the data from the hard disk when the chatbot starts up.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":21}}},{"hash":"b91518d6649de6aab0029d487e26d7b26e9a07cd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"Save the tasks in the hard disk automatically whenever the task list changes. Load the data from the hard disk when the chatbot starts up.\n","tags":["level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-31","commitResults":[{"hash":"5ff8e7f62231b845df64333f0367e1baf6a33581","isMergeCommit":false,"messageTitle":"Teach the chatbot how to understand dates and times","messageBody":"","tags":["level-8"],"fileTypesAndContributionMap":{"java":{"insertions":700,"deletions":426}}}]},{"date":"2024-02-01","commitResults":[{"hash":"0c015b1a48f2b04c0d10d50f8d49c62188b79f88","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-02","commitResults":[{"hash":"ba376a13a18f92b135fd00fc2b9e0a2543fe1288","isMergeCommit":false,"messageTitle":"Add tests for tasks","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":157,"deletions":63}}},{"hash":"b0d45ff738ac1a770dff28cd2971a1976038abd7","isMergeCommit":false,"messageTitle":"Add jar file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":17,"deletions":1}}},{"hash":"e3ff15f569c470ab637c06cda00a76d38c9031a9","isMergeCommit":false,"messageTitle":"Give users a way to find a task by searching for a keyword","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":63,"deletions":3}}},{"hash":"2ff509b2c73b398f90fc194001e1fbb4e25f273f","isMergeCommit":true,"messageTitle":"Merge branch \u0027Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"8a42e867b25b4da016ea24e24aef5779053e8fe5","isMergeCommit":false,"messageTitle":"Change help function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"6bce82417d2379e08655edabc615cfc9f81ec343","isMergeCommit":false,"messageTitle":"Add more OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":26,"deletions":23}}},{"hash":"e45f1728c6c903b8484c21d1b1742f1b41460c33","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027 Add more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"4e76676804bd20da5a54605cf6ceff317a80be98","isMergeCommit":false,"messageTitle":"Add more packaging","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":13}}},{"hash":"93bb101eb7d7d2ea70dfd510a293744fd5a7b359","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"bdf0dca4adc2d7c45c6d6019f34efddbb9e0fae2","isMergeCommit":false,"messageTitle":"Add Java documentation","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":239,"deletions":26}}},{"hash":"c3fd248f91f11ff4ca9d7fb40487e00e6d92f0e0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"17505d76b6996224efc67e279c0ede018f90ebbb","isMergeCommit":false,"messageTitle":"Remove redundant code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":3}}},{"hash":"e2c576310c95fc2484bb6afe054df7afc57f8aed","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027 Merge with branch-A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f7d9c4b3bd2142d3426e4890ea4991a08e098d62","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-A-CodingStandard Merge with master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"77fa18a85bd6e176484c94885e3a838369a3b707","isMergeCommit":false,"messageTitle":"Make code fit java coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":137,"deletions":137}}},{"hash":"b159c4df09f4f9d7b6d55160a7b09cb94734847d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027 Merge with branch-A-CodingStanard to make code more standardised","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"c-wenlong":{"java":1309,"md":0,"fxml":0,"sh":4,"bat":0,"gradle":17,"txt":13}},"authorContributionVariance":{"c-wenlong":142343.89},"authorDisplayNameMap":{"c-wenlong":"CS2103T-F13-4 CHEN..LONG"}} +{"authorDailyContributionsMap":{"c-wenlong":[{"date":"2024-01-24","commitResults":[{"hash":"fb0069c078c1af030b131a9225f6f30cfcdfc266","isMergeCommit":false,"messageTitle":"Level 0. Rename, Greet, Exit","messageBody":"","tags":["level-0"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":6}}},{"hash":"dc781d5400850ec01feb2a9c8b0bcbad25afcf2b","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":8}}},{"hash":"4ff6c3523b5333012c2545c2e1db7ea176e57c38","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["level-2"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":23}}}]},{"date":"2024-01-25","commitResults":[{"hash":"52316212ef865459424bb44f14327f258be3e1d3","isMergeCommit":false,"messageTitle":"Level 3. Mark as Done","messageBody":"","tags":["level-3"],"fileTypesAndContributionMap":{"java":{"insertions":134,"deletions":26}}},{"hash":"0ddbc48ba609d2905f3569eb243b21b8177be044","isMergeCommit":false,"messageTitle":"Level 4. ToDos, Events, Deadlines","messageBody":"","tags":["level-4"],"fileTypesAndContributionMap":{"java":{"insertions":369,"deletions":19}}},{"hash":"722dc2275dff2605e9904144d3e81a47bb358719","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":0,"deletions":109},"sh":{"insertions":4,"deletions":1}}},{"hash":"5e691893c6fa02005204fc515548a56033211c18","isMergeCommit":false,"messageTitle":"Level 5. Handle Errors","messageBody":"","tags":["level-5"],"fileTypesAndContributionMap":{"java":{"insertions":67,"deletions":9}}},{"hash":"b9a7603a116bf649c2bcbf55c415f57f964b2580","isMergeCommit":false,"messageTitle":"Level 6. Delete","messageBody":"","tags":["level-6"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":2}}}]},{"date":"2024-01-28","commitResults":[{"hash":"1535dce61819694603ab3dd10e3e69b13a8f89cf","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes. Load the data from the hard disk when the chatbot starts up.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":226,"deletions":51}}},{"hash":"4e8dabd31fd459282e8d36dcb787df4c3d5ffde1","isMergeCommit":false,"messageTitle":"Save the tasks in the hard disk automatically whenever the task list changes. Load the data from the hard disk when the chatbot starts up.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":21}}},{"hash":"b91518d6649de6aab0029d487e26d7b26e9a07cd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"Save the tasks in the hard disk automatically whenever the task list changes. Load the data from the hard disk when the chatbot starts up.\n","tags":["level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-31","commitResults":[{"hash":"5ff8e7f62231b845df64333f0367e1baf6a33581","isMergeCommit":false,"messageTitle":"Teach the chatbot how to understand dates and times","messageBody":"","tags":["level-8"],"fileTypesAndContributionMap":{"java":{"insertions":700,"deletions":426}}}]},{"date":"2024-02-01","commitResults":[{"hash":"0c015b1a48f2b04c0d10d50f8d49c62188b79f88","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-02","commitResults":[{"hash":"ba376a13a18f92b135fd00fc2b9e0a2543fe1288","isMergeCommit":false,"messageTitle":"Add tests for tasks","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":157,"deletions":63}}},{"hash":"b0d45ff738ac1a770dff28cd2971a1976038abd7","isMergeCommit":false,"messageTitle":"Add jar file","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":17,"deletions":1}}},{"hash":"e3ff15f569c470ab637c06cda00a76d38c9031a9","isMergeCommit":false,"messageTitle":"Give users a way to find a task by searching for a keyword","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":63,"deletions":3}}},{"hash":"2ff509b2c73b398f90fc194001e1fbb4e25f273f","isMergeCommit":true,"messageTitle":"Merge branch \u0027Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"8a42e867b25b4da016ea24e24aef5779053e8fe5","isMergeCommit":false,"messageTitle":"Change help function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"6bce82417d2379e08655edabc615cfc9f81ec343","isMergeCommit":false,"messageTitle":"Add more OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":26,"deletions":23}}},{"hash":"e45f1728c6c903b8484c21d1b1742f1b41460c33","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027 Add more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"4e76676804bd20da5a54605cf6ceff317a80be98","isMergeCommit":false,"messageTitle":"Add more packaging","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":13}}},{"hash":"93bb101eb7d7d2ea70dfd510a293744fd5a7b359","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"bdf0dca4adc2d7c45c6d6019f34efddbb9e0fae2","isMergeCommit":false,"messageTitle":"Add Java documentation","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":239,"deletions":26}}},{"hash":"c3fd248f91f11ff4ca9d7fb40487e00e6d92f0e0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"17505d76b6996224efc67e279c0ede018f90ebbb","isMergeCommit":false,"messageTitle":"Remove redundant code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":3}}},{"hash":"e2c576310c95fc2484bb6afe054df7afc57f8aed","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027 Merge with branch-A-JavaDoc","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f7d9c4b3bd2142d3426e4890ea4991a08e098d62","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-A-CodingStandard Merge with master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"77fa18a85bd6e176484c94885e3a838369a3b707","isMergeCommit":false,"messageTitle":"Make code fit java coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":137,"deletions":137}}},{"hash":"b159c4df09f4f9d7b6d55160a7b09cb94734847d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027 Merge with branch-A-CodingStanard to make code more standardised","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"002889b5826b0eb1f11a614649a9540439c8c93a","isMergeCommit":false,"messageTitle":"Create GUI for chatbot","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"java":{"insertions":219,"deletions":25}}},{"hash":"2eea303545a425d8dbfe028341502a85aea4866e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027 Create GUI for chatbot","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"c-wenlong":{"java":1503,"md":0,"fxml":0,"sh":4,"bat":0,"gradle":17,"txt":13}},"authorContributionVariance":{"c-wenlong":118834.09},"authorDisplayNameMap":{"c-wenlong":"CS2103T-F13-4 CHEN..LONG"}} diff --git a/chenyixin0_ip_master/commits.json b/chenyixin0_ip_master/commits.json index 42e68c70..3dd44172 100644 --- a/chenyixin0_ip_master/commits.json +++ b/chenyixin0_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"chenyixin0":[{"date":"2024-01-25","commitResults":[{"hash":"f76d7f81513be86c5ff43cbef8b344a910957aa5","isMergeCommit":false,"messageTitle":"Level 0: Rename, Greet and Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"dddc1b1036505dbe30232e6fe197a34159f68f19","isMergeCommit":false,"messageTitle":"Level 0: Rename, Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"765ed8d001624152ddca5121550cead9bad06eaa","isMergeCommit":false,"messageTitle":"remove newline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":3}}},{"hash":"54d5083382c22755369c3fba1268e9c39756db3b","isMergeCommit":false,"messageTitle":"modified line spacing","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"03892e0674ef665ad7ba4c40410bb999ffb59d9c","isMergeCommit":false,"messageTitle":"Chatbot echoes user input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}},{"hash":"bc4a008f395f48925c829ebe18ca1faba28ee473","isMergeCommit":false,"messageTitle":"Added task list function","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}},{"hash":"a34e29e20de300b4d561cc4a67cf5b3214d8f3d4","isMergeCommit":false,"messageTitle":"Added task mark and unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"0bd2063effc39a3a04a626d03eb9aedb46ef4b96","isMergeCommit":false,"messageTitle":"Added task types","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":26}}}]},{"date":"2024-01-26","commitResults":[{"hash":"f9bf1639d122ab7c9ed644d70b20bba93b442b9f","isMergeCommit":false,"messageTitle":"Added error handling \u0026 improved OOP design","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":131,"deletions":108}}},{"hash":"aae4be8bebfc82177ce3e90dd688bab88e88b19e","isMergeCommit":false,"messageTitle":"Added delete function","messageBody":"","tags":["Level-6","Leve-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}}]},{"date":"2024-01-31","commitResults":[{"hash":"a095abbaba76c9d109538e5c818f7d4404cd6761","isMergeCommit":false,"messageTitle":"tasklist saved to hard disk on revision","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0}}},{"hash":"1254a46448322cef3535306fa6602cc0b18f299d","isMergeCommit":false,"messageTitle":"tasklist saved to hard disk on revision","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":18,"deletions":1}}},{"hash":"a6c2b360cab89559a4beb83ad244e4d31ba4bd52","isMergeCommit":false,"messageTitle":"exit","messageBody":"","fileTypesAndContributionMap":{"bat":{"insertions":3,"deletions":2}}}]},{"date":"2024-02-01","commitResults":[{"hash":"bdff0638e2b62f97c85095ba0de4e99badc5d7c0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-02","commitResults":[{"hash":"60bb51fdae7e382cdeee341dd09fcc1f356c91f0","isMergeCommit":false,"messageTitle":"correctly processes date inputs from user","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":11}}},{"hash":"f970e91614ced616065e3a194833c29a655c12eb","isMergeCommit":false,"messageTitle":"Refactored code to extract out closely related code as classes","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":230,"deletions":102}}},{"hash":"3fc2537d6fa4abe63a75183a4c00dea93c32d57e","isMergeCommit":false,"messageTitle":"organised classes into packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":364,"deletions":0}}}]},{"date":"2024-02-06","commitResults":[{"hash":"7ef3edfc3a2d6a48196e593f861384467dca516d","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-Gradle\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f7ebdc155ea75f1780dbcf47e7777cc5308fe982","isMergeCommit":false,"messageTitle":"Added JUnit testing","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":118,"deletions":393}}},{"hash":"0cf79387e9170bd6955efacf65206663ddd2efe3","isMergeCommit":false,"messageTitle":"Added JUnit testing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"chenyixin0":{"java":514,"md":0,"fxml":0,"sh":0,"bat":3,"gradle":0,"txt":4}},"authorContributionVariance":{"chenyixin0":44515.676},"authorDisplayNameMap":{"chenyixin0":"CS2103T-F14-1 CHEN..IXIN"}} +{"authorDailyContributionsMap":{"chenyixin0":[{"date":"2024-01-25","commitResults":[{"hash":"f76d7f81513be86c5ff43cbef8b344a910957aa5","isMergeCommit":false,"messageTitle":"Level 0: Rename, Greet and Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"dddc1b1036505dbe30232e6fe197a34159f68f19","isMergeCommit":false,"messageTitle":"Level 0: Rename, Greet, Exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"765ed8d001624152ddca5121550cead9bad06eaa","isMergeCommit":false,"messageTitle":"remove newline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":3}}},{"hash":"54d5083382c22755369c3fba1268e9c39756db3b","isMergeCommit":false,"messageTitle":"modified line spacing","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"03892e0674ef665ad7ba4c40410bb999ffb59d9c","isMergeCommit":false,"messageTitle":"Chatbot echoes user input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}},{"hash":"bc4a008f395f48925c829ebe18ca1faba28ee473","isMergeCommit":false,"messageTitle":"Added task list function","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}},{"hash":"a34e29e20de300b4d561cc4a67cf5b3214d8f3d4","isMergeCommit":false,"messageTitle":"Added task mark and unmark","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"0bd2063effc39a3a04a626d03eb9aedb46ef4b96","isMergeCommit":false,"messageTitle":"Added task types","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":105,"deletions":26}}}]},{"date":"2024-01-26","commitResults":[{"hash":"f9bf1639d122ab7c9ed644d70b20bba93b442b9f","isMergeCommit":false,"messageTitle":"Added error handling \u0026 improved OOP design","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":131,"deletions":108}}},{"hash":"aae4be8bebfc82177ce3e90dd688bab88e88b19e","isMergeCommit":false,"messageTitle":"Added delete function","messageBody":"","tags":["Level-6","Leve-6","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}}]},{"date":"2024-01-31","commitResults":[{"hash":"a095abbaba76c9d109538e5c818f7d4404cd6761","isMergeCommit":false,"messageTitle":"tasklist saved to hard disk on revision","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0}}},{"hash":"1254a46448322cef3535306fa6602cc0b18f299d","isMergeCommit":false,"messageTitle":"tasklist saved to hard disk on revision","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":18,"deletions":1}}},{"hash":"a6c2b360cab89559a4beb83ad244e4d31ba4bd52","isMergeCommit":false,"messageTitle":"exit","messageBody":"","fileTypesAndContributionMap":{"bat":{"insertions":3,"deletions":2}}}]},{"date":"2024-02-01","commitResults":[{"hash":"bdff0638e2b62f97c85095ba0de4e99badc5d7c0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-02","commitResults":[{"hash":"60bb51fdae7e382cdeee341dd09fcc1f356c91f0","isMergeCommit":false,"messageTitle":"correctly processes date inputs from user","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":11}}},{"hash":"f970e91614ced616065e3a194833c29a655c12eb","isMergeCommit":false,"messageTitle":"Refactored code to extract out closely related code as classes","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":230,"deletions":102}}},{"hash":"3fc2537d6fa4abe63a75183a4c00dea93c32d57e","isMergeCommit":false,"messageTitle":"organised classes into packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":364,"deletions":0}}}]},{"date":"2024-02-06","commitResults":[{"hash":"7ef3edfc3a2d6a48196e593f861384467dca516d","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-Gradle\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f7ebdc155ea75f1780dbcf47e7777cc5308fe982","isMergeCommit":false,"messageTitle":"Added JUnit testing","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":118,"deletions":393}}},{"hash":"0cf79387e9170bd6955efacf65206663ddd2efe3","isMergeCommit":false,"messageTitle":"Added JUnit testing","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"chenyixin0":{"java":514,"md":0,"fxml":0,"sh":0,"bat":3,"gradle":0,"txt":4}},"authorContributionVariance":{"chenyixin0":44515.676},"authorDisplayNameMap":{"chenyixin0":"CS2103T-F14-1 CHEN..IXIN"}} diff --git a/chewbum_ip_master/commits.json b/chewbum_ip_master/commits.json index 23ca7f10..c7a77410 100644 --- a/chewbum_ip_master/commits.json +++ b/chewbum_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"chewbum":[{"date":"2024-01-23","commitResults":[{"hash":"0c87ba4eec2da21ae445324d36b386ca57b26a57","isMergeCommit":false,"messageTitle":"level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"33eba8ea29ab0b16819d3d88fdc956f199ea6470","isMergeCommit":false,"messageTitle":" Level 1 Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":3}}},{"hash":"b7a15b8fdf70b67c02aecc1139e4b3996f3c5639","isMergeCommit":false,"messageTitle":"Level-2 Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":6}}},{"hash":"5f28b32450fd99de104904a4a97640a816169fa4","isMergeCommit":false,"messageTitle":"Level-3 Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":20}}},{"hash":"dbb4b6bc98158f63e393d9ec5743143bc8b4dc5d","isMergeCommit":false,"messageTitle":"Level-4 ToDos,Events,Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":5}}}]},{"date":"2024-01-24","commitResults":[{"hash":"5645f4b521a44e12bc9587087ee40e34c069ac08","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":27}}},{"hash":"2336fe8c918fa3cdfb2c6eb18b9258cf27c14bd3","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":10}}}]},{"date":"2024-01-28","commitResults":[{"hash":"ae28a87025558aca7ffbbc3cc92986d0a2f33dd0","isMergeCommit":false,"messageTitle":"Automated Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"adebe94414075220c74b0b092fbbb624bf1b2208","isMergeCommit":false,"messageTitle":"Level- 7 Add TaskStorage","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":58,"deletions":2}}},{"hash":"e6a785590660d5478fa34289b80c1711308ff546","isMergeCommit":false,"messageTitle":"Level 7 Integrated File Saving into Duke","messageBody":"","tags":["Level-7-branch"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"71ab8ac43d89e4c82ed5facb577d3299090f78b8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"16a64eb032353dda1b10553a510c6805e38b7f4c","isMergeCommit":false,"messageTitle":"Level-8 branch","messageBody":"","tags":["Level-8-branch"],"fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":21}}},{"hash":"320d0c31c79e8a2323d1aaf6d690857e337a90fd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"95d8aae67ab1f137007ced86e14ec3cb32436871","isMergeCommit":false,"messageTitle":"Use More OOP","messageBody":"","tags":["A-Packages","A-More-OOP"],"fileTypesAndContributionMap":{"java":{"insertions":546,"deletions":220},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"06f8a9984acea68c9b288781782235a8ce7d65fe","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"51ed5034ac22f88733ea2c709e20648db73402d4","isMergeCommit":false,"messageTitle":"Add JUnit Tests","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":0}}}]},{"date":"2024-01-31","commitResults":[{"hash":"383b98d6efdcdfc2d680e9e2facaab84df49f746","isMergeCommit":false,"messageTitle":"Create a JAR File","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"727de669d6e1f63a1ee1c01a7cce0dbd6c349320","isMergeCommit":false,"messageTitle":"Add javadoc","messageBody":"","tags":["A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":1}}},{"hash":"263cec575b21064cac2813f608c42cf0dafdae1a","isMergeCommit":false,"messageTitle":"Add find feature","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":0}}},{"hash":"03050aa323f735f5e1f4f8d1af1292a69514d75c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-04","commitResults":[{"hash":"4661d9ad2337a7e18202d16d5d2e53ec305c7d52","isMergeCommit":false,"messageTitle":"Added GUI","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":1},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":257,"deletions":75}}},{"hash":"0cdf82269ad856b8df4fde7da29e42da0c74270f","isMergeCommit":false,"messageTitle":"A-Varags","messageBody":"","tags":["A-Varargs"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":7}}}]}]},"authorFileTypeContributionMap":{"chewbum":{"java":1008,"md":2,"fxml":35,"sh":0,"bat":1,"gradle":15,"txt":17}},"authorContributionVariance":{"chewbum":54919.906},"authorDisplayNameMap":{"chewbum":"CS2103-F08-1 CHEW..XUAN"}} +{"authorDailyContributionsMap":{"chewbum":[{"date":"2024-01-23","commitResults":[{"hash":"0c87ba4eec2da21ae445324d36b386ca57b26a57","isMergeCommit":false,"messageTitle":"level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"33eba8ea29ab0b16819d3d88fdc956f199ea6470","isMergeCommit":false,"messageTitle":" Level 1 Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":3}}},{"hash":"b7a15b8fdf70b67c02aecc1139e4b3996f3c5639","isMergeCommit":false,"messageTitle":"Level-2 Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":6}}},{"hash":"5f28b32450fd99de104904a4a97640a816169fa4","isMergeCommit":false,"messageTitle":"Level-3 Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":20}}},{"hash":"dbb4b6bc98158f63e393d9ec5743143bc8b4dc5d","isMergeCommit":false,"messageTitle":"Level-4 ToDos,Events,Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":5}}}]},{"date":"2024-01-24","commitResults":[{"hash":"5645f4b521a44e12bc9587087ee40e34c069ac08","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":27}}},{"hash":"2336fe8c918fa3cdfb2c6eb18b9258cf27c14bd3","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":10}}}]},{"date":"2024-01-28","commitResults":[{"hash":"ae28a87025558aca7ffbbc3cc92986d0a2f33dd0","isMergeCommit":false,"messageTitle":"Automated Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":0}}}]},{"date":"2024-01-29","commitResults":[{"hash":"adebe94414075220c74b0b092fbbb624bf1b2208","isMergeCommit":false,"messageTitle":"Level- 7 Add TaskStorage","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":58,"deletions":2}}},{"hash":"e6a785590660d5478fa34289b80c1711308ff546","isMergeCommit":false,"messageTitle":"Level 7 Integrated File Saving into Duke","messageBody":"","tags":["Level-7-branch"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":7}}},{"hash":"71ab8ac43d89e4c82ed5facb577d3299090f78b8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-30","commitResults":[{"hash":"16a64eb032353dda1b10553a510c6805e38b7f4c","isMergeCommit":false,"messageTitle":"Level-8 branch","messageBody":"","tags":["Level-8-branch"],"fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":21}}},{"hash":"320d0c31c79e8a2323d1aaf6d690857e337a90fd","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"95d8aae67ab1f137007ced86e14ec3cb32436871","isMergeCommit":false,"messageTitle":"Use More OOP","messageBody":"","tags":["A-Packages","A-MoreOOP","A-More-OOP"],"fileTypesAndContributionMap":{"java":{"insertions":546,"deletions":220},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"06f8a9984acea68c9b288781782235a8ce7d65fe","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"51ed5034ac22f88733ea2c709e20648db73402d4","isMergeCommit":false,"messageTitle":"Add JUnit Tests","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":0}}}]},{"date":"2024-01-31","commitResults":[{"hash":"383b98d6efdcdfc2d680e9e2facaab84df49f746","isMergeCommit":false,"messageTitle":"Create a JAR File","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"727de669d6e1f63a1ee1c01a7cce0dbd6c349320","isMergeCommit":false,"messageTitle":"Add javadoc","messageBody":"","tags":["A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":1}}},{"hash":"263cec575b21064cac2813f608c42cf0dafdae1a","isMergeCommit":false,"messageTitle":"Add find feature","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":0}}},{"hash":"03050aa323f735f5e1f4f8d1af1292a69514d75c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-04","commitResults":[{"hash":"4661d9ad2337a7e18202d16d5d2e53ec305c7d52","isMergeCommit":false,"messageTitle":"Added GUI","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":1},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":257,"deletions":75}}},{"hash":"0cdf82269ad856b8df4fde7da29e42da0c74270f","isMergeCommit":false,"messageTitle":"A-Varags","messageBody":"","tags":["A-Varargs"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":7}}}]}]},"authorFileTypeContributionMap":{"chewbum":{"java":1008,"md":2,"fxml":35,"sh":0,"bat":1,"gradle":15,"txt":17}},"authorContributionVariance":{"chewbum":54919.906},"authorDisplayNameMap":{"chewbum":"CS2103-F08-1 CHEW..XUAN"}} diff --git a/chuahjiajie_ip_master/authorship.json b/chuahjiajie_ip_master/authorship.json index fa8f5163..711ff52f 100644 --- a/chuahjiajie_ip_master/authorship.json +++ b/chuahjiajie_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"# BalkanBot project template","lastModifiedDate":"2024-02-02"},{"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":"chuahjiajie"},"content":"3. After that, locate the `src/main/java/BalkanBot.java` file, right-click it, and choose `Run BalkanBot.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-02-02"},{"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":{"chuahjiajie":2,"-":22}},{"path":"src/main/java/BalkanBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"public class BalkanBot {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":" String line \u003d \"------------------------------------------\";","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":" Task[] listOfInputs \u003d new Task[100];","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":" int current \u003d 0;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":" String state \u003d \"Now you have \" + current + 1 + \" tasks in the list.\";","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":" Scanner input \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(\"I\u0027m Balkan Bot\\n\" + \"Jebem ti mat\");","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":" while(true) {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":" String command \u003d input.nextLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":" if(command.equals(\"bye\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(\"Јебаћу ти бабицу\");","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":" else if(command.equals(\"list\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":" StringBuilder listOutput \u003d new StringBuilder();","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":" for(int i \u003d 0; i \u003c listOfInputs.length; i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":" if(listOfInputs[i] \u003d\u003d null) {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":" listOutput.append(i + 1).append(\". \").append(listOfInputs[i].toString())","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":" .append(\"\\n\");","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(listOutput);","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"chuahjiajie"},"content":" else {","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"chuahjiajie"},"content":" String[] brokenCommand \u003d command.split(\"\\\\s+\");","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" String advancedCommand \u003d brokenCommand[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" if(advancedCommand.equals(\"mark\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" int index \u003d Integer.parseInt(brokenCommand[1]) - 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" listOfInputs[index].mark();","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(\"Dje si pizda materina! I\u0027ve marked this task as done:\" + \"\\n\" +","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" listOfInputs[index].toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":" else if(advancedCommand.equals(\"unmark\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"chuahjiajie"},"content":" int index \u003d Integer.parseInt(brokenCommand[1]) - 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"chuahjiajie"},"content":" listOfInputs[index].unmark();","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(\"Baga-mi-as pula, it\u0027s been undone\" + \"\\n\" +","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"chuahjiajie"},"content":" listOfInputs[index].toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" else if(advancedCommand.equals(\"todo\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":" String taskDescription \u003d Arrays.copyOfRange(brokenCommand, 1, brokenCommand.length - 1)","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" listOfInputs[current] \u003d new Task(command);","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"chuahjiajie"},"content":" current++;","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(\"Added: \" + command);","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"chuahjiajie"},"content":" else if(advancedCommand.equals(\"deadline\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"chuahjiajie"},"content":" else if(advancedCommand.equals(\"event\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"chuahjiajie"},"content":" else {","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"chuahjiajie"},"content":" listOfInputs[current] \u003d new Task(command);","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"chuahjiajie"},"content":" current++;","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(\"Added: \" + command);","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"chuahjiajie":77}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":" protected String by;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":" super(description);","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":" this.by \u003d by;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"chuahjiajie":14}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"public class Event extends Task {","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":" protected String from;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":" protected String to;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":" super(description);","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":" this.from \u003d from;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":" this.to \u003d to;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"chuahjiajie":16}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"public class Task {","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":" protected String description;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":" protected boolean isDone;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":" public Task(String description) {","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":" this.description \u003d description;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":" public void mark() {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":" public void unmark() {","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":" return \"[\" + getStatusIcon() + \"]\" + \" \" + description;","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"chuahjiajie":25}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"public class ToDo extends Task{","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":" public ToDo(String description, String by) {","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":" super(description);","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"chuahjiajie":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":"chuahjiajie"},"content":"java -classpath ..\\bin BalkanBot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-02"},{"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":{"chuahjiajie":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"# BalkanBot project template","lastModifiedDate":"2024-02-02"},{"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":"chuahjiajie"},"content":"3. After that, locate the `src/main/java/BalkanBot.java` file, right-click it, and choose `Run BalkanBot.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-02-02"},{"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":{"chuahjiajie":2,"-":22}},{"path":"src/main/java/BalkanBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":"public class BalkanBot {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":" private static final String line \u003d \"------------------------------------------\";","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":" public static void printComplexTask(Task[] arr, int current) {","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(\"Got it I\u0027ve now added this task:\");","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(arr[current - 1].toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(\"Now you have \" + current + \" task(s) in the list.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":" String line \u003d \"------------------------------------------\";","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":" Task[] listOfInputs \u003d new Task[100];","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":" int current \u003d 0;","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":" String state \u003d \"Now you have \" + current + 1 + \" tasks in the list.\";","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":" Scanner input \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(\"I\u0027m Balkan Bot\\n\" + \"Jebem ti mat\");","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":" while(true) {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":" String command \u003d input.nextLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":" if(command.equals(\"bye\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(\"Јебаћу ти бабицу\");","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"chuahjiajie"},"content":" else if(command.equals(\"list\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"chuahjiajie"},"content":" StringBuilder listOutput \u003d new StringBuilder();","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"chuahjiajie"},"content":" for(int i \u003d 0; i \u003c listOfInputs.length; i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"chuahjiajie"},"content":" if(listOfInputs[i] \u003d\u003d null) {","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"chuahjiajie"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"chuahjiajie"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"chuahjiajie"},"content":" listOutput.append(i + 1).append(\". \").append(listOfInputs[i].toString())","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"chuahjiajie"},"content":" .append(\"\\n\");","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(\"Here is your list of tasks:\");","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(listOutput);","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"chuahjiajie"},"content":" else {","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"chuahjiajie"},"content":" String[] brokenCommand \u003d command.split(\"\\\\s+\");","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"chuahjiajie"},"content":" String advancedCommand \u003d brokenCommand[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"chuahjiajie"},"content":" String[] details \u003d Arrays.copyOfRange(brokenCommand, 1, brokenCommand.length);","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"chuahjiajie"},"content":" switch (advancedCommand) {","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"chuahjiajie"},"content":" case \"mark\": {","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"chuahjiajie"},"content":" int index \u003d Integer.parseInt(brokenCommand[1]) - 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"chuahjiajie"},"content":" listOfInputs[index].mark();","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(\"Dje si pizda materina! I\u0027ve marked this task as done:\" + \"\\n\" +","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"chuahjiajie"},"content":" listOfInputs[index].toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"chuahjiajie"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"chuahjiajie"},"content":" case \"unmark\": {","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"chuahjiajie"},"content":" int index \u003d Integer.parseInt(brokenCommand[1]) - 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"chuahjiajie"},"content":" listOfInputs[index].unmark();","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(\"Baga-mi-as pula, it\u0027s been undone\" + \"\\n\" +","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"chuahjiajie"},"content":" listOfInputs[index].toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"chuahjiajie"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"chuahjiajie"},"content":" case \"todo\": {","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"chuahjiajie"},"content":" String taskDescription \u003d String.join(\" \", details);","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"chuahjiajie"},"content":" listOfInputs[current] \u003d new ToDo(taskDescription);","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"chuahjiajie"},"content":" current++;","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"chuahjiajie"},"content":" printComplexTask(listOfInputs, current);","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"chuahjiajie"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"chuahjiajie"},"content":" case \"deadline\": {","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"chuahjiajie"},"content":" StringBuilder taskDescription \u003d new StringBuilder();","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"chuahjiajie"},"content":" StringBuilder deadline \u003d new StringBuilder();","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"chuahjiajie"},"content":" boolean foundDeadline \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"chuahjiajie"},"content":" for (String currentString : details) {","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"chuahjiajie"},"content":" if (foundDeadline) {","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"chuahjiajie"},"content":" deadline.append(currentString).append(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"chuahjiajie"},"content":" } else if (currentString.charAt(0) \u003d\u003d \u0027/\u0027) {","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"chuahjiajie"},"content":" foundDeadline \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"chuahjiajie"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"chuahjiajie"},"content":" taskDescription.append(currentString).append(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"chuahjiajie"},"content":" listOfInputs[current] \u003d new Deadline(taskDescription.toString(), deadline.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"chuahjiajie"},"content":" current++;","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"chuahjiajie"},"content":" printComplexTask(listOfInputs, current);","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"chuahjiajie"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"chuahjiajie"},"content":" case \"event\": {","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"chuahjiajie"},"content":" StringBuilder taskDescription \u003d new StringBuilder();","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"chuahjiajie"},"content":" StringBuilder from \u003d new StringBuilder();","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"chuahjiajie"},"content":" StringBuilder to \u003d new StringBuilder();","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"chuahjiajie"},"content":" boolean foundFrom \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"chuahjiajie"},"content":" boolean foundTo \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"chuahjiajie"},"content":" for (String currentString : details) {","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"chuahjiajie"},"content":" if (foundTo) {","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"chuahjiajie"},"content":" to.append(currentString).append(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"chuahjiajie"},"content":" } else if (foundFrom) {","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"chuahjiajie"},"content":" if (currentString.charAt(0) \u003d\u003d \u0027/\u0027) {","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"chuahjiajie"},"content":" foundTo \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":106,"author":{"gitId":"chuahjiajie"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":107,"author":{"gitId":"chuahjiajie"},"content":" from.append(currentString).append(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"chuahjiajie"},"content":" } else if (currentString.charAt(0) \u003d\u003d \u0027/\u0027) {","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"chuahjiajie"},"content":" foundFrom \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":111,"author":{"gitId":"chuahjiajie"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"chuahjiajie"},"content":" taskDescription.append(currentString).append(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":113,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"chuahjiajie"},"content":" listOfInputs[current] \u003d new Event(taskDescription.toString(), from.toString(), to.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"chuahjiajie"},"content":" current++;","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"chuahjiajie"},"content":" printComplexTask(listOfInputs, current);","lastModifiedDate":"2024-02-06"},{"lineNumber":118,"author":{"gitId":"chuahjiajie"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":119,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"chuahjiajie"},"content":" default:","lastModifiedDate":"2024-02-06"},{"lineNumber":121,"author":{"gitId":"chuahjiajie"},"content":" listOfInputs[current] \u003d new Task(command);","lastModifiedDate":"2024-02-02"},{"lineNumber":122,"author":{"gitId":"chuahjiajie"},"content":" current++;","lastModifiedDate":"2024-02-02"},{"lineNumber":123,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":124,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(\"Added: \" + command);","lastModifiedDate":"2024-02-02"},{"lineNumber":125,"author":{"gitId":"chuahjiajie"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":126,"author":{"gitId":"chuahjiajie"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":127,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":128,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":129,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":130,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":131,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"chuahjiajie":131}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":" protected String by;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":" super(description);","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":" this.by \u003d cleanWhiteSpace(by);","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"chuahjiajie":14}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"public class Event extends Task {","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":" protected String from;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":" protected String to;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":" super(description);","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":" this.from \u003d cleanWhiteSpace(from);","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":" this.to \u003d cleanWhiteSpace(to);","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"chuahjiajie":16}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"public class Task {","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":" protected String description;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":" protected boolean isDone;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":" public Task(String description) {","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":" this.description \u003d cleanWhiteSpace(description);","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"chuahjiajie"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"chuahjiajie"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"chuahjiajie"},"content":" public void mark() {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"chuahjiajie"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"chuahjiajie"},"content":" public void unmark() {","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"chuahjiajie"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"chuahjiajie"},"content":" public String cleanWhiteSpace(String word) {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"chuahjiajie"},"content":" if (word.charAt(word.length() - 1) \u003d\u003d \u0027 \u0027) {","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"chuahjiajie"},"content":" return word.substring(0, word.length() - 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"chuahjiajie"},"content":" else {","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"chuahjiajie"},"content":" return word;","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"chuahjiajie"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"chuahjiajie"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"chuahjiajie"},"content":" return \"[\" + getStatusIcon() + \"]\" + \" \" + description;","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"chuahjiajie":34}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"chuahjiajie"},"content":"public class ToDo extends Task{","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"chuahjiajie"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"chuahjiajie"},"content":" super(description);","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"chuahjiajie"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"chuahjiajie"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"chuahjiajie"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"chuahjiajie"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"chuahjiajie"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"chuahjiajie":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":"chuahjiajie"},"content":"java -classpath ..\\bin BalkanBot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-02"},{"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":{"chuahjiajie":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":"chuahjiajie"},"content":"java -classpath ../bin BalkanBot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-07"},{"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":{"chuahjiajie":1,"-":37}}] diff --git a/chuahjiajie_ip_master/commits.json b/chuahjiajie_ip_master/commits.json index fa8e2b64..2c2a6a59 100644 --- a/chuahjiajie_ip_master/commits.json +++ b/chuahjiajie_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"chuahjiajie":[{"date":"2024-01-31","commitResults":[{"hash":"f3e33adc0920d5b92735e21d9729ad4613262b94","isMergeCommit":false,"messageTitle":"Made changes according to \"Level 0\" - Changed name, added a greeting and an exit.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10}}}]},{"date":"2024-02-01","commitResults":[{"hash":"b66614d2395b8a3c366513bdb04ae6cbebad2743","isMergeCommit":false,"messageTitle":"Level-1 Added Echo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"c9774a0c3dc1aaeb379a5dd4a2372fe0f1ee283f","isMergeCommit":false,"messageTitle":"Level-1 Added echo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":3}}},{"hash":"688793ef4516631af9ef85e21969fde0c6aee73f","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"075aeea41d7b791789a26510e7da76da07e10133","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"9d96dc3d63060bd425c6cb768e18a706d2b07ee9","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"011781019b3be08642d619c9c665ee71cf0033f0","isMergeCommit":false,"messageTitle":"Ai Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"30a9783382648e73fafcff7008a006a2ed2cebb8","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"701d2513ebccc40a420b834d21faa6ac75ee4fce","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]},{"date":"2024-02-02","commitResults":[{"hash":"b26f542243b5123bdd70566485af4b1826cd1ed6","isMergeCommit":true,"messageTitle":"Merge commit \u0027701d2513ebccc40a420b834d21faa6ac75ee4fce\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/OedipusRex.java\n","fileTypesAndContributionMap":{}},{"hash":"69290a28501e4e6e9fcb41f104ae7844760afa6f","isMergeCommit":false,"messageTitle":"level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"248839391f0937ba88a8ff10497e7964fe4c5ec5","isMergeCommit":false,"messageTitle":"level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"4e83938b4ed5f4a5a03330fa59240e2bee6d498f","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"be3dc7efa6fa12702082eba2fba363fa7da92752","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"920d8d1b753c6ec9e24f3d53e06276384e563d80","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"255a348250c26eb2ec42150de4a2e22b77f3066c","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"aed4f9dc44d40063a5b08213c3d9ff0a3ea3b21e","isMergeCommit":false,"messageTitle":"A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"7e286c3a2b0193721b0e2074423bce6141d8cc04","isMergeCommit":false,"messageTitle":"A-JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"6cb4d7d97956ba96c3158945800fb01ed32bf4f1","isMergeCommit":false,"messageTitle":"A-CodingStandard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"d4fc07dcd449a4f628573d0a1d0dc4efdbc4a668","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"7214295117947d7d198663882318ad58a4c02cfc","isMergeCommit":false,"messageTitle":"Add features \"Add\" and \"List\"","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":20}}},{"hash":"92591410470700c94138aad488dcd8d186ea2ce2","isMergeCommit":false,"messageTitle":"Add feature \"Mark as Done\"","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":44},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"1f6a1e7daec0467846088a0cedbe9d1273fa90af","isMergeCommit":false,"messageTitle":"Add partial changes for \"ToDo, Deadline, Events\" feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":6}}}]}]},"authorFileTypeContributionMap":{"chuahjiajie":{"java":141,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":0}},"authorContributionVariance":{"chuahjiajie":4311.529},"authorDisplayNameMap":{"chuahjiajie":"CS2103T-W11-2 CHUA.. JIE"}} +{"authorDailyContributionsMap":{"chuahjiajie":[{"date":"2024-01-31","commitResults":[{"hash":"f3e33adc0920d5b92735e21d9729ad4613262b94","isMergeCommit":false,"messageTitle":"Made changes according to \"Level 0\" - Changed name, added a greeting and an exit.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":10}}}]},{"date":"2024-02-01","commitResults":[{"hash":"b66614d2395b8a3c366513bdb04ae6cbebad2743","isMergeCommit":false,"messageTitle":"Level-1 Added Echo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":2}}},{"hash":"c9774a0c3dc1aaeb379a5dd4a2372fe0f1ee283f","isMergeCommit":false,"messageTitle":"Level-1 Added echo","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":3}}},{"hash":"688793ef4516631af9ef85e21969fde0c6aee73f","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"075aeea41d7b791789a26510e7da76da07e10133","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"9d96dc3d63060bd425c6cb768e18a706d2b07ee9","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"011781019b3be08642d619c9c665ee71cf0033f0","isMergeCommit":false,"messageTitle":"Ai Testing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"30a9783382648e73fafcff7008a006a2ed2cebb8","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"701d2513ebccc40a420b834d21faa6ac75ee4fce","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}}]},{"date":"2024-02-02","commitResults":[{"hash":"b26f542243b5123bdd70566485af4b1826cd1ed6","isMergeCommit":true,"messageTitle":"Merge commit \u0027701d2513ebccc40a420b834d21faa6ac75ee4fce\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/OedipusRex.java\n","fileTypesAndContributionMap":{}},{"hash":"69290a28501e4e6e9fcb41f104ae7844760afa6f","isMergeCommit":false,"messageTitle":"level-7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"248839391f0937ba88a8ff10497e7964fe4c5ec5","isMergeCommit":false,"messageTitle":"level-8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"4e83938b4ed5f4a5a03330fa59240e2bee6d498f","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"be3dc7efa6fa12702082eba2fba363fa7da92752","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"920d8d1b753c6ec9e24f3d53e06276384e563d80","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"255a348250c26eb2ec42150de4a2e22b77f3066c","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"aed4f9dc44d40063a5b08213c3d9ff0a3ea3b21e","isMergeCommit":false,"messageTitle":"A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"7e286c3a2b0193721b0e2074423bce6141d8cc04","isMergeCommit":false,"messageTitle":"A-JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"6cb4d7d97956ba96c3158945800fb01ed32bf4f1","isMergeCommit":false,"messageTitle":"A-CodingStandard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"d4fc07dcd449a4f628573d0a1d0dc4efdbc4a668","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"7214295117947d7d198663882318ad58a4c02cfc","isMergeCommit":false,"messageTitle":"Add features \"Add\" and \"List\"","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":20}}},{"hash":"92591410470700c94138aad488dcd8d186ea2ce2","isMergeCommit":false,"messageTitle":"Add feature \"Mark as Done\"","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":44},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"1f6a1e7daec0467846088a0cedbe9d1273fa90af","isMergeCommit":false,"messageTitle":"Add partial changes for \"ToDo, Deadline, Events\" feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":6}}}]},{"date":"2024-02-06","commitResults":[{"hash":"9b648f2423671ccfb08dd75a0f2c9a49c56f3b3c","isMergeCommit":false,"messageTitle":"Add Level-4 features \"ToDos, Events, Deadlines\"","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":37}}}]},{"date":"2024-02-07","commitResults":[{"hash":"97b3dd3733da4787e032f8866d0ede12c1dd0997","isMergeCommit":false,"messageTitle":"Add Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"sh":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"chuahjiajie":{"java":204,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":0}},"authorContributionVariance":{"chuahjiajie":3984.8274},"authorDisplayNameMap":{"chuahjiajie":"CS2103T-W11-2 CHUA.. JIE"}} diff --git a/delishad21_ip_master/authorship.json b/delishad21_ip_master/authorship.json index 6b99326b..1b7c4571 100644 --- a/delishad21_ip_master/authorship.json +++ b/delishad21_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":"delishad21"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-03"},{"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":"delishad21"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"run {","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":"checkstyle {","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"delishad21":21,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import duke.commands.Command;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.NoSuchCommandException;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskCreationException;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskModificationException;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"import duke.utils.Parser;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"import duke.utils.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"import duke.utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" * This class implements the functionality of the Duke bot.","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" * @version 0.1","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" private Storage storage;","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" private boolean isRunning;","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" * Initialises Duke object with an empty tasklist and empty storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" public Duke() {","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" this.storage \u003d null;","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" this.isRunning \u003d true;","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" * Returns whether the Duke bot is still running.","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" * @return running state of Duke.","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" public boolean isRunning() {","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" return this.isRunning;","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" * Loads filePath into a storage object for loading and saving files.","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" * @param filePath Path for file to be saved and loaded from.","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" * @return Status of loading filepath.","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" public String loadSave(String filePath) {","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" if (isRunning) {","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" this.tasks \u003d storage.readSaveData();","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" return tasks.size() + \" Tasks loaded from save\";","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" return \"Error reading file: \" + e.getMessage() + \"\\nMaking new task list\";","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" return \"Save file could not be generated: \" + e.getMessage() + \"\\nMaking new task list\";","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":" return \"Duke is not running\";","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":" * Parses user input into commands, executes them and returns bot response.","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":" * @param input User input.","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":" * @return Response from bot.","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" public String getResponse(String input) {","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":" if (isRunning) {","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"delishad21"},"content":" Command c \u003d Parser.parse(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"delishad21"},"content":" String response \u003d c.execute(tasks, storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"delishad21"},"content":" if (storage !\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"delishad21"},"content":" storage.saveTodoData(tasks);","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"delishad21"},"content":" if (c.isExitCommand()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":81,"author":{"gitId":"delishad21"},"content":" this.isRunning \u003d false;","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"delishad21"},"content":" return response;","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"delishad21"},"content":" } catch (NoSuchCommandException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"delishad21"},"content":" return e.getMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"delishad21"},"content":" } catch (TaskCreationException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"delishad21"},"content":" return \"Error Creating Task: \" + e.getMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"delishad21"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"delishad21"},"content":" return \"Error parsing datetime: \" + e.getMessage()","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"delishad21"},"content":" + \"\\nUse the format \\\"DD/MM/YYYY, HH:MM\\\" to enter date and time.\";","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"delishad21"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"delishad21"},"content":" return e.getMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"delishad21"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"delishad21"},"content":" return \"Invalid selection for marking or deletion: \" + e;","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"delishad21"},"content":" } catch (TaskModificationException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"delishad21"},"content":" return \"Error Modifying Task: \" + e.getMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"delishad21"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"delishad21"},"content":" return e.getMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"delishad21"},"content":" return \"Duke is not running\";","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"delishad21":100,"-":3}},{"path":"src/main/java/duke/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import duke.ui.Main;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"public class Launcher {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" * Launches the bot.","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"delishad21":18}},{"path":"src/main/java/duke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskCreationException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskModificationException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import duke.utils.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"import duke.utils.TaskList;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" * Abstact class that implements commands, used for the control flow of the bot.","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" private boolean isExit;","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" * Creates a command object.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" * @param isExit for determining if the command leads to an exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" public Command(boolean isExit) {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" this.isExit \u003d isExit;","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" * Returns if the command is an exit command","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" * @return boolean to indicate if the command is exiting","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" public boolean isExitCommand() {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" return this.isExit;","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" * Executes command, left as abstract for inheriting classes to implement.","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" * @param tasks the current list of tasks","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" * @param ui Ui object used by bot for printing information","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" * @param storage Storage object with save file.","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" * @throws TaskCreationException","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" * @throws DateTimeParseException","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" * @throws IndexOutOfBoundsException","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" * @throws TaskModificationException","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" * @throws NumberFormatException","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" * @throws IOException","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" public abstract String execute(TaskList tasks, Storage storage)","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" throws TaskCreationException, DateTimeParseException, IndexOutOfBoundsException,","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" TaskModificationException, NumberFormatException, IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":56}},{"path":"src/main/java/duke/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import duke.utils.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import duke.utils.TaskList;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":" * This class implements the exit command that leads to the exit of the bot when executed.","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" * Creates an exit command, sets isExit to true.","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" public ExitCommand() {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" super(true);","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" * Executes exit command, saves data into save file using storage object.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" * @param tasks the current list of tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" * @param ui Ui object used by bot for printing information.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" * @param storage Storage object with save file.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" public String execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" if (storage \u003d\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" return \"Data not saved: Storage initialisation not sucessful\";","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" return storage.saveTodoData(tasks);","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" return \"Data not saved: \" + e.getMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":42}},{"path":"src/main/java/duke/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import duke.utils.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import duke.utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":" * This class implements the find Command, when executed, it searches for tasks matching user input in the","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":" * given TaskList.","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" private String input;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" * Creates a find command object to find tasks in tasklist based on matching string.","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" * @param input string to be matched to task.","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" public FindCommand(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" super(false);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" * Executes the find command, finds item in the TaskList provided.","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" * @param tasks the current list of tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" * @param ui Ui object used by bot for printing information.","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" * @param storage Storage object with save file.","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" public String execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" String toFind \u003d input.substring(5).trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" String foundtasks \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" for (int i \u003d 1; i \u003c\u003d tasks.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" if (task.getDescription().contains(toFind)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" foundtasks +\u003d i + \".\" + task + \"\\n\";","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" return foundtasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"delishad21":49}},{"path":"src/main/java/duke/commands/GenerateTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskCreationException;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"import duke.utils.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"import duke.utils.TaskList;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" * This class implements a command that generates tasks based on TaskType.","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"public class GenerateTaskCommand extends Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" * Enum for different Task types.","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" public static enum TaskType { TODO, DEADLINE, EVENT }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" private TaskType taskType;","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" private String input;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" * Creates GenerateTaskCommand, basic constructor that takes in the type of task and the user input.","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" * @param taskType The type of task to be generated based on the enum TaskType.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" * @param input user input to be parsed.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" public GenerateTaskCommand(TaskType taskType, String input) {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" super(false);","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" * Executes task generation command, generates task based on user input and taskType.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" * @param tasks the current list of tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" * @param ui Ui object used by bot for printing information.","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" * @param storage Storage object with save file.","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" public String execute(TaskList tasks, Storage storage)","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" throws TaskCreationException, DateTimeParseException {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" switch (this.taskType) {","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" case TODO:","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" Todo t \u003d Todo.todoParse(false, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" return \"Todo Task added!\\n\" + t.toString() + \"\\n\"","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" + \"You now have \" + tasks.size() + \" tasks in the list.\";","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" Deadline d \u003d Deadline.deadlineParse(false, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" tasks.add(d);","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" return \"Deadline Task added!\\n\" + d.toString() + \"\\n\"","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" + \"You now have \" + tasks.size() + \" tasks in the list.\";","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" case EVENT:","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" Event e \u003d Event.eventParse(false, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" tasks.add(e);","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" return \"Event Task added!\\n\" + e.toString() + \"\\n\"","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":" + \"You now have \" + tasks.size() + \" tasks in the list.\";","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":" default:","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":" return \"Error generating task: No such task type\";","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":67}},{"path":"src/main/java/duke/commands/ListTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import duke.utils.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import duke.utils.TaskList;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":" * This class implements the commmand for listing tasks in a tasklist.","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"public class ListTaskCommand extends Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" * Creates a ListTaskCommand, sets isExit to false.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" public ListTaskCommand() {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" super(false);","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" * Executes list task command, uses ui to print out tasks in provided TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" * @param tasks the current list of tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" * @param ui Ui object used by bot for printing information.","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" * @param storage Storage object with save file.","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" public String execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" return tasks.toString();","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":29}},{"path":"src/main/java/duke/commands/ModifyTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskModificationException;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import duke.utils.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import duke.utils.TaskList;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":" * This class implements the modify task command that modifies tasks in the bot tasklist.","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"public class ModifyTaskCommand extends Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" * Enum used for classifying task modification types","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" public enum ModificationTypes { MARK, UNMARK, DELETE }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" private ModificationTypes modType;","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" private String indexInput;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" * Creates ModifyTaskCommand, takes in type of modificaiton and the user input for index to be modified.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" * @param modType Modification type based on enum ModificationTypes.","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" * @param indexInput user input to be parsed into index.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" public ModifyTaskCommand(ModificationTypes modType, String indexInput) {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" super(false);","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" this.modType \u003d modType;","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" this.indexInput \u003d indexInput;","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" * Executes modify task command, modifies tasks in list based on index and type.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" * @param tasks the current list of tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" * @param ui Ui object used by bot for printing information.","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" * @param storage Storage object with save file.","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" public String execute(TaskList tasks, Storage storage)","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" throws IndexOutOfBoundsException, NumberFormatException, TaskModificationException {","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" String[] inputSplit \u003d indexInput.split(\" \");","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" if (inputSplit.length \u003c 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" throw new TaskModificationException(\"Input is missing task number\\nList is of current length: \"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" + tasks.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" int index \u003d Integer.parseInt(indexInput.split(\" \")[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" if (index \u003c 1 || index \u003e tasks.size()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" throw new IndexOutOfBoundsException(\"Invalid Index \" + index","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" + \" for current list\\nList is of current length: \"","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" + tasks.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" switch (this.modType) {","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" case MARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" Task t1 \u003d tasks.get(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":" t1.doTask();","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":" return \"Good job on finishing your task!:\\n \" + t1;","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":" case UNMARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":" Task t2 \u003d tasks.get(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" t2.undoTask();","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":" return \"I\u0027ve marked this task as undone:\\n \" + t2;","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":" case DELETE:","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":" Task t3 \u003d tasks.get(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":" tasks.remove(t3);","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" return \"I\u0027ve removed this task:\\n \" + t3;","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" default:","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":" return \"Error Modifying Task: No such modification type\";","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":76}},{"path":"src/main/java/duke/exceptions/NoSuchCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":" * This class implements an excpetion for when the bot recieves an invalid command","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"public class NoSuchCommandException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" * Creates a NoSuchCommandException, used when user inputs an invalid command.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" * @param command The invaild command.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" public NoSuchCommandException(String command) {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" super(\"\\\"\" + command + \"\\\" is not within my capabilities\");","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"delishad21":19}},{"path":"src/main/java/duke/exceptions/TaskCreationException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":" * This class implements an excpetion for when the bot is unable to create a task.","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"public class TaskCreationException extends Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" * Creates a TaskCreationException, thrown when a user task is unable to be created.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" * @param errorMsg Reason for task creation failure.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" public TaskCreationException(String errorMsg) {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" super(errorMsg);","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":19}},{"path":"src/main/java/duke/exceptions/TaskModificationException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":" * This class implements an excpetion for when the bot fails to modify a task.","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"public class TaskModificationException extends Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" * Creates a TaskModificationException, thrown when user tries to modify a task but fails to.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" * @param errorMsg Reason for task modification failure.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" public TaskModificationException(String errorMsg) {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" super(errorMsg);","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":18}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskCreationException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import duke.utils.Parser;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" * This class implements the Deadline task type for the bot.","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" * Creates Deadline object.","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" * @param isDone Marks if task is completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" * @param description Description of the task.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" * @param deadline Datetime value for the deadline of the task.","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" public Deadline(boolean isDone, String description, LocalDateTime deadline) {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" super(isDone, description);","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" * Returns a Deadline object by taking in user input and parsing it.","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" * @param isDone Marks if task is completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" * @param input User input to be parsed.","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" * @return Deadline object.","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" * @throws TaskCreationException","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" * @throws DateTimeParseException","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" public static Deadline deadlineParse(boolean isDone, String input)","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" throws TaskCreationException, DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" if (!input.contains(\"/by\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" throw new TaskCreationException(\"Missing parameters: /by\");","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" String description \u003d input.substring(8, input.indexOf(\"/by\")).trim();","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" String deadlineString \u003d input.substring(input.indexOf(\"/by\") + 3).trim();","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" // Check if inputs are blank","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" String missingInfo \u003d \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" missingInfo \u003d missingInfo + \"\\\"description\\\" \";","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" if (deadlineString.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" missingInfo \u003d missingInfo + \"\\\"by\\\" \";","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" if (!missingInfo.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" throw new TaskCreationException(\"Missing information: \" + missingInfo);","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" LocalDateTime deadlineDateTime \u003d LocalDateTime.parse(deadlineString, Parser.INPUT_DT_FORMATTER);","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" Deadline d \u003d new Deadline(isDone, description, deadlineDateTime);","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" return d;","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" * Returns Deadline as a viewable String.","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":" * @return String","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" return \"[D]\" + super.toString() + \" (by: \" + deadline.format(Parser.OUTPUT_DT_FORMATTER) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"delishad21"},"content":" * Coverts Deadline into a String for saving in save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"delishad21"},"content":" * @return String","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"delishad21"},"content":" public String toSave() {","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"delishad21"},"content":" return \"[D]|\" + super.toSave() + \"|\" + deadline.format(Parser.INPUT_DT_FORMATTER);","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"delishad21":85}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskCreationException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import duke.utils.Parser;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" * This class implements the Event task type for the bot.","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" * Creates Event object","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" * @param isDone Marks if task is completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" * @param description Description of the task.","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" * @param start Datetime value marking the start of the event.","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" * @param end Datetime value for marking the end of the event.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" public Event(boolean isDone, String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" super(isDone, description);","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" * Returns a deadline object by taking in user input and parsing it.","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" * @param isDone Marks if task is completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" * @param input User input to be parsed.","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" * @return Event object.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" * @throws TaskCreationException","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" * @throws DateTimeParseException","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" public static Event eventParse(boolean isDone, String input)","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" throws TaskCreationException, DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" // Check missing parameters","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" String missingParams \u003d \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" if (!input.contains(\"/from\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" missingParams \u003d missingParams + \"/from \";","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" if (!input.contains(\"/to\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" missingParams \u003d missingParams + \"/to \";","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" if (!missingParams.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" throw new TaskCreationException(\" Missing parameters: \" + missingParams);","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" // Check order of parameters","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" if (input.indexOf(\"/from\") \u003e input.indexOf(\"/to\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" throw new TaskCreationException(\"Bad order of parameters, correct order should be: /from, /to\");","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" String description \u003d input.substring(5, input.indexOf(\"/from\")).trim();","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":" String startString \u003d input.substring(input.indexOf(\"/from\") + 5, input.indexOf(\"/to\")).trim();","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":" String endString \u003d input.substring(input.indexOf(\"/to\") + 3).trim();","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" // Check if inputs are blank","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":" String missingInfo \u003d \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":" missingInfo \u003d missingInfo + \"\\\"description\\\" \";","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" if (startString.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":" missingInfo \u003d missingInfo + \"\\\"from\\\" \";","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"delishad21"},"content":" if (endString.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"delishad21"},"content":" missingInfo \u003d missingInfo + \"\\\"to\\\" \";","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"delishad21"},"content":" if (!missingInfo.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"delishad21"},"content":" throw new TaskCreationException(\"Missing information: \" + missingInfo);","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"delishad21"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(startString, Parser.INPUT_DT_FORMATTER);","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"delishad21"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(endString, Parser.INPUT_DT_FORMATTER);","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"delishad21"},"content":" Event e \u003d new Event(isDone, description, startDateTime, endDateTime);","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"delishad21"},"content":" return e;","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"delishad21"},"content":" * Returns Event as a viewable String.","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"delishad21"},"content":" * @return String","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"delishad21"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"delishad21"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start.format(Parser.OUTPUT_DT_FORMATTER)","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"delishad21"},"content":" + \" to: \" + end.format(Parser.OUTPUT_DT_FORMATTER) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"delishad21"},"content":" * Converts Event into a String for saving in save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"delishad21"},"content":" * @return String","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"delishad21"},"content":" public String toSave() {","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"delishad21"},"content":" return \"[E]|\" + super.toSave() + \"|\" + start.format(Parser.INPUT_DT_FORMATTER)","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"delishad21"},"content":" + \"|\" + end.format(Parser.INPUT_DT_FORMATTER);","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"delishad21":111}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":" * This class implements functionality for Tasks in the bot.","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":" private String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" * Creates Task object.","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" * @param isDone Marks if task is completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" * @param description Description of the task.","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" public Task(boolean isDone, String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" * Marks task as done by setting isDone to true.","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" public void doTask() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" * Marks task as undone by setting isDone to false","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" public void undoTask() {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" * Prints task marker, private method used by toString.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" * @return marker depending on whether this task is completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" private String statusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" return isDone ? \"X\" : \" \";","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" * Gets description value.","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" * @return description","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" return this.description;","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" * Returns Task as a viewable String","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" * @return String","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":" return \"[\" + this.statusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" * Converts Task into a String for saving in save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":" * @return String","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":" public String toSave() {","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" return \"[\" + this.statusIcon() + \"]|\" + this.description;","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"delishad21":73}},{"path":"src/main/java/duke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskCreationException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":" * This class inplements the Todo task type for the bot.","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" * Creates Todo object.","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" * @param isDone Marks if task is completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" * @param description Description of the task.","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" public Todo(boolean isDone, String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" super(isDone, description);","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" * Returns a Todo object by taking in user input and parsing it.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" * @param isDone Marks if task is completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" * @param input User input to be parsed.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" * @return Todo object.","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" * @throws TaskCreationException","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" public static Todo todoParse(boolean isDone, String input) throws TaskCreationException {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" String[] stringSplit \u003d input.split(\" \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" if (stringSplit.length \u003d\u003d 1 || stringSplit[1].equals(\"\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" throw new TaskCreationException(\"Missing Information: \\\"description\\\"\" );","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" Todo t \u003d new Todo(false, stringSplit[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" return t;","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" * Returns Todo as a viewable String.","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" * @return String","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" * Method for converting Todo into a String for saving in save file.","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" * @return String","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" public String toSave() {","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" return \"[T]|\" + super.toSave();","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"delishad21":59}},{"path":"src/main/java/duke/ui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" * containing text from the speaker.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" private Label dialog;","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" * Creates a DialogBox for user and bot interactions.","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" * @param text User input or bot response.","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" * @param img Image of user or bot.","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" private void flip() {","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" dialog.setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" * Creates a DialogBox that is right justified.","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":" * @param text User input or bot response.","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":" * @param img Image of user or bot.","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" * Creates a DialogBox that is left justified.","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":" * @param text User input or bot response.","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"delishad21"},"content":" * @param img Image of user or bot.","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"delishad21"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"delishad21"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"delishad21"},"content":" db.flip();","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"delishad21"},"content":" return db;","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"delishad21":81}},{"path":"src/main/java/duke/ui/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import duke.Duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" * Class that implements the starting up of the main User Interface","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" private Duke duke \u003d new Duke();","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" * Starts the bot by generating Javafx items for the user interface and linking a Duke object.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" System.err.println(fxmlLoader.getLocation().toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" stage.show();","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"delishad21":36}},{"path":"src/main/java/duke/ui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import duke.Duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import javafx.animation.PauseTransition;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import javafx.application.Platform;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"import javafx.util.Duration;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" * Class that implements the Main Window of the bot","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" private Duke duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaUser.png\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaDuke.png\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" private String name \u003d \"CBBW\";","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" private String startupMessage \u003d \"Hello! I\u0027m \" + name + \"\\nWhat can I do for you?\";","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" private String goodbyeMessage \u003d \"See you again soon!\";","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" * Initializations for the main window","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" public void initialize() {","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" * Initalises the Duke bot used together with the interface to provide functionality and responses.","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" duke \u003d d;","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" String loadStatus \u003d d.loadSave(\"data/data.txt\");","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" DialogBox.getDukeDialog(loadStatus, dukeImage),","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" DialogBox.getDukeDialog(startupMessage, dukeImage)","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" );","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" * and then appends them to the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":" );","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":" userInput.clear();","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" if (!duke.isRunning()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":" DialogBox.getDukeDialog(goodbyeMessage, dukeImage)","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"delishad21"},"content":" );","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"delishad21"},"content":" PauseTransition pause \u003d new PauseTransition(Duration.seconds(1));","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"delishad21"},"content":" pause.setOnFinished(event -\u003e Platform.exit());","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"delishad21"},"content":" pause.play();","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"delishad21":80}},{"path":"src/main/java/duke/utils/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.util.Locale;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import duke.commands.Command;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import duke.commands.ExitCommand;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import duke.commands.FindCommand;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import duke.commands.GenerateTaskCommand;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"import duke.commands.ListTaskCommand;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"import duke.commands.ModifyTaskCommand;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.NoSuchCommandException;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" * This class implements the functionality for Parsing commands input into the bot.","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"public class Parser {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" public static final DateTimeFormatter INPUT_DT_FORMATTER \u003d","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" DateTimeFormatter.ofPattern(\"dd/MM/yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" public static final DateTimeFormatter OUTPUT_DT_FORMATTER \u003d","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" DateTimeFormatter.ofPattern(\"dd MMMM yyyy, hh:mma\", Locale.ENGLISH);","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" * Parses user input and into the appropriate commands for the bot to execute.","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" * @param input","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" * @return Command","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" * @throws NoSuchCommandException","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" public static Command parse(String input) throws NoSuchCommandException {","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" String action \u003d input.split(\" \")[0].toLowerCase();","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" switch (action) {","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" case \"bye\":","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" return new ExitCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" case \"list\":","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" return new ListTaskCommand();","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" case \"find\":","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" return new FindCommand(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" case \"todo\":","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" return new GenerateTaskCommand(GenerateTaskCommand.TaskType.TODO, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" case \"event\":","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" return new GenerateTaskCommand(GenerateTaskCommand.TaskType.EVENT, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" return new GenerateTaskCommand(GenerateTaskCommand.TaskType.DEADLINE, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" case \"mark\":","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" return new ModifyTaskCommand(ModifyTaskCommand.ModificationTypes.MARK, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" return new ModifyTaskCommand(ModifyTaskCommand.ModificationTypes.UNMARK, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" case \"delete\":","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" return new ModifyTaskCommand(ModifyTaskCommand.ModificationTypes.DELETE, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" throw new NoSuchCommandException(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":61}},{"path":"src/main/java/duke/utils/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskCreationException;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" * This class implements the saving and reading of bot data into a text file.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":"public class Storage {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" private File f;","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" * Creates a Storage object, takes in a filepath for the file in which data","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" * should be saved.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" * @param filePath File to save data to and load data from.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" * @throws IOException","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" public Storage(String filePath) throws IOException {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" this.f \u003d new File(filePath);","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" checkAndCreateFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" * Checks and creates file based on filepath.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" * @throws IOException","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" private void checkAndCreateFile() throws IOException {","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" // Reading and creating data save file","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" // making data folder","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" if (!f.getParentFile().exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" if (!f.getParentFile().mkdir()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" throw new IOException(\"Unable to make directory\");","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" // making data file","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" if (!f.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" f.createNewFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" * Reads save data from save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" * @param ui Used for printing information.","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" * @return TaskList read from save data.","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" * @throws FileNotFoundException","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":" public TaskList readSaveData() throws FileNotFoundException {","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":" taskList.add(parseTaskFromSave(s.nextLine()));","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":" } catch (TaskCreationException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" System.out.println(\"Error in reading task: \" + e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"delishad21"},"content":" s.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"delishad21"},"content":" return taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"delishad21"},"content":" * Saves data from bot back to save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"delishad21"},"content":" * @param data The data from the bot.","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"delishad21"},"content":" * @param ui Used for printing information.","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"delishad21"},"content":" * @throws IOException","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"delishad21"},"content":" public String saveTodoData(TaskList data) throws IOException {","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"delishad21"},"content":" this.checkAndCreateFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"delishad21"},"content":" FileWriter fw \u003d new FileWriter(f);","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"delishad21"},"content":" String dataString \u003d \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"delishad21"},"content":" for (int i \u003d 1; i \u003c\u003d data.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"delishad21"},"content":" dataString \u003d dataString + data.get(i).toSave() + \"\\n\";","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"delishad21"},"content":" fw.write(dataString);","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"delishad21"},"content":" fw.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"delishad21"},"content":" return data.size() + \" tasks saved\";","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"delishad21"},"content":" * Parses individual line from save file into Tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"delishad21"},"content":" * @param task Each line read from save file.","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"delishad21"},"content":" * @return A Task object generated with information parsed from input.","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"delishad21"},"content":" * @throws TaskCreationException","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"delishad21"},"content":" private Task parseTaskFromSave(String task) throws TaskCreationException {","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"delishad21"},"content":" String[] taskSplit \u003d task.split(\"\\\\|\");","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"delishad21"},"content":" boolean isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"delishad21"},"content":" if (taskSplit[1].equals(\"[X]\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"delishad21"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"delishad21"},"content":" } else if (taskSplit[1].equals(\"[ ]\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"delishad21"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"delishad21"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"delishad21"},"content":" throw new TaskCreationException(\"Unable to determine if task (\" + task + \") is done or not\");","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"delishad21"},"content":" switch (taskSplit[0]) {","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"delishad21"},"content":" case \"[T]\":","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"delishad21"},"content":" return new Todo(isDone, taskSplit[2]);","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"delishad21"},"content":" case \"[D]\":","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"delishad21"},"content":" return new Deadline(isDone, taskSplit[2],","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"delishad21"},"content":" LocalDateTime.parse(taskSplit[3], Parser.INPUT_DT_FORMATTER));","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"delishad21"},"content":" case \"[E]\":","lastModifiedDate":"2024-01-27"},{"lineNumber":129,"author":{"gitId":"delishad21"},"content":" return new Event(isDone, taskSplit[2],","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"delishad21"},"content":" LocalDateTime.parse(taskSplit[3], Parser.INPUT_DT_FORMATTER),","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"delishad21"},"content":" LocalDateTime.parse(taskSplit[4], Parser.INPUT_DT_FORMATTER));","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"delishad21"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"delishad21"},"content":" throw new TaskCreationException(\"No such task: \" + taskSplit[0] + \" for \" + task);","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":137}},{"path":"src/main/java/duke/utils/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":" * This class implementions the functionality of a variable length list containg Task objects.","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"public class TaskList {","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" private ArrayList\u003cTask\u003e toDoList;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" * Creates a TaskList that contains an ArrayList.","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" public TaskList() {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" this.toDoList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" * Prints out all items in the TaskList.","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" * @param ui Used for printing.","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" public String toString() {","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" String tasklistString \u003d \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" for (int i \u003d 1; i \u003c\u003d toDoList.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" tasklistString +\u003d i + \".\" + toDoList.get(i - 1) + \"\\n\";","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" return tasklistString;","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" * Adds task to list.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" * @param t Task that is to be added to list.","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" public void add(Task t) {","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" this.toDoList.add(t);","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" * Removes task from list based on task input.","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" * @param t Task that is to be removed from list.","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" public void remove(Task t) {","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" this.toDoList.remove(t);","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" * Removes Task from list based on index.","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" * @param i Index of task to be removed from list.","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" public void remove(int i) {","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" this.toDoList.remove(i - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":" * Gets items from TaskList using index.","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":" * @param i Index of item to be retrieved.","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":" * @return Task retrieved from TaskList.","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":" public Task get(int i) {","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" return this.toDoList.get(i - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"delishad21"},"content":" * Gets current size of TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"delishad21"},"content":" * @return Size of TaskList as integer.","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"delishad21"},"content":" public int size() {","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"delishad21"},"content":" return this.toDoList.size();","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":83}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" minHeight\u003d\"-Infinity\" prefWidth\u003d\"400.0\" spacing\u003d\"15.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" \u003cLabel fx:id\u003d\"dialog\" alignment\u003d\"TOP_RIGHT\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"15.0\" right\u003d\"15.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"delishad21":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.ui.MainWindow\"\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"delishad21":19}},{"path":"src/test/java/duke/DukeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"public class DukeTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" public void FileGenerationTest() {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" String filePath \u003d \"data/help.txt\";","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" File file \u003d new File(\"data/help.txt\");","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" file.delete();","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" duke.loadSave(filePath);","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" assertTrue(file.exists());","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" file.delete();","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"delishad21":19}},{"path":"src/test/java/duke/utils/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import duke.commands.Command;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import duke.commands.ExitCommand;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"import duke.commands.GenerateTaskCommand;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"import duke.commands.ModifyTaskCommand;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.NoSuchCommandException;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" public void GenerateTodoTest() {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" Command c \u003d Parser.parse(\"todo task1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" assert (c instanceof GenerateTaskCommand);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" } catch (NoSuchCommandException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" public void GenerateDeadlineTest() {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" Command c \u003d Parser.parse(\"deadline task2 /by 12/11/2024, 13:00\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" assert (c instanceof GenerateTaskCommand);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" } catch (NoSuchCommandException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" public void GenerateModificationTest() {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" Command c \u003d Parser.parse(\"mark 2\");","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" assert (c instanceof ModifyTaskCommand);","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" } catch (NoSuchCommandException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" public void GenerateModificationTest2() {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" Command c \u003d Parser.parse(\"unmark 2\");","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" assert (c instanceof ModifyTaskCommand);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" } catch (NoSuchCommandException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" public void GenerateExitTest() {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" Command c \u003d Parser.parse(\"bye\");","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" assert (c instanceof ExitCommand);","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" } catch (NoSuchCommandException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" public void InvalidCommandTest() {","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":" Command c \u003d Parser.parse(\"rjksjrkr\");","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":" } catch (NoSuchCommandException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" return;","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"delishad21":76}},{"path":"src/test/java/duke/utils/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"import duke.Duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":"public class StorageTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" public void testStorageFileCreation() {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" File file \u003d new File(\"data/test.txt\");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" file.delete();","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" Storage s \u003d new Storage(\"data/test.txt\");","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" assertTrue(file.exists());","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" file.delete();","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" file.delete();","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" public void testStorageReading() {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" File file \u003d new File(\"data/test.txt\");","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" fw.write(\"[T]|[ ]|1\\n\" +","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" \"[D]|[X]|task2|12/11/2001, 16:00\\n\" +","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" \"[E]|[ ]|task 3|12/11/2001, 15:00|13/11/2001, 16:00\");","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" Storage s \u003d new Storage(\"data/test.txt\");","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" TaskList taskList \u003d s.readSaveData();","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" assertTrue(taskList.size() \u003d\u003d 3);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" assertTrue(taskList.get(1) instanceof Todo);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" assertTrue(taskList.get(2) instanceof Deadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" assertTrue(taskList.get(3) instanceof Event);","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" file.delete();","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"delishad21":58}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"todo feed dog","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"deadline assignment 2 /by jan 2","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"event prom night /from Jan 2 4pm /to Jan 2 6pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"mark 4","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"unmark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"mark skfjh","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"deadline assignment /by ","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"deadline assignment /by 2024","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"delishad21":16}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-03"},{"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":"delishad21"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" mainClass.set(\"duke.Launcher\")","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"run {","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":"checkstyle {","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"delishad21":22,"-":41}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import duke.commands.Command;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.NoSuchCommandException;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskCreationException;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskModificationException;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"import duke.utils.Parser;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"import duke.utils.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"import duke.utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" * This class implements the functionality of the Duke bot.","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" * @version 0.1","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" private Storage storage;","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" private boolean isRunning;","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" * Initialises Duke object with an empty tasklist and empty storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" public Duke() {","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" this.storage \u003d null;","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" this.isRunning \u003d true;","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" * Returns whether the Duke bot is still running.","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" * @return running state of Duke.","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" public boolean isRunning() {","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" return this.isRunning;","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" * Loads filePath into a storage object for loading and saving files.","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" * @param filePath Path for file to be saved and loaded from.","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" * @return Status of loading filepath.","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" public String loadSave(String filePath) {","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" if (isRunning) {","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" this.tasks \u003d storage.readSaveData();","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" return tasks.size() + \" Tasks loaded from save\";","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" return \"Error reading file: \" + e.getMessage() + \"\\nMaking new task list\";","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" return \"Save file could not be generated: \" + e.getMessage() + \"\\nMaking new task list\";","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":" return \"Duke is not running\";","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":" * Parses user input into commands, executes them and returns bot response.","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":" * @param input User input.","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":" * @return Response from bot.","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" public String getResponse(String input) {","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":" if (isRunning) {","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"delishad21"},"content":" Command c \u003d Parser.parse(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"delishad21"},"content":" String response \u003d c.execute(tasks, storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"delishad21"},"content":" if (storage !\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"delishad21"},"content":" storage.saveTodoData(tasks);","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"delishad21"},"content":" if (c.isExitCommand()) {","lastModifiedDate":"2024-02-04"},{"lineNumber":81,"author":{"gitId":"delishad21"},"content":" this.isRunning \u003d false;","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"delishad21"},"content":" return response;","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"delishad21"},"content":" } catch (NoSuchCommandException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"delishad21"},"content":" return e.getMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"delishad21"},"content":" } catch (TaskCreationException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"delishad21"},"content":" return \"Error Creating Task: \" + e.getMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"delishad21"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"delishad21"},"content":" return \"Error parsing datetime: \" + e.getMessage()","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"delishad21"},"content":" + \"\\nUse the format \\\"DD/MM/YYYY, HH:MM\\\" to enter date and time.\";","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"delishad21"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"delishad21"},"content":" return e.getMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"delishad21"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"delishad21"},"content":" return \"Invalid selection for marking or deletion: \" + e;","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"delishad21"},"content":" } catch (TaskModificationException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"delishad21"},"content":" return \"Error Modifying Task: \" + e.getMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"delishad21"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"delishad21"},"content":" return e.getMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":101,"author":{"gitId":"delishad21"},"content":" return \"Duke is not running\";","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":103,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"delishad21":100,"-":3}},{"path":"src/main/java/duke/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import duke.ui.Main;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"public class Launcher {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" * Launches the bot.","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"delishad21":18}},{"path":"src/main/java/duke/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskCreationException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskModificationException;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import duke.utils.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"import duke.utils.TaskList;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" * Abstact class that implements commands, used for the control flow of the bot.","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" private boolean isExit;","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" * Creates a command object.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" * @param isExit for determining if the command leads to an exit.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" public Command(boolean isExit) {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" this.isExit \u003d isExit;","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" * Returns if the command is an exit command","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" * @return boolean to indicate if the command is exiting","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" public boolean isExitCommand() {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" return this.isExit;","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" * Executes command, left as abstract for inheriting classes to implement.","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" * @param tasks the current list of tasks","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" * @param ui Ui object used by bot for printing information","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" * @param storage Storage object with save file.","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" * @throws TaskCreationException","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" * @throws DateTimeParseException","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" * @throws IndexOutOfBoundsException","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" * @throws TaskModificationException","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" * @throws NumberFormatException","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" * @throws IOException","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" public abstract String execute(TaskList tasks, Storage storage)","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" throws TaskCreationException, DateTimeParseException, IndexOutOfBoundsException,","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" TaskModificationException, NumberFormatException, IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":56}},{"path":"src/main/java/duke/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import duke.utils.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import duke.utils.TaskList;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":" * This class implements the exit command that leads to the exit of the bot when executed.","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" * Creates an exit command, sets isExit to true.","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" public ExitCommand() {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" super(true);","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" * Executes exit command, saves data into save file using storage object.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" * @param tasks the current list of tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" * @param ui Ui object used by bot for printing information.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" * @param storage Storage object with save file.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" public String execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" if (storage \u003d\u003d null) {","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" return \"Data not saved: Storage initialisation not sucessful\";","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" return storage.saveTodoData(tasks);","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" return \"Data not saved: \" + e.getMessage();","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":42}},{"path":"src/main/java/duke/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import duke.utils.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import duke.utils.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":" * This class implements the find Command, when executed, it searches for tasks matching user input in the","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":" * given TaskList.","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" private String input;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" * Creates a find command object to find tasks in tasklist based on matching string.","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" * @param input string to be matched to task.","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" public FindCommand(String input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" super(false);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" * Executes the find command, finds item in the TaskList provided.","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" * @param tasks the current list of tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" * @param ui Ui object used by bot for printing information.","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" * @param storage Storage object with save file.","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" public String execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" String toFind \u003d input.substring(5).trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" String foundtasks \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" for (int i \u003d 1; i \u003c\u003d tasks.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" Task task \u003d tasks.get(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" if (task.getDescription().contains(toFind)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" foundtasks +\u003d i + \".\" + task + \"\\n\";","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" return foundtasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"delishad21":49}},{"path":"src/main/java/duke/commands/GenerateTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskCreationException;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"import duke.utils.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"import duke.utils.TaskList;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" * This class implements a command that generates tasks based on TaskType.","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"public class GenerateTaskCommand extends Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" * Enum for different Task types.","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" public static enum TaskType { TODO, DEADLINE, EVENT }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" private TaskType taskType;","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" private String input;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" * Creates GenerateTaskCommand, basic constructor that takes in the type of task and the user input.","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" * @param taskType The type of task to be generated based on the enum TaskType.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" * @param input user input to be parsed.","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" public GenerateTaskCommand(TaskType taskType, String input) {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" super(false);","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" this.taskType \u003d taskType;","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" * Executes task generation command, generates task based on user input and taskType.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" * @param tasks the current list of tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" * @param ui Ui object used by bot for printing information.","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" * @param storage Storage object with save file.","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" public String execute(TaskList tasks, Storage storage)","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" throws TaskCreationException, DateTimeParseException {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" switch (this.taskType) {","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" case TODO:","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" Todo t \u003d Todo.todoParse(false, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" return \"Todo Task added!\\n\" + t.toString() + \"\\n\"","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" + \"You now have \" + tasks.size() + \" tasks in the list.\";","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" Deadline d \u003d Deadline.deadlineParse(false, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" tasks.add(d);","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" return \"Deadline Task added!\\n\" + d.toString() + \"\\n\"","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" + \"You now have \" + tasks.size() + \" tasks in the list.\";","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" case EVENT:","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" Event e \u003d Event.eventParse(false, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" tasks.add(e);","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" return \"Event Task added!\\n\" + e.toString() + \"\\n\"","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":" + \"You now have \" + tasks.size() + \" tasks in the list.\";","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":" default:","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":" return \"Error generating task: No such task type\";","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":67}},{"path":"src/main/java/duke/commands/ListTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import duke.utils.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import duke.utils.TaskList;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":" * This class implements the commmand for listing tasks in a tasklist.","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"public class ListTaskCommand extends Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" * Creates a ListTaskCommand, sets isExit to false.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" public ListTaskCommand() {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" super(false);","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" * Executes list task command, uses ui to print out tasks in provided TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" * @param tasks the current list of tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" * @param ui Ui object used by bot for printing information.","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" * @param storage Storage object with save file.","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" public String execute(TaskList tasks, Storage storage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" return tasks.toString();","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":29}},{"path":"src/main/java/duke/commands/ModifyTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.commands;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskModificationException;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import duke.utils.Storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import duke.utils.TaskList;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":" * This class implements the modify task command that modifies tasks in the bot tasklist.","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"public class ModifyTaskCommand extends Command {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" * Enum used for classifying task modification types","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" public enum ModificationTypes { MARK, UNMARK, DELETE }","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" private ModificationTypes modType;","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" private String indexInput;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" * Creates ModifyTaskCommand, takes in type of modificaiton and the user input for index to be modified.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" * @param modType Modification type based on enum ModificationTypes.","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" * @param indexInput user input to be parsed into index.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" public ModifyTaskCommand(ModificationTypes modType, String indexInput) {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" super(false);","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" this.modType \u003d modType;","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" this.indexInput \u003d indexInput;","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" * Executes modify task command, modifies tasks in list based on index and type.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" * @param tasks the current list of tasks.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" * @param ui Ui object used by bot for printing information.","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" * @param storage Storage object with save file.","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" public String execute(TaskList tasks, Storage storage)","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" throws IndexOutOfBoundsException, NumberFormatException, TaskModificationException {","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" String[] inputSplit \u003d indexInput.split(\" \");","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" if (inputSplit.length \u003c 1) {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" throw new TaskModificationException(\"Input is missing task number\\nList is of current length: \"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" + tasks.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" int index \u003d Integer.parseInt(indexInput.split(\" \")[1]);","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" if (index \u003c 1 || index \u003e tasks.size()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" throw new IndexOutOfBoundsException(\"Invalid Index \" + index","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" + \" for current list\\nList is of current length: \"","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" + tasks.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" switch (this.modType) {","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" case MARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" Task t1 \u003d tasks.get(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":" t1.doTask();","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":" return \"Good job on finishing your task!:\\n \" + t1;","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":" case UNMARK:","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":" Task t2 \u003d tasks.get(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" t2.undoTask();","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":" return \"I\u0027ve marked this task as undone:\\n \" + t2;","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":" case DELETE:","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":" Task t3 \u003d tasks.get(index);","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":" tasks.remove(t3);","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" return \"I\u0027ve removed this task:\\n \" + t3;","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" default:","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":" return \"Error Modifying Task: No such modification type\";","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":76}},{"path":"src/main/java/duke/exceptions/NoSuchCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":" * This class implements an excpetion for when the bot recieves an invalid command","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"public class NoSuchCommandException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" * Creates a NoSuchCommandException, used when user inputs an invalid command.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" * @param command The invaild command.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" public NoSuchCommandException(String command) {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" super(\"\\\"\" + command + \"\\\" is not within my capabilities\");","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"delishad21":19}},{"path":"src/main/java/duke/exceptions/TaskCreationException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":" * This class implements an excpetion for when the bot is unable to create a task.","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"public class TaskCreationException extends Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" * Creates a TaskCreationException, thrown when a user task is unable to be created.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" * @param errorMsg Reason for task creation failure.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" public TaskCreationException(String errorMsg) {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" super(errorMsg);","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":19}},{"path":"src/main/java/duke/exceptions/TaskModificationException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.exceptions;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":" * This class implements an excpetion for when the bot fails to modify a task.","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"public class TaskModificationException extends Exception {","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" * Creates a TaskModificationException, thrown when user tries to modify a task but fails to.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" * @param errorMsg Reason for task modification failure.","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" public TaskModificationException(String errorMsg) {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" super(errorMsg);","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":18}},{"path":"src/main/java/duke/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskCreationException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import duke.utils.Parser;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" * This class implements the Deadline task type for the bot.","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" * Creates Deadline object.","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" * @param isDone Marks if task is completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" * @param description Description of the task.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" * @param deadline Datetime value for the deadline of the task.","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" public Deadline(boolean isDone, String description, LocalDateTime deadline) {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" super(isDone, description);","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" * Returns a Deadline object by taking in user input and parsing it.","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" * @param isDone Marks if task is completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" * @param input User input to be parsed.","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" * @return Deadline object.","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" * @throws TaskCreationException","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" * @throws DateTimeParseException","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" public static Deadline deadlineParse(boolean isDone, String input)","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" throws TaskCreationException, DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" if (!input.contains(\"/by\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" throw new TaskCreationException(\"Missing parameters: /by\");","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" String description \u003d input.substring(8, input.indexOf(\"/by\")).trim();","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" String deadlineString \u003d input.substring(input.indexOf(\"/by\") + 3).trim();","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" // Check if inputs are blank","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" String missingInfo \u003d \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" missingInfo \u003d missingInfo + \"\\\"description\\\" \";","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" if (deadlineString.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" missingInfo \u003d missingInfo + \"\\\"by\\\" \";","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" if (!missingInfo.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" throw new TaskCreationException(\"Missing information: \" + missingInfo);","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" LocalDateTime deadlineDateTime \u003d LocalDateTime.parse(deadlineString, Parser.INPUT_DT_FORMATTER);","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" Deadline d \u003d new Deadline(isDone, description, deadlineDateTime);","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" return d;","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" * Returns Deadline as a viewable String.","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":" * @return String","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" return \"[D]\" + super.toString() + \" (by: \" + deadline.format(Parser.OUTPUT_DT_FORMATTER) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"delishad21"},"content":" * Coverts Deadline into a String for saving in save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"delishad21"},"content":" * @return String","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"delishad21"},"content":" public String toSave() {","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"delishad21"},"content":" return \"[D]|\" + super.toSave() + \"|\" + deadline.format(Parser.INPUT_DT_FORMATTER);","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"delishad21":85}},{"path":"src/main/java/duke/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskCreationException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import duke.utils.Parser;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" * This class implements the Event task type for the bot.","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" * Creates Event object","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" * @param isDone Marks if task is completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" * @param description Description of the task.","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" * @param start Datetime value marking the start of the event.","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" * @param end Datetime value for marking the end of the event.","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" public Event(boolean isDone, String description, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" super(isDone, description);","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" * Returns a deadline object by taking in user input and parsing it.","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" * @param isDone Marks if task is completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" * @param input User input to be parsed.","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" * @return Event object.","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" * @throws TaskCreationException","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" * @throws DateTimeParseException","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" public static Event eventParse(boolean isDone, String input)","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" throws TaskCreationException, DateTimeParseException {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" // Check missing parameters","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" String missingParams \u003d \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" if (!input.contains(\"/from\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" missingParams \u003d missingParams + \"/from \";","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" if (!input.contains(\"/to\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" missingParams \u003d missingParams + \"/to \";","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" if (!missingParams.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" throw new TaskCreationException(\" Missing parameters: \" + missingParams);","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" // Check order of parameters","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" if (input.indexOf(\"/from\") \u003e input.indexOf(\"/to\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" throw new TaskCreationException(\"Bad order of parameters, correct order should be: /from, /to\");","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" String description \u003d input.substring(5, input.indexOf(\"/from\")).trim();","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":" String startString \u003d input.substring(input.indexOf(\"/from\") + 5, input.indexOf(\"/to\")).trim();","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":" String endString \u003d input.substring(input.indexOf(\"/to\") + 3).trim();","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" // Check if inputs are blank","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":" String missingInfo \u003d \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":" if (description.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":" missingInfo \u003d missingInfo + \"\\\"description\\\" \";","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" if (startString.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":" missingInfo \u003d missingInfo + \"\\\"from\\\" \";","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"delishad21"},"content":" if (endString.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"delishad21"},"content":" missingInfo \u003d missingInfo + \"\\\"to\\\" \";","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"delishad21"},"content":" if (!missingInfo.equals(\"\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"delishad21"},"content":" throw new TaskCreationException(\"Missing information: \" + missingInfo);","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"delishad21"},"content":" LocalDateTime startDateTime \u003d LocalDateTime.parse(startString, Parser.INPUT_DT_FORMATTER);","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"delishad21"},"content":" LocalDateTime endDateTime \u003d LocalDateTime.parse(endString, Parser.INPUT_DT_FORMATTER);","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"delishad21"},"content":" Event e \u003d new Event(isDone, description, startDateTime, endDateTime);","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"delishad21"},"content":" return e;","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"delishad21"},"content":" * Returns Event as a viewable String.","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"delishad21"},"content":" * @return String","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":96,"author":{"gitId":"delishad21"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"delishad21"},"content":" return \"[E]\" + super.toString() + \" (from: \" + start.format(Parser.OUTPUT_DT_FORMATTER)","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"delishad21"},"content":" + \" to: \" + end.format(Parser.OUTPUT_DT_FORMATTER) + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"delishad21"},"content":" * Converts Event into a String for saving in save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"delishad21"},"content":" * @return String","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"delishad21"},"content":" public String toSave() {","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"delishad21"},"content":" return \"[E]|\" + super.toSave() + \"|\" + start.format(Parser.INPUT_DT_FORMATTER)","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"delishad21"},"content":" + \"|\" + end.format(Parser.INPUT_DT_FORMATTER);","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"delishad21":111}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":" * This class implements functionality for Tasks in the bot.","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":" private String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" * Creates Task object.","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" * @param isDone Marks if task is completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" * @param description Description of the task.","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" public Task(boolean isDone, String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" * Marks task as done by setting isDone to true.","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" public void doTask() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" * Marks task as undone by setting isDone to false","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" public void undoTask() {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" * Prints task marker, private method used by toString.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" * @return marker depending on whether this task is completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" private String statusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" return isDone ? \"X\" : \" \";","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" * Gets description value.","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" * @return description","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" return this.description;","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" * Returns Task as a viewable String","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" * @return String","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":" return \"[\" + this.statusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" * Converts Task into a String for saving in save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":" * @return String","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":" public String toSave() {","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" return \"[\" + this.statusIcon() + \"]|\" + this.description;","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"delishad21":73}},{"path":"src/main/java/duke/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskCreationException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":" * This class inplements the Todo task type for the bot.","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" * Creates Todo object.","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" * @param isDone Marks if task is completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" * @param description Description of the task.","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" public Todo(boolean isDone, String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" super(isDone, description);","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" * Returns a Todo object by taking in user input and parsing it.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" * @param isDone Marks if task is completed.","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" * @param input User input to be parsed.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" * @return Todo object.","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" * @throws TaskCreationException","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" public static Todo todoParse(boolean isDone, String input) throws TaskCreationException {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" String[] stringSplit \u003d input.split(\" \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" if (stringSplit.length \u003d\u003d 1 || stringSplit[1].equals(\"\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" throw new TaskCreationException(\"Missing Information: \\\"description\\\"\" );","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" Todo t \u003d new Todo(false, stringSplit[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" return t;","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" * Returns Todo as a viewable String.","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" * @return String","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" * Method for converting Todo into a String for saving in save file.","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" * @return String","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" public String toSave() {","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" return \"[T]|\" + super.toSave();","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"delishad21":59}},{"path":"src/main/java/duke/ui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" * containing text from the speaker.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" private Label dialog;","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" * Creates a DialogBox for user and bot interactions.","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" * @param text User input or bot response.","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" * @param img Image of user or bot.","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" private void flip() {","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" dialog.setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" * Creates a DialogBox that is right justified.","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":" * @param text User input or bot response.","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":" * @param img Image of user or bot.","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" * Creates a DialogBox that is left justified.","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":" * @param text User input or bot response.","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"delishad21"},"content":" * @param img Image of user or bot.","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"delishad21"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"delishad21"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"delishad21"},"content":" db.flip();","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"delishad21"},"content":" return db;","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"delishad21":81}},{"path":"src/main/java/duke/ui/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import duke.Duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" * Class that implements the starting up of the main User Interface","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" private Duke duke \u003d new Duke();","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" * Starts the bot by generating Javafx items for the user interface and linking a Duke object.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" System.err.println(fxmlLoader.getLocation().toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" stage.show();","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"delishad21":36}},{"path":"src/main/java/duke/ui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import duke.Duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import javafx.animation.PauseTransition;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import javafx.application.Platform;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"import javafx.util.Duration;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" * Class that implements the Main Window of the bot","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" private Duke duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaUser.png\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaDuke.png\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" private String name \u003d \"CBBW\";","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" private String startupMessage \u003d \"Hello! I\u0027m \" + name + \"\\nWhat can I do for you?\";","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" private String goodbyeMessage \u003d \"See you again soon!\";","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" * Initializations for the main window","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" public void initialize() {","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" * Initalises the Duke bot used together with the interface to provide functionality and responses.","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" duke \u003d d;","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" String loadStatus \u003d d.loadSave(\"data/data.txt\");","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" DialogBox.getDukeDialog(loadStatus, dukeImage),","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" DialogBox.getDukeDialog(startupMessage, dukeImage)","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" );","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" * and then appends them to the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" @FXML","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":" );","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":" userInput.clear();","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" if (!duke.isRunning()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":" DialogBox.getDukeDialog(goodbyeMessage, dukeImage)","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"delishad21"},"content":" );","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"delishad21"},"content":" PauseTransition pause \u003d new PauseTransition(Duration.seconds(1));","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"delishad21"},"content":" pause.setOnFinished(event -\u003e Platform.exit());","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"delishad21"},"content":" pause.play();","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"delishad21":80}},{"path":"src/main/java/duke/utils/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.util.Locale;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import duke.commands.Command;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import duke.commands.ExitCommand;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import duke.commands.FindCommand;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import duke.commands.GenerateTaskCommand;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"import duke.commands.ListTaskCommand;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"import duke.commands.ModifyTaskCommand;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.NoSuchCommandException;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" * This class implements the functionality for Parsing commands input into the bot.","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"public class Parser {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" public static final DateTimeFormatter INPUT_DT_FORMATTER \u003d","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" DateTimeFormatter.ofPattern(\"dd/MM/yyyy, HH:mm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" public static final DateTimeFormatter OUTPUT_DT_FORMATTER \u003d","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" DateTimeFormatter.ofPattern(\"dd MMMM yyyy, hh:mma\", Locale.ENGLISH);","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" * Parses user input and into the appropriate commands for the bot to execute.","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" * @param input","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" * @return Command","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" * @throws NoSuchCommandException","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" public static Command parse(String input) throws NoSuchCommandException {","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" String action \u003d input.split(\" \")[0].toLowerCase();","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" switch (action) {","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" case \"bye\":","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" return new ExitCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" case \"list\":","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" return new ListTaskCommand();","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" case \"find\":","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" return new FindCommand(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" case \"todo\":","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" return new GenerateTaskCommand(GenerateTaskCommand.TaskType.TODO, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" case \"event\":","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" return new GenerateTaskCommand(GenerateTaskCommand.TaskType.EVENT, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" return new GenerateTaskCommand(GenerateTaskCommand.TaskType.DEADLINE, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" case \"mark\":","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" return new ModifyTaskCommand(ModifyTaskCommand.ModificationTypes.MARK, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" return new ModifyTaskCommand(ModifyTaskCommand.ModificationTypes.UNMARK, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" case \"delete\":","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" return new ModifyTaskCommand(ModifyTaskCommand.ModificationTypes.DELETE, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" throw new NoSuchCommandException(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":61}},{"path":"src/main/java/duke/utils/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.io.File;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.TaskCreationException;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" * This class implements the saving and reading of bot data into a text file.","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":"public class Storage {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" private File f;","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" * Creates a Storage object, takes in a filepath for the file in which data","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" * should be saved.","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" * @param filePath File to save data to and load data from.","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" * @throws IOException","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" public Storage(String filePath) throws IOException {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" this.f \u003d new File(filePath);","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" checkAndCreateFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" * Checks and creates file based on filepath.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" * @throws IOException","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" private void checkAndCreateFile() throws IOException {","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" // Reading and creating data save file","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" // making data folder","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" if (!f.getParentFile().exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" if (!f.getParentFile().mkdir()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" throw new IOException(\"Unable to make directory\");","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" // making data file","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" if (!f.exists()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" f.createNewFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" * Reads save data from save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" * @param ui Used for printing information.","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" * @return TaskList read from save data.","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" * @throws FileNotFoundException","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":" public TaskList readSaveData() throws FileNotFoundException {","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" Scanner s \u003d new Scanner(f);","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":" taskList.add(parseTaskFromSave(s.nextLine()));","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":" } catch (TaskCreationException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" System.out.println(\"Error in reading task: \" + e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"delishad21"},"content":" s.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"delishad21"},"content":" return taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"delishad21"},"content":" * Saves data from bot back to save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"delishad21"},"content":" * @param data The data from the bot.","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"delishad21"},"content":" * @param ui Used for printing information.","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"delishad21"},"content":" * @throws IOException","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"delishad21"},"content":" public String saveTodoData(TaskList data) throws IOException {","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"delishad21"},"content":" this.checkAndCreateFile();","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"delishad21"},"content":" FileWriter fw \u003d new FileWriter(f);","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"delishad21"},"content":" String dataString \u003d \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"delishad21"},"content":" for (int i \u003d 1; i \u003c\u003d data.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"delishad21"},"content":" dataString \u003d dataString + data.get(i).toSave() + \"\\n\";","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"delishad21"},"content":" fw.write(dataString);","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"delishad21"},"content":" fw.close();","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"delishad21"},"content":" return data.size() + \" tasks saved\";","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"delishad21"},"content":" * Parses individual line from save file into Tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"delishad21"},"content":" * @param task Each line read from save file.","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"delishad21"},"content":" * @return A Task object generated with information parsed from input.","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"delishad21"},"content":" * @throws TaskCreationException","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"delishad21"},"content":" private Task parseTaskFromSave(String task) throws TaskCreationException {","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"delishad21"},"content":" String[] taskSplit \u003d task.split(\"\\\\|\");","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"delishad21"},"content":" boolean isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"delishad21"},"content":" if (taskSplit[1].equals(\"[X]\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"delishad21"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"delishad21"},"content":" } else if (taskSplit[1].equals(\"[ ]\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"delishad21"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"delishad21"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"delishad21"},"content":" throw new TaskCreationException(\"Unable to determine if task (\" + task + \") is done or not\");","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"delishad21"},"content":" switch (taskSplit[0]) {","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"delishad21"},"content":" case \"[T]\":","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"delishad21"},"content":" return new Todo(isDone, taskSplit[2]);","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"delishad21"},"content":" case \"[D]\":","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"delishad21"},"content":" return new Deadline(isDone, taskSplit[2],","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"delishad21"},"content":" LocalDateTime.parse(taskSplit[3], Parser.INPUT_DT_FORMATTER));","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"delishad21"},"content":" case \"[E]\":","lastModifiedDate":"2024-01-27"},{"lineNumber":129,"author":{"gitId":"delishad21"},"content":" return new Event(isDone, taskSplit[2],","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"delishad21"},"content":" LocalDateTime.parse(taskSplit[3], Parser.INPUT_DT_FORMATTER),","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"delishad21"},"content":" LocalDateTime.parse(taskSplit[4], Parser.INPUT_DT_FORMATTER));","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"delishad21"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":133,"author":{"gitId":"delishad21"},"content":" throw new TaskCreationException(\"No such task: \" + taskSplit[0] + \" for \" + task);","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":137}},{"path":"src/main/java/duke/utils/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":" * This class implementions the functionality of a variable length list containg Task objects.","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" * @author delishad21","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"public class TaskList {","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" private ArrayList\u003cTask\u003e toDoList;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" * Creates a TaskList that contains an ArrayList.","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" public TaskList() {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" this.toDoList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" * Prints out all items in the TaskList.","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" * @param ui Used for printing.","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" public String toString() {","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" String tasklistString \u003d \"\";","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" for (int i \u003d 1; i \u003c\u003d toDoList.size(); i++) {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" tasklistString +\u003d i + \".\" + toDoList.get(i - 1) + \"\\n\";","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" return tasklistString;","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" * Adds task to list.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" * @param t Task that is to be added to list.","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" public void add(Task t) {","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" this.toDoList.add(t);","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" * Removes task from list based on task input.","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" * @param t Task that is to be removed from list.","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" public void remove(Task t) {","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" this.toDoList.remove(t);","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" * Removes Task from list based on index.","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" * @param i Index of task to be removed from list.","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" public void remove(int i) {","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" this.toDoList.remove(i - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":" * Gets items from TaskList using index.","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":" * @param i Index of item to be retrieved.","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":" * @return Task retrieved from TaskList.","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":" public Task get(int i) {","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" return this.toDoList.get(i - 1);","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"delishad21"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"delishad21"},"content":" * Gets current size of TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"delishad21"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"delishad21"},"content":" * @return Size of TaskList as integer.","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"delishad21"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"delishad21"},"content":" public int size() {","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"delishad21"},"content":" return this.toDoList.size();","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"delishad21":83}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" minHeight\u003d\"-Infinity\" prefWidth\u003d\"400.0\" spacing\u003d\"15.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" \u003cLabel fx:id\u003d\"dialog\" alignment\u003d\"TOP_RIGHT\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"15.0\" right\u003d\"15.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"delishad21":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.ui.MainWindow\"\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"delishad21":19}},{"path":"src/test/java/duke/DukeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"public class DukeTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":" public void FileGenerationTest() {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":" String filePath \u003d \"data/help.txt\";","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":" File file \u003d new File(\"data/help.txt\");","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":" file.delete();","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" duke.loadSave(filePath);","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" assertTrue(file.exists());","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" file.delete();","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"delishad21":19}},{"path":"src/test/java/duke/utils/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import duke.commands.Command;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import duke.commands.ExitCommand;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"import duke.commands.GenerateTaskCommand;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"import duke.commands.ModifyTaskCommand;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"import duke.exceptions.NoSuchCommandException;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":" public void GenerateTodoTest() {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":" Command c \u003d Parser.parse(\"todo task1\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" assert (c instanceof GenerateTaskCommand);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" } catch (NoSuchCommandException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" public void GenerateDeadlineTest() {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" Command c \u003d Parser.parse(\"deadline task2 /by 12/11/2024, 13:00\");","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" assert (c instanceof GenerateTaskCommand);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" } catch (NoSuchCommandException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" public void GenerateModificationTest() {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" Command c \u003d Parser.parse(\"mark 2\");","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" assert (c instanceof ModifyTaskCommand);","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" } catch (NoSuchCommandException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" public void GenerateModificationTest2() {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" Command c \u003d Parser.parse(\"unmark 2\");","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" assert (c instanceof ModifyTaskCommand);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" } catch (NoSuchCommandException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" public void GenerateExitTest() {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":" Command c \u003d Parser.parse(\"bye\");","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"delishad21"},"content":" assert (c instanceof ExitCommand);","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"delishad21"},"content":" } catch (NoSuchCommandException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"delishad21"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"delishad21"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"delishad21"},"content":" public void InvalidCommandTest() {","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"delishad21"},"content":" Command c \u003d Parser.parse(\"rjksjrkr\");","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"delishad21"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"delishad21"},"content":" } catch (NoSuchCommandException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"delishad21"},"content":" return;","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"delishad21":76}},{"path":"src/test/java/duke/utils/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"package duke.utils;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"import duke.Duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":"import duke.tasks.Todo;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"delishad21"},"content":"public class StorageTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"delishad21"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"delishad21"},"content":" public void testStorageFileCreation() {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"delishad21"},"content":" File file \u003d new File(\"data/test.txt\");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"delishad21"},"content":" file.delete();","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"delishad21"},"content":" Storage s \u003d new Storage(\"data/test.txt\");","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"delishad21"},"content":" assertTrue(file.exists());","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"delishad21"},"content":" file.delete();","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"delishad21"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"delishad21"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"delishad21"},"content":" file.delete();","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"delishad21"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"delishad21"},"content":" public void testStorageReading() {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"delishad21"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"delishad21"},"content":" File file \u003d new File(\"data/test.txt\");","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"delishad21"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"delishad21"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"delishad21"},"content":" fw.write(\"[T]|[ ]|1\\n\" +","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"delishad21"},"content":" \"[D]|[X]|task2|12/11/2001, 16:00\\n\" +","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"delishad21"},"content":" \"[E]|[ ]|task 3|12/11/2001, 15:00|13/11/2001, 16:00\");","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"delishad21"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"delishad21"},"content":" Storage s \u003d new Storage(\"data/test.txt\");","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"delishad21"},"content":" TaskList taskList \u003d s.readSaveData();","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"delishad21"},"content":" assertTrue(taskList.size() \u003d\u003d 3);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"delishad21"},"content":" assertTrue(taskList.get(1) instanceof Todo);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"delishad21"},"content":" assertTrue(taskList.get(2) instanceof Deadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"delishad21"},"content":" assertTrue(taskList.get(3) instanceof Event);","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"delishad21"},"content":" file.delete();","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"delishad21"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"delishad21"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"delishad21"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"delishad21"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"delishad21"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"delishad21":58}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"delishad21"},"content":"todo feed dog","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"delishad21"},"content":"deadline assignment 2 /by jan 2","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"delishad21"},"content":"event prom night /from Jan 2 4pm /to Jan 2 6pm","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"delishad21"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"delishad21"},"content":"mark 4","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"delishad21"},"content":"mark 1","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"delishad21"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"delishad21"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"delishad21"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"delishad21"},"content":"unmark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"delishad21"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"delishad21"},"content":"mark skfjh","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"delishad21"},"content":"deadline assignment /by ","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"delishad21"},"content":"deadline assignment /by 2024","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"delishad21"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"delishad21"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"delishad21":16}}] diff --git a/delishad21_ip_master/commits.json b/delishad21_ip_master/commits.json index 52d83660..5ae69d54 100644 --- a/delishad21_ip_master/commits.json +++ b/delishad21_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"delishad21":[{"date":"2024-01-23","commitResults":[{"hash":"09a4f61137447b53ef9b1a48cdb51e2afa34e3f4","isMergeCommit":false,"messageTitle":"Implemented startup and exit messages","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":6}}},{"hash":"b16c1ebc73c8c2dae615a9b9bd69119cfa1a9941","isMergeCommit":false,"messageTitle":"Added echo functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"510b94a24c792ef0e1435b610ea1dd8fc3fd895b","isMergeCommit":false,"messageTitle":"Implemented task adding","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":1}}},{"hash":"c4917558166acccdb753dc9e72eaf88f83266410","isMergeCommit":false,"messageTitle":"Created a new class for Tasks, added functionality for marking and unmarking tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":16}}},{"hash":"d14fadd66c54ee47b0340ead18b0403596b9fac4","isMergeCommit":false,"messageTitle":"Implemented different task types (ToDos, Deadlines, Events) as subclasses of task.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":28}}},{"hash":"bb6e760bb51d233ccf1186071c46d47d7bf45dcf","isMergeCommit":false,"messageTitle":"Added error handling and new exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":26}}},{"hash":"46d0572531a2b83da200a938d9bfd7f3984007ce","isMergeCommit":false,"messageTitle":"Added task deletetion capabilities","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":13}}},{"hash":"bab70e86de72dc6de197791bfbfd3f728ae082ca","isMergeCommit":false,"messageTitle":"Automated text UI testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":16,"deletions":0}}}]},{"date":"2024-01-27","commitResults":[{"hash":"f1cbc917620b3162bd3e7c36733c468bb007e87a","isMergeCommit":false,"messageTitle":"Add data saving and reading save data from file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":172,"deletions":35}}},{"hash":"20f70bcd4dc43a8cb07f2c6a999f9db2df749145","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"019bee49e73a60c4888e02917d08dc0850d2103b","isMergeCommit":false,"messageTitle":"Add datetime functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":33}}},{"hash":"a99966a097ce618f5b66ae723cf7179b69b03e56","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"1b14feb7dc41812817088137721c2b8adc748d6e","isMergeCommit":false,"messageTitle":"Add classes for OOP structuring","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":419,"deletions":295}}},{"hash":"778548243162c2ebfc51c54e19ce9d33709ce522","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP","A-Enums"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"e8f010a09efced5a0fb21594995ba8d06b53b05b","isMergeCommit":false,"messageTitle":"Sort classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":2}}},{"hash":"b71df050d4c7ba6c640731644681c4062a6b2a47","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"01e33459266a99a6627920b43386696d34136fb6","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/delishad21/ip","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"c48479b5e30b43f7e54939efcf9e3e702e49ff13","isMergeCommit":false,"messageTitle":"Add test classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":153,"deletions":0}}},{"hash":"02e313166c23349a1f608f23645f634d425adc86","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"bfa081ace35568228c9882b5f1bf641e066aba36","isMergeCommit":false,"messageTitle":"Stop tracking settings.json and add build info","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"3c848aa45cc94c8ce1ef1563e59c364d8dba1c4c","isMergeCommit":false,"messageTitle":"Add comments for javadoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":390,"deletions":1}}},{"hash":"748ecfbda268055e3400150a21fb3674e2f5bfd0","isMergeCommit":false,"messageTitle":"Modify code to coding standards","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":43}}},{"hash":"0fa5c477eed036512f217694be2e4a4d1c60fd7a","isMergeCommit":false,"messageTitle":"Add find capabilities","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":17}}},{"hash":"dfab055ffb4f37076d89fe6fdcc3b8e7a8e54739","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"3bda1eda821db943157f8ddacb893d25e5a7b76e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/commands/ModifyTaskCommand.java\n#\tsrc/main/java/duke/tasks/Deadline.java\n#\tsrc/main/java/duke/tasks/Event.java\n","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"c07d60df3e37858cfdebba7909d983a4934012cf","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/tasks/Task.java\n#\tsrc/main/java/duke/utils/Parser.java\n","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-01","commitResults":[{"hash":"9b6062ba48231bd261816bb8d33c66859bcace5c","isMergeCommit":false,"messageTitle":"Update javadoc comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":54}}}]},{"date":"2024-02-03","commitResults":[{"hash":"c87e9091652353fae075394e7f5cd5fa94c3a2d2","isMergeCommit":false,"messageTitle":"Update files to follow coding standards","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":20,"deletions":1},"java":{"insertions":177,"deletions":177}}},{"hash":"1fa8cc9d922f3a3a6821037e416609027b2d1f97","isMergeCommit":false,"messageTitle":"Implement basic Javafx interface","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":0},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":339,"deletions":242}}},{"hash":"51112d704a5466bf8afeff670e15f244e823440a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CheckStyle\u0027","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{}},{"hash":"f34d1a034af452a66756f65748f685a98c674742","isMergeCommit":false,"messageTitle":"Add javadoc comments for UI classes and methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":4}}}]},{"date":"2024-02-04","commitResults":[{"hash":"5d90811feb572da2e0a63b4d0428b0559f9c5880","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"# Conflicts:\n#\tbuild.gradle\n#\tsrc/main/java/duke/Duke.java\n#\tsrc/main/java/duke/commands/Command.java\n#\tsrc/main/java/duke/commands/ExitCommand.java\n#\tsrc/main/java/duke/commands/GenerateTaskCommand.java\n#\tsrc/main/java/duke/commands/ListTaskCommand.java\n#\tsrc/main/java/duke/commands/ModifyTaskCommand.java\n#\tsrc/main/java/duke/tasks/Todo.java\n#\tsrc/main/java/duke/utils/Parser.java\n#\tsrc/main/java/duke/utils/Storage.java\n#\tsrc/main/java/duke/utils/Ui.java\n","tags":["Level-10"],"fileTypesAndContributionMap":{}},{"hash":"35a023185fa2d79c7f8c714c58754c69532451f3","isMergeCommit":false,"messageTitle":"Improve UI features","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":3,"deletions":3},"java":{"insertions":5,"deletions":3}}}]}]},"authorFileTypeContributionMap":{"delishad21":{"java":1452,"md":0,"fxml":35,"sh":0,"bat":0,"gradle":21,"txt":16}},"authorContributionVariance":{"delishad21":140648.88},"authorDisplayNameMap":{"delishad21":"CS2103T-T10-1 JOHA.. SOO"}} +{"authorDailyContributionsMap":{"delishad21":[{"date":"2024-01-23","commitResults":[{"hash":"09a4f61137447b53ef9b1a48cdb51e2afa34e3f4","isMergeCommit":false,"messageTitle":"Implemented startup and exit messages","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":6}}},{"hash":"b16c1ebc73c8c2dae615a9b9bd69119cfa1a9941","isMergeCommit":false,"messageTitle":"Added echo functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":6}}},{"hash":"510b94a24c792ef0e1435b610ea1dd8fc3fd895b","isMergeCommit":false,"messageTitle":"Implemented task adding","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":1}}},{"hash":"c4917558166acccdb753dc9e72eaf88f83266410","isMergeCommit":false,"messageTitle":"Created a new class for Tasks, added functionality for marking and unmarking tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":77,"deletions":16}}},{"hash":"d14fadd66c54ee47b0340ead18b0403596b9fac4","isMergeCommit":false,"messageTitle":"Implemented different task types (ToDos, Deadlines, Events) as subclasses of task.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":28}}},{"hash":"bb6e760bb51d233ccf1186071c46d47d7bf45dcf","isMergeCommit":false,"messageTitle":"Added error handling and new exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":127,"deletions":26}}},{"hash":"46d0572531a2b83da200a938d9bfd7f3984007ce","isMergeCommit":false,"messageTitle":"Added task deletetion capabilities","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":13}}},{"hash":"bab70e86de72dc6de197791bfbfd3f728ae082ca","isMergeCommit":false,"messageTitle":"Automated text UI testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":16,"deletions":0}}}]},{"date":"2024-01-27","commitResults":[{"hash":"f1cbc917620b3162bd3e7c36733c468bb007e87a","isMergeCommit":false,"messageTitle":"Add data saving and reading save data from file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":172,"deletions":35}}},{"hash":"20f70bcd4dc43a8cb07f2c6a999f9db2df749145","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"019bee49e73a60c4888e02917d08dc0850d2103b","isMergeCommit":false,"messageTitle":"Add datetime functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":58,"deletions":33}}},{"hash":"a99966a097ce618f5b66ae723cf7179b69b03e56","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"1b14feb7dc41812817088137721c2b8adc748d6e","isMergeCommit":false,"messageTitle":"Add classes for OOP structuring","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":419,"deletions":295}}},{"hash":"778548243162c2ebfc51c54e19ce9d33709ce522","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP","A-Enums"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"e8f010a09efced5a0fb21594995ba8d06b53b05b","isMergeCommit":false,"messageTitle":"Sort classes into packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":2}}},{"hash":"b71df050d4c7ba6c640731644681c4062a6b2a47","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"01e33459266a99a6627920b43386696d34136fb6","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/delishad21/ip","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"c48479b5e30b43f7e54939efcf9e3e702e49ff13","isMergeCommit":false,"messageTitle":"Add test classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":153,"deletions":0}}},{"hash":"02e313166c23349a1f608f23645f634d425adc86","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"bfa081ace35568228c9882b5f1bf641e066aba36","isMergeCommit":false,"messageTitle":"Stop tracking settings.json and add build info","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"3c848aa45cc94c8ce1ef1563e59c364d8dba1c4c","isMergeCommit":false,"messageTitle":"Add comments for javadoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":390,"deletions":1}}},{"hash":"748ecfbda268055e3400150a21fb3674e2f5bfd0","isMergeCommit":false,"messageTitle":"Modify code to coding standards","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":43}}},{"hash":"0fa5c477eed036512f217694be2e4a4d1c60fd7a","isMergeCommit":false,"messageTitle":"Add find capabilities","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":74,"deletions":17}}},{"hash":"dfab055ffb4f37076d89fe6fdcc3b8e7a8e54739","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"3bda1eda821db943157f8ddacb893d25e5a7b76e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/commands/ModifyTaskCommand.java\n#\tsrc/main/java/duke/tasks/Deadline.java\n#\tsrc/main/java/duke/tasks/Event.java\n","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"c07d60df3e37858cfdebba7909d983a4934012cf","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/tasks/Task.java\n#\tsrc/main/java/duke/utils/Parser.java\n","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-01","commitResults":[{"hash":"9b6062ba48231bd261816bb8d33c66859bcace5c","isMergeCommit":false,"messageTitle":"Update javadoc comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":53,"deletions":54}}}]},{"date":"2024-02-03","commitResults":[{"hash":"c87e9091652353fae075394e7f5cd5fa94c3a2d2","isMergeCommit":false,"messageTitle":"Update files to follow coding standards","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":20,"deletions":1},"java":{"insertions":177,"deletions":177}}},{"hash":"1fa8cc9d922f3a3a6821037e416609027b2d1f97","isMergeCommit":false,"messageTitle":"Implement basic Javafx interface","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":0},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":339,"deletions":242}}},{"hash":"51112d704a5466bf8afeff670e15f244e823440a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CheckStyle\u0027","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{}},{"hash":"f34d1a034af452a66756f65748f685a98c674742","isMergeCommit":false,"messageTitle":"Add javadoc comments for UI classes and methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":4}}}]},{"date":"2024-02-04","commitResults":[{"hash":"5d90811feb572da2e0a63b4d0428b0559f9c5880","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"# Conflicts:\n#\tbuild.gradle\n#\tsrc/main/java/duke/Duke.java\n#\tsrc/main/java/duke/commands/Command.java\n#\tsrc/main/java/duke/commands/ExitCommand.java\n#\tsrc/main/java/duke/commands/GenerateTaskCommand.java\n#\tsrc/main/java/duke/commands/ListTaskCommand.java\n#\tsrc/main/java/duke/commands/ModifyTaskCommand.java\n#\tsrc/main/java/duke/tasks/Todo.java\n#\tsrc/main/java/duke/utils/Parser.java\n#\tsrc/main/java/duke/utils/Storage.java\n#\tsrc/main/java/duke/utils/Ui.java\n","tags":["Level-10"],"fileTypesAndContributionMap":{}},{"hash":"35a023185fa2d79c7f8c714c58754c69532451f3","isMergeCommit":false,"messageTitle":"Improve UI features","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":3,"deletions":3},"java":{"insertions":5,"deletions":3}}}]},{"date":"2024-02-07","commitResults":[{"hash":"86b610635ea4dadb5e752446f4d76e76ede2bf18","isMergeCommit":false,"messageTitle":"Update root path in build.gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"delishad21":{"java":1452,"md":0,"fxml":35,"sh":0,"bat":0,"gradle":22,"txt":16}},"authorContributionVariance":{"delishad21":124977.4},"authorDisplayNameMap":{"delishad21":"CS2103T-T10-1 JOHA.. SOO"}} diff --git a/doyelee0313_ip_master/authorship.json b/doyelee0313_ip_master/authorship.json index 35402431..dbf0d232 100644 --- a/doyelee0313_ip_master/authorship.json +++ b/doyelee0313_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2024-02-03"},{"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":{"doyelee0313":1,"-":42}},{"path":"src/data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"todo read","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"bye","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"doyelee0313":2}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"import java.time.LocalDateTime;","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 by;","lastModifiedDate":"2024-02-03"},{"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, LocalDateTime by) {","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" this.by \u003d by;","lastModifiedDate":"2024-02-03"},{"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 Deadline 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 Deadline 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 \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":33}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"import java.util.List;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-03"},{"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":"doyelee0313"},"content":" private Storage storage;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" private Ui ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" private Parser parser;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" * Constructs a Duke instance.","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" * @param filePath The file path for storing and saving the data.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" parser \u003d new Parser();","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" * Runs the Duke program according to the user command line.","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" public void run() {","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":" ui.welcome();","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" while(true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"doyelee0313"},"content":" Scanner sc \u003d new Scanner(System.in); ","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" String order \u003d sc.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":" String[] orders \u003d order.split(\" \"); ","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" if (orders[0].equals(\"bye\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" ui.bye();","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" System.exit(0);","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" } else if (orders[0].equals(\"list\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":" ui.list(tasks.getTasks());","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" } else if (orders[0].equals(\"unmark\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"doyelee0313"},"content":" int number \u003d parser.parseUnmark(order, tasks.getSize());","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"doyelee0313"},"content":" tasks.unmark(number);","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":" ui.unmark(tasks.getTask(number));","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"doyelee0313"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"doyelee0313"},"content":" } else if (orders[0].equals(\"mark\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"doyelee0313"},"content":" int number \u003d parser.parseMark(order, tasks.getSize());","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"doyelee0313"},"content":" tasks.mark(number);","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"doyelee0313"},"content":" ui.mark(tasks.getTask(number));","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"doyelee0313"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"doyelee0313"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"doyelee0313"},"content":" } else if (orders[0].equals(\"todo\")) { ","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"doyelee0313"},"content":" Task task \u003d parser.parseTodo(order);","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"doyelee0313"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"doyelee0313"},"content":" ui.addedMessage(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"doyelee0313"},"content":" ui.totalTask(tasks.getSize());","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"doyelee0313"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"doyelee0313"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"doyelee0313"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"doyelee0313"},"content":" } else if (orders[0].equals(\"deadline\")) { ","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"doyelee0313"},"content":" Task task \u003d parser.parseDeadline(order);","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"doyelee0313"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"doyelee0313"},"content":" ui.addedMessage(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"doyelee0313"},"content":" ui.totalTask(tasks.getSize());","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"doyelee0313"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"doyelee0313"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"doyelee0313"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"doyelee0313"},"content":" } else if (orders[0].equals(\"event\")) { ","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"doyelee0313"},"content":" Task task \u003d parser.parseEvent(order);","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"doyelee0313"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"doyelee0313"},"content":" ui.addedMessage(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"doyelee0313"},"content":" ui.totalTask(tasks.getSize());","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"doyelee0313"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"doyelee0313"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"doyelee0313"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":94,"author":{"gitId":"doyelee0313"},"content":" } else if (orders[0].equals(\"delete\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"doyelee0313"},"content":" int number \u003d parser.parseDelete(order, tasks.getSize());","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"doyelee0313"},"content":" ui.deletedMessage(tasks.getTask(number));","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"doyelee0313"},"content":" tasks.deleteTask(number);","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"doyelee0313"},"content":" ui.totalTask(tasks.getSize());","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"doyelee0313"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"doyelee0313"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"doyelee0313"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":104,"author":{"gitId":"doyelee0313"},"content":" } else if (orders[0].equals(\"find\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"doyelee0313"},"content":" String word \u003d parser.parseFind(order);","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"doyelee0313"},"content":" TaskList newtasks \u003d new TaskList(tasks.findTasks(word));","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"doyelee0313"},"content":" ui.findList(newtasks.getTasks());","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"doyelee0313"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"doyelee0313"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"doyelee0313"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"doyelee0313"},"content":" ui.dontUnderstand();","lastModifiedDate":"2024-02-03"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":115,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"doyelee0313"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"doyelee0313"},"content":" * The entry point(the file path) for the program. ","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":121,"author":{"gitId":"doyelee0313"},"content":" * @param args The command-line arguments.","lastModifiedDate":"2024-02-03"},{"lineNumber":122,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":123,"author":{"gitId":"doyelee0313"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-03"},{"lineNumber":124,"author":{"gitId":"doyelee0313"},"content":" new Duke(\"/Users/leedoye/ip/src/data/duke_tasks.txt\").run();","lastModifiedDate":"2024-02-03"},{"lineNumber":125,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":127,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":" * DukeException is a custom exception class for errors.","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":" * It extends the Exception class and prints a message for each error case.","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" * sends the error message according to the error type","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" * @param message The error message about the exception","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"doyelee0313":15}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":" * The Event class represents a event, starting date and ending date.","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":" * It has information about the event 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 Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" * Constructor for Event class.","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" * @param from The starting date or time of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" * @param to The ending date or time of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" * Returns a string format of the Event object.","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" * @return A string representation of the Event object.","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":35}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":" * Parser class parses the user commands in Duke.","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" * It throws exceptions for invalid formats and inform how to fix it.","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" * Constructs an empty Parser instance.","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" public Parser() {","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" * Parses the marking command from the main class.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" * @param order The user command.","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" * @param totalnum The total number of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" * @return The task number to mark as done.","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" * @throws DukeException If the command format is invalid and tell how to fix.","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" public int parseMark(String order, int totalnum) throws DukeException {","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" try { ","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" String[] actions \u003d order.split(\" \"); ","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" int markNum \u003d Integer.parseInt(actions[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" if (actions[1].isEmpty() || markNum \u003e totalnum || markNum \u003c 1) {","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" int number \u003d Integer.parseInt(actions[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" return number;","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":" throw new DukeException(\"write in valid/correct format: mark + [task number]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" * Parses the deleting command from the user.","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" * @param order The user command.","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" * @param totalnum The total number of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":" * @return The task number to delete.","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" * @throws DukeException If the command format is invalid and tell how to fix.","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"doyelee0313"},"content":" public int parseDelete(String order, int totalnum) throws DukeException{","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":" String[] actions \u003d order.split(\" \");","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"doyelee0313"},"content":" int deleteNum \u003d Integer.parseInt(actions[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" if (actions[1].isEmpty() || deleteNum \u003e totalnum || deleteNum \u003c 1) {","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"doyelee0313"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"doyelee0313"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"doyelee0313"},"content":" int number \u003d Integer.parseInt(actions[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"doyelee0313"},"content":" return number;","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"doyelee0313"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"doyelee0313"},"content":" throw new DukeException(\"write in valid/correct format: delete + [task number]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"doyelee0313"},"content":" * Parses the unmarking command from the user.","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"doyelee0313"},"content":" * @param order The user command.","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"doyelee0313"},"content":" * @param totalnum The total number of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"doyelee0313"},"content":" * @return The task number to unmark.","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"doyelee0313"},"content":" * @throws DukeException If the command format is invalid and tell how to fix.","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"doyelee0313"},"content":" public int parseUnmark(String order, int totalnum) throws DukeException {","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"doyelee0313"},"content":" try { ","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"doyelee0313"},"content":" String[] actions \u003d order.split(\" \"); ","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"doyelee0313"},"content":" int unmarkNum \u003d Integer.parseInt(actions[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"doyelee0313"},"content":" if (actions[1].isEmpty() || unmarkNum \u003e totalnum || unmarkNum \u003c 1) {","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"doyelee0313"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"doyelee0313"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"doyelee0313"},"content":" int number \u003d Integer.parseInt(actions[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"doyelee0313"},"content":" return number;","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"doyelee0313"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"doyelee0313"},"content":" throw new DukeException(\"write in valid/correct format: unmark + [task number]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"doyelee0313"},"content":" public String parseFind(String order) throws DukeException {","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"doyelee0313"},"content":" try { ","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"doyelee0313"},"content":" String[] actions \u003d order.split(\" \"); ","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"doyelee0313"},"content":" String word \u003d actions[1];","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"doyelee0313"},"content":" if (actions[1].isEmpty()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"doyelee0313"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"doyelee0313"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"doyelee0313"},"content":" return word;","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"doyelee0313"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"doyelee0313"},"content":" throw new DukeException(\"write in valid/correct format: find + [keyword]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"doyelee0313"},"content":" * Parses the todo command from the user.","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"doyelee0313"},"content":" * @param order The user command.","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"doyelee0313"},"content":" * @return The created Todo task from the command.","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"doyelee0313"},"content":" * @throws DukeException If the command format is invalid and tell how to fix.","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"doyelee0313"},"content":" public Todo parseTodo(String order) throws DukeException {","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"doyelee0313"},"content":" String t \u003d order.substring(4).trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"doyelee0313"},"content":" if (t.isEmpty()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":114,"author":{"gitId":"doyelee0313"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-02-03"},{"lineNumber":115,"author":{"gitId":"doyelee0313"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":116,"author":{"gitId":"doyelee0313"},"content":" Todo todo \u003d new Todo(t);","lastModifiedDate":"2024-02-03"},{"lineNumber":117,"author":{"gitId":"doyelee0313"},"content":" return todo;","lastModifiedDate":"2024-02-03"},{"lineNumber":118,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"doyelee0313"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"doyelee0313"},"content":" throw new DukeException(\"write in the correct format: todo + [content]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":121,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":122,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":123,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":124,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":125,"author":{"gitId":"doyelee0313"},"content":" * Parses the deadline command from the user.","lastModifiedDate":"2024-02-03"},{"lineNumber":126,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":127,"author":{"gitId":"doyelee0313"},"content":" * @param order The user command.","lastModifiedDate":"2024-02-03"},{"lineNumber":128,"author":{"gitId":"doyelee0313"},"content":" * @return The created Deadline task from the command.","lastModifiedDate":"2024-02-03"},{"lineNumber":129,"author":{"gitId":"doyelee0313"},"content":" * @throws DukeException If the command format is invalid and tell how to fix.","lastModifiedDate":"2024-02-03"},{"lineNumber":130,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":131,"author":{"gitId":"doyelee0313"},"content":" public Deadline parseDeadline(String order) throws DukeException {","lastModifiedDate":"2024-02-03"},{"lineNumber":132,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":133,"author":{"gitId":"doyelee0313"},"content":" int byIndex \u003d order.indexOf(\"/by\");","lastModifiedDate":"2024-02-03"},{"lineNumber":134,"author":{"gitId":"doyelee0313"},"content":" String t \u003d order.substring(9, byIndex - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":135,"author":{"gitId":"doyelee0313"},"content":" String due \u003d order.substring(byIndex + 4);","lastModifiedDate":"2024-02-03"},{"lineNumber":136,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":137,"author":{"gitId":"doyelee0313"},"content":" LocalDateTime dueFormat \u003d LocalDateTime.parse(due, DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":138,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":139,"author":{"gitId":"doyelee0313"},"content":" if (t.isEmpty() || due.isEmpty()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":140,"author":{"gitId":"doyelee0313"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-02-03"},{"lineNumber":141,"author":{"gitId":"doyelee0313"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":142,"author":{"gitId":"doyelee0313"},"content":" Deadline task \u003d new Deadline(t, dueFormat);","lastModifiedDate":"2024-02-03"},{"lineNumber":143,"author":{"gitId":"doyelee0313"},"content":" return task;","lastModifiedDate":"2024-02-03"},{"lineNumber":144,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":145,"author":{"gitId":"doyelee0313"},"content":" } catch (IndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":146,"author":{"gitId":"doyelee0313"},"content":" throw new DukeException(\"write in the correct format: deadline + [content] + /by + [duedate]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":147,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":148,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":149,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":150,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":151,"author":{"gitId":"doyelee0313"},"content":" * Parses the event command from the user.","lastModifiedDate":"2024-02-03"},{"lineNumber":152,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":153,"author":{"gitId":"doyelee0313"},"content":" * @param order The user command.","lastModifiedDate":"2024-02-03"},{"lineNumber":154,"author":{"gitId":"doyelee0313"},"content":" * @return The created Event task from the command.","lastModifiedDate":"2024-02-03"},{"lineNumber":155,"author":{"gitId":"doyelee0313"},"content":" * @throws DukeException If the command format is invalid and tell how to fix.","lastModifiedDate":"2024-02-03"},{"lineNumber":156,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":157,"author":{"gitId":"doyelee0313"},"content":" public Event parseEvent(String order) throws DukeException {","lastModifiedDate":"2024-02-03"},{"lineNumber":158,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":159,"author":{"gitId":"doyelee0313"},"content":" int fromIndex \u003d order.indexOf(\"/from\");","lastModifiedDate":"2024-02-03"},{"lineNumber":160,"author":{"gitId":"doyelee0313"},"content":" int toIndex \u003d order.indexOf(\"/to\");","lastModifiedDate":"2024-02-03"},{"lineNumber":161,"author":{"gitId":"doyelee0313"},"content":" String t \u003d order.substring(6, fromIndex - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":162,"author":{"gitId":"doyelee0313"},"content":" String from \u003d order.substring(fromIndex + 6, toIndex - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":163,"author":{"gitId":"doyelee0313"},"content":" String to \u003d order.substring(toIndex + 4);","lastModifiedDate":"2024-02-03"},{"lineNumber":164,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":165,"author":{"gitId":"doyelee0313"},"content":" LocalDateTime fromFormat \u003d LocalDateTime.parse(from, DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":166,"author":{"gitId":"doyelee0313"},"content":" LocalDateTime toFormat \u003d LocalDateTime.parse(to, DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":167,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":168,"author":{"gitId":"doyelee0313"},"content":" if (t.isEmpty() || from.isEmpty() || to.isEmpty()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":169,"author":{"gitId":"doyelee0313"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-02-03"},{"lineNumber":170,"author":{"gitId":"doyelee0313"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":171,"author":{"gitId":"doyelee0313"},"content":" Event event \u003d new Event(t, fromFormat, toFormat);","lastModifiedDate":"2024-02-03"},{"lineNumber":172,"author":{"gitId":"doyelee0313"},"content":" return event;","lastModifiedDate":"2024-02-03"},{"lineNumber":173,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":174,"author":{"gitId":"doyelee0313"},"content":" } catch (IndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":175,"author":{"gitId":"doyelee0313"},"content":" throw new DukeException(\"\\\"write in the correct format: event + [content] + /from + [startingdate] + /to + [enddate]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":176,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":177,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"doyelee0313":178}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"import java.io.FileInputStream;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"import java.io.ObjectInputStream;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"import java.io.ObjectOutputStream;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"import java.util.List;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" * Storage class load and save the task from a file.","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" * It provides methods to read and write the tasks","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" private String filePath \u003d \"/Users/leedoye/ip/src/data/duke_tasks.txt\";","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" * Constructs a Storage instance with a specified file path.","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" * @param filePath The path to the file for storing tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" * Loads tasks from the filepath.","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" * @return The list of tasks loaded from the file.","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" * @throws DukeException If there is an error loading tasks from storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" public List\u003cTask\u003e load() throws DukeException{","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":" try (ObjectInputStream intput \u003d new ObjectInputStream(new FileInputStream(\"filePath\"))) {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" return (List\u003cTask\u003e) intput.readObject();","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" } catch (IOException | ClassNotFoundException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"No existing tasks or file.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" throw new DukeException(\"Error loading tasks from storage\");","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":" * Saves tasks from the filepath.","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" * @return The list of tasks saved from the file.","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" * @throws DukeException If there is an error saving tasks from storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":" public void save(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" try (ObjectOutputStream output \u003d new ObjectOutputStream(new FileOutputStream(\"filePath\"))) {","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" output.writeObject(tasks);","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"doyelee0313"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"doyelee0313"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"doyelee0313":54}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"import java.io.Serializable;","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 Task class contains the task with a description and a status.","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"public class Task implements Serializable{","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" * Constructs a new Task with the description.","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" * Gets the status icon representing the completion status of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"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":25,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","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-25"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" * Mark the task as done.","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":" * Unmark the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"doyelee0313"},"content":" public void markAsUnDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" * Returns a string of the Task.","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":" * @return A string representation of the Task object.","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"doyelee0313"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":52}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import java.util.List;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":" * TaskList class is the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":" * It provides methods to manipulate the tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" ","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" * Constructs a TaskList instance.","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" * @param tasks The list of tasks to initialize the TaskList.","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" public TaskList() {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" * Gets the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":" * @return The list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" return tasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"doyelee0313"},"content":" * Adds a task to the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" * Deletes a task from the list by its number.","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"doyelee0313"},"content":" * @param number The number of the task to be deleted.","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"doyelee0313"},"content":" public void deleteTask(int number) {","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" tasks.remove(number - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"doyelee0313"},"content":" * Gets the number of tasks in the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"doyelee0313"},"content":" * @return The number of tasks in the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"doyelee0313"},"content":" public int getSize() {","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"doyelee0313"},"content":" return tasks.size();","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"doyelee0313"},"content":" * Gets a task from the list by its number.","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"doyelee0313"},"content":" * @param number The number of the task to be received.","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"doyelee0313"},"content":" * @return The task corresponding to the number.","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"doyelee0313"},"content":" public Task getTask(int number) {","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"doyelee0313"},"content":" return tasks.get(number - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"doyelee0313"},"content":" * Unmarks a task.","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"doyelee0313"},"content":" * @param number The number of the task to be unmarked.","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"doyelee0313"},"content":" public void unmark(int number) {","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"doyelee0313"},"content":" Task t \u003d tasks.get(number - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"doyelee0313"},"content":" t.markAsUnDone();","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"doyelee0313"},"content":" * Marks a task as done.","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"doyelee0313"},"content":" * @param number The number of the task to be marked as done.","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"doyelee0313"},"content":" public void mark(int number) {","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"doyelee0313"},"content":" Task t \u003d tasks.get(number - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"doyelee0313"},"content":" t.markAsDone();","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"doyelee0313"},"content":" } ","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"doyelee0313"},"content":" public List\u003cTask\u003e findTasks(String word) {","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"doyelee0313"},"content":" List\u003cTask\u003e foundTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"doyelee0313"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"doyelee0313"},"content":" if (task.toString().contains(word)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"doyelee0313"},"content":" foundTasks.add(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"doyelee0313"},"content":" ","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"doyelee0313"},"content":" return foundTasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"doyelee0313":108}},{"path":"src/main/java/duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":" * The Todo class represents a task.","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":" * It has description about the task and it is a subclass of the Task class.","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"public class Todo extends Task {","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":" * Constructor for Todo class.","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 Todo (String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" * Returns a string format of the Event object.","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" * @return A string representation of the Event object.","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":26}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"import java.util.List;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" public void printLine() {","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" public void welcome() {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Hello! I\u0027m Doye\\n\" + \"What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" public void bye() {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" ","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":" public void list(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" Task addTask \u003d tasks.get(i);","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":" System.out.println((i + 1) + \".\" + addTask.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" public void findList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":" Task addTask \u003d tasks.get(i);","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" System.out.println((i + 1) + \".\" + addTask.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"doyelee0313"},"content":" public void unmark(Task t) {","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"doyelee0313"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"doyelee0313"},"content":" public void mark(Task t) {","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"doyelee0313"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"doyelee0313"},"content":" public void showError(DukeException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"OOPS!!! \" + e.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"doyelee0313"},"content":" public void dontUnderstand() {","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"doyelee0313"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"loading error\");","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"doyelee0313"},"content":" public void addedMessage(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"doyelee0313"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"doyelee0313"},"content":" public void deletedMessage(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"doyelee0313"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"doyelee0313"},"content":" public void totalTask(int count) {","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Now you have \" + count + \" tasks in the list.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"doyelee0313":101}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke; //same package as the class being tested","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"public class ParserTest {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" public void parseTodo(String order) throws DukeException {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" String command \u003d \"todo reading\";","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" assertEquals(new Todo(\"reading\"), parser.parseTodo(command));","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" public void parseDeadline(String order) throws DukeException {","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" String command \u003d \"deadline return book /by 2/12/2019 1800\";","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" assertEquals(new Todo(\"deadline return book /by 2/12/2019 1800\"), parser.parseTodo(command));","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"doyelee0313":22}},{"path":"src/test/java/duke/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke; //same package as the class being tested","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"public class TodoTest {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" public void toStringTest(){","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" Todo todo \u003d new Todo(\"read\");","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" assertEquals(\"[T][ ] read\", todo.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"doyelee0313":13}},{"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}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"# Doye task manager","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"## welcome to Doye task manager","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"### Doye will help your task managing skill","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"**Do you ...**","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"- want to manage tasks?","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"- want to set deadline for tasks?","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":"- want to write down your events?","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"- ~~procrastinate?~~","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":"These are some functions provided:","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":"1. welcoming message","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":"2. add task/deadline/event","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":"3. delete task/deadline/event","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":"4. mark as done/undone","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":"5. write/save tasks","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":"Some basic commands are:","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":"task reading","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":"deadline return book /by 2/12/2019 1800","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":"event festival /from 2/12/2019 1800 /to 2/12/2019 2000","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":"\u003e [!CAUTION]","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":"\u003e _command should be written in correct format, or it will have some errors _","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":"these are some features that are built/buidling:","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":"- [x] basic add/delete/saving/writing/marking functions","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":"- [ ] making a friendly user guide","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":"- [ ] build fancy UI/UX for the app :tada:","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":"This site was built using [GitHub Pages](https://pages.github.com/).","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"doyelee0313":27,"-":6}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" archiveFileName \u003d \u0027duke.jar\u0027","lastModifiedDate":"2024-02-03"},{"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":{"doyelee0313":1,"-":42}},{"path":"src/data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"todo read","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"bye","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"doyelee0313":2}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"import java.time.LocalDateTime;","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 by;","lastModifiedDate":"2024-02-03"},{"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, LocalDateTime by) {","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" this.by \u003d by;","lastModifiedDate":"2024-02-03"},{"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 Deadline 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 Deadline 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 \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":33}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"import java.util.List;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-03"},{"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":"doyelee0313"},"content":" private Storage storage;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" private Ui ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" private Parser parser;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" * Constructs a Duke instance.","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" * @param filePath The file path for storing and saving the data.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" parser \u003d new Parser();","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" * Runs the Duke program according to the user command line.","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" public void run() {","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":" ui.welcome();","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" while(true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"doyelee0313"},"content":" Scanner sc \u003d new Scanner(System.in); ","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" String order \u003d sc.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":" String[] orders \u003d order.split(\" \"); ","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" if (orders[0].equals(\"bye\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" ui.bye();","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" System.exit(0);","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" } else if (orders[0].equals(\"list\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":" ui.list(tasks.getTasks());","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" } else if (orders[0].equals(\"unmark\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"doyelee0313"},"content":" int number \u003d parser.parseUnmark(order, tasks.getSize());","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"doyelee0313"},"content":" tasks.unmark(number);","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":" ui.unmark(tasks.getTask(number));","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"doyelee0313"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"doyelee0313"},"content":" } else if (orders[0].equals(\"mark\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"doyelee0313"},"content":" int number \u003d parser.parseMark(order, tasks.getSize());","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"doyelee0313"},"content":" tasks.mark(number);","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"doyelee0313"},"content":" ui.mark(tasks.getTask(number));","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"doyelee0313"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"doyelee0313"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"doyelee0313"},"content":" } else if (orders[0].equals(\"todo\")) { ","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"doyelee0313"},"content":" Task task \u003d parser.parseTodo(order);","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"doyelee0313"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"doyelee0313"},"content":" ui.addedMessage(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"doyelee0313"},"content":" ui.totalTask(tasks.getSize());","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"doyelee0313"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"doyelee0313"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"doyelee0313"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-24"},{"lineNumber":73,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"doyelee0313"},"content":" } else if (orders[0].equals(\"deadline\")) { ","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"doyelee0313"},"content":" Task task \u003d parser.parseDeadline(order);","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"doyelee0313"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"doyelee0313"},"content":" ui.addedMessage(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"doyelee0313"},"content":" ui.totalTask(tasks.getSize());","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"doyelee0313"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"doyelee0313"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"doyelee0313"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"doyelee0313"},"content":" } else if (orders[0].equals(\"event\")) { ","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"doyelee0313"},"content":" Task task \u003d parser.parseEvent(order);","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"doyelee0313"},"content":" tasks.addTask(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"doyelee0313"},"content":" ui.addedMessage(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"doyelee0313"},"content":" ui.totalTask(tasks.getSize());","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"doyelee0313"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"doyelee0313"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"doyelee0313"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":94,"author":{"gitId":"doyelee0313"},"content":" } else if (orders[0].equals(\"delete\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"doyelee0313"},"content":" int number \u003d parser.parseDelete(order, tasks.getSize());","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"doyelee0313"},"content":" ui.deletedMessage(tasks.getTask(number));","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"doyelee0313"},"content":" tasks.deleteTask(number);","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"doyelee0313"},"content":" ui.totalTask(tasks.getSize());","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"doyelee0313"},"content":" storage.save(tasks.getTasks());","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"doyelee0313"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"doyelee0313"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":104,"author":{"gitId":"doyelee0313"},"content":" } else if (orders[0].equals(\"find\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"doyelee0313"},"content":" String word \u003d parser.parseFind(order);","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"doyelee0313"},"content":" TaskList newtasks \u003d new TaskList(tasks.findTasks(word));","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"doyelee0313"},"content":" ui.findList(newtasks.getTasks());","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"doyelee0313"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"doyelee0313"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"doyelee0313"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"doyelee0313"},"content":" ui.dontUnderstand();","lastModifiedDate":"2024-02-03"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":115,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"doyelee0313"},"content":" ","lastModifiedDate":"2024-01-30"},{"lineNumber":118,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"doyelee0313"},"content":" * The entry point(the file path) for the program. ","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":121,"author":{"gitId":"doyelee0313"},"content":" * @param args The command-line arguments.","lastModifiedDate":"2024-02-03"},{"lineNumber":122,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":123,"author":{"gitId":"doyelee0313"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-03"},{"lineNumber":124,"author":{"gitId":"doyelee0313"},"content":" new Duke(\"/Users/leedoye/ip/src/data/duke_tasks.txt\").run();","lastModifiedDate":"2024-02-03"},{"lineNumber":125,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":126,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":128,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":129,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":130,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":127,"-":3}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":" * DukeException is a custom exception class for errors.","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":" * It extends the Exception class and prints a message for each error case.","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" * sends the error message according to the error type","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" * @param message The error message about the exception","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" super(message);","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"doyelee0313":15}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":" * The Event class represents a event, starting date and ending date.","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":" * It has information about the event 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 Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" * Constructor for Event class.","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" * @param from The starting date or time of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" * @param to The ending date or time of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" * Returns a string format of the Event object.","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" * @return A string representation of the Event object.","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \"to: \" + to + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":35}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":" * Parser class parses the user commands in Duke.","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" * It throws exceptions for invalid formats and inform how to fix it.","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":"public class Parser {","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" * Constructs an empty Parser instance.","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" public Parser() {","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" * Parses the marking command from the main class.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" * @param order The user command.","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" * @param totalnum The total number of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" * @return The task number to mark as done.","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" * @throws DukeException If the command format is invalid and tell how to fix.","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" public int parseMark(String order, int totalnum) throws DukeException {","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" try { ","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" String[] actions \u003d order.split(\" \"); ","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" int markNum \u003d Integer.parseInt(actions[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" if (actions[1].isEmpty() || markNum \u003e totalnum || markNum \u003c 1) {","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" int number \u003d Integer.parseInt(actions[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" return number;","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":" throw new DukeException(\"write in valid/correct format: mark + [task number]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" * Parses the deleting command from the user.","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" * @param order The user command.","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" * @param totalnum The total number of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":" * @return The task number to delete.","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" * @throws DukeException If the command format is invalid and tell how to fix.","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"doyelee0313"},"content":" public int parseDelete(String order, int totalnum) throws DukeException{","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":" String[] actions \u003d order.split(\" \");","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"doyelee0313"},"content":" int deleteNum \u003d Integer.parseInt(actions[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" if (actions[1].isEmpty() || deleteNum \u003e totalnum || deleteNum \u003c 1) {","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"doyelee0313"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"doyelee0313"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"doyelee0313"},"content":" int number \u003d Integer.parseInt(actions[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"doyelee0313"},"content":" return number;","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"doyelee0313"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"doyelee0313"},"content":" throw new DukeException(\"write in valid/correct format: delete + [task number]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"doyelee0313"},"content":" * Parses the unmarking command from the user.","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"doyelee0313"},"content":" * @param order The user command.","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"doyelee0313"},"content":" * @param totalnum The total number of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"doyelee0313"},"content":" * @return The task number to unmark.","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"doyelee0313"},"content":" * @throws DukeException If the command format is invalid and tell how to fix.","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"doyelee0313"},"content":" public int parseUnmark(String order, int totalnum) throws DukeException {","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"doyelee0313"},"content":" try { ","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"doyelee0313"},"content":" String[] actions \u003d order.split(\" \"); ","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"doyelee0313"},"content":" int unmarkNum \u003d Integer.parseInt(actions[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"doyelee0313"},"content":" if (actions[1].isEmpty() || unmarkNum \u003e totalnum || unmarkNum \u003c 1) {","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"doyelee0313"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"doyelee0313"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"doyelee0313"},"content":" int number \u003d Integer.parseInt(actions[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"doyelee0313"},"content":" return number;","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"doyelee0313"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"doyelee0313"},"content":" throw new DukeException(\"write in valid/correct format: unmark + [task number]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"doyelee0313"},"content":" public String parseFind(String order) throws DukeException {","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"doyelee0313"},"content":" try { ","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"doyelee0313"},"content":" String[] actions \u003d order.split(\" \"); ","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"doyelee0313"},"content":" String word \u003d actions[1];","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"doyelee0313"},"content":" if (actions[1].isEmpty()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"doyelee0313"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"doyelee0313"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"doyelee0313"},"content":" return word;","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"doyelee0313"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"doyelee0313"},"content":" throw new DukeException(\"write in valid/correct format: find + [keyword]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"doyelee0313"},"content":" * Parses the todo command from the user.","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"doyelee0313"},"content":" * @param order The user command.","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"doyelee0313"},"content":" * @return The created Todo task from the command.","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"doyelee0313"},"content":" * @throws DukeException If the command format is invalid and tell how to fix.","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"doyelee0313"},"content":" public Todo parseTodo(String order) throws DukeException {","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"doyelee0313"},"content":" String t \u003d order.substring(4).trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"doyelee0313"},"content":" if (t.isEmpty()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":114,"author":{"gitId":"doyelee0313"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-02-03"},{"lineNumber":115,"author":{"gitId":"doyelee0313"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":116,"author":{"gitId":"doyelee0313"},"content":" Todo todo \u003d new Todo(t);","lastModifiedDate":"2024-02-03"},{"lineNumber":117,"author":{"gitId":"doyelee0313"},"content":" return todo;","lastModifiedDate":"2024-02-03"},{"lineNumber":118,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"doyelee0313"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"doyelee0313"},"content":" throw new DukeException(\"write in the correct format: todo + [content]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":121,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":122,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":123,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":124,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":125,"author":{"gitId":"doyelee0313"},"content":" * Parses the deadline command from the user.","lastModifiedDate":"2024-02-03"},{"lineNumber":126,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":127,"author":{"gitId":"doyelee0313"},"content":" * @param order The user command.","lastModifiedDate":"2024-02-03"},{"lineNumber":128,"author":{"gitId":"doyelee0313"},"content":" * @return The created Deadline task from the command.","lastModifiedDate":"2024-02-03"},{"lineNumber":129,"author":{"gitId":"doyelee0313"},"content":" * @throws DukeException If the command format is invalid and tell how to fix.","lastModifiedDate":"2024-02-03"},{"lineNumber":130,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":131,"author":{"gitId":"doyelee0313"},"content":" public Deadline parseDeadline(String order) throws DukeException {","lastModifiedDate":"2024-02-03"},{"lineNumber":132,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":133,"author":{"gitId":"doyelee0313"},"content":" int byIndex \u003d order.indexOf(\"/by\");","lastModifiedDate":"2024-02-03"},{"lineNumber":134,"author":{"gitId":"doyelee0313"},"content":" String t \u003d order.substring(9, byIndex - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":135,"author":{"gitId":"doyelee0313"},"content":" String due \u003d order.substring(byIndex + 4);","lastModifiedDate":"2024-02-03"},{"lineNumber":136,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":137,"author":{"gitId":"doyelee0313"},"content":" LocalDateTime dueFormat \u003d LocalDateTime.parse(due, DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":138,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":139,"author":{"gitId":"doyelee0313"},"content":" if (t.isEmpty() || due.isEmpty()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":140,"author":{"gitId":"doyelee0313"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-02-03"},{"lineNumber":141,"author":{"gitId":"doyelee0313"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":142,"author":{"gitId":"doyelee0313"},"content":" Deadline task \u003d new Deadline(t, dueFormat);","lastModifiedDate":"2024-02-03"},{"lineNumber":143,"author":{"gitId":"doyelee0313"},"content":" return task;","lastModifiedDate":"2024-02-03"},{"lineNumber":144,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":145,"author":{"gitId":"doyelee0313"},"content":" } catch (IndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":146,"author":{"gitId":"doyelee0313"},"content":" throw new DukeException(\"write in the correct format: deadline + [content] + /by + [duedate]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":147,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":148,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":149,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":150,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":151,"author":{"gitId":"doyelee0313"},"content":" * Parses the event command from the user.","lastModifiedDate":"2024-02-03"},{"lineNumber":152,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":153,"author":{"gitId":"doyelee0313"},"content":" * @param order The user command.","lastModifiedDate":"2024-02-03"},{"lineNumber":154,"author":{"gitId":"doyelee0313"},"content":" * @return The created Event task from the command.","lastModifiedDate":"2024-02-03"},{"lineNumber":155,"author":{"gitId":"doyelee0313"},"content":" * @throws DukeException If the command format is invalid and tell how to fix.","lastModifiedDate":"2024-02-03"},{"lineNumber":156,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":157,"author":{"gitId":"doyelee0313"},"content":" public Event parseEvent(String order) throws DukeException {","lastModifiedDate":"2024-02-03"},{"lineNumber":158,"author":{"gitId":"doyelee0313"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":159,"author":{"gitId":"doyelee0313"},"content":" int fromIndex \u003d order.indexOf(\"/from\");","lastModifiedDate":"2024-02-03"},{"lineNumber":160,"author":{"gitId":"doyelee0313"},"content":" int toIndex \u003d order.indexOf(\"/to\");","lastModifiedDate":"2024-02-03"},{"lineNumber":161,"author":{"gitId":"doyelee0313"},"content":" String t \u003d order.substring(6, fromIndex - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":162,"author":{"gitId":"doyelee0313"},"content":" String from \u003d order.substring(fromIndex + 6, toIndex - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":163,"author":{"gitId":"doyelee0313"},"content":" String to \u003d order.substring(toIndex + 4);","lastModifiedDate":"2024-02-03"},{"lineNumber":164,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":165,"author":{"gitId":"doyelee0313"},"content":" LocalDateTime fromFormat \u003d LocalDateTime.parse(from, DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":166,"author":{"gitId":"doyelee0313"},"content":" LocalDateTime toFormat \u003d LocalDateTime.parse(to, DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":167,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":168,"author":{"gitId":"doyelee0313"},"content":" if (t.isEmpty() || from.isEmpty() || to.isEmpty()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":169,"author":{"gitId":"doyelee0313"},"content":" throw new IndexOutOfBoundsException();","lastModifiedDate":"2024-02-03"},{"lineNumber":170,"author":{"gitId":"doyelee0313"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":171,"author":{"gitId":"doyelee0313"},"content":" Event event \u003d new Event(t, fromFormat, toFormat);","lastModifiedDate":"2024-02-03"},{"lineNumber":172,"author":{"gitId":"doyelee0313"},"content":" return event;","lastModifiedDate":"2024-02-03"},{"lineNumber":173,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":174,"author":{"gitId":"doyelee0313"},"content":" } catch (IndexOutOfBoundsException | DateTimeParseException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":175,"author":{"gitId":"doyelee0313"},"content":" throw new DukeException(\"\\\"write in the correct format: event + [content] + /from + [startingdate] + /to + [enddate]\");","lastModifiedDate":"2024-02-03"},{"lineNumber":176,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":177,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":178,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"doyelee0313":178}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"import java.io.FileInputStream;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"import java.io.ObjectInputStream;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"import java.io.ObjectOutputStream;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"import java.util.List;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" * Storage class load and save the task from a file.","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" * It provides methods to read and write the tasks","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":"public class Storage {","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" private String filePath \u003d \"/Users/leedoye/ip/src/data/duke_tasks.txt\";","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" * Constructs a Storage instance with a specified file path.","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" * @param filePath The path to the file for storing tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" * Loads tasks from the filepath.","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" * @return The list of tasks loaded from the file.","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" * @throws DukeException If there is an error loading tasks from storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" public List\u003cTask\u003e load() throws DukeException{","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":" try (ObjectInputStream intput \u003d new ObjectInputStream(new FileInputStream(\"filePath\"))) {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" return (List\u003cTask\u003e) intput.readObject();","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" } catch (IOException | ClassNotFoundException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"No existing tasks or file.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" throw new DukeException(\"Error loading tasks from storage\");","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":" * Saves tasks from the filepath.","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" * @return The list of tasks saved from the file.","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" * @throws DukeException If there is an error saving tasks from storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":" public void save(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" try (ObjectOutputStream output \u003d new ObjectOutputStream(new FileOutputStream(\"filePath\"))) {","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" output.writeObject(tasks);","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"doyelee0313"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"doyelee0313"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"doyelee0313":54}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"import java.io.Serializable;","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 Task class contains the task with a description and a status.","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"public class Task implements Serializable{","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" * Constructs a new Task with the description.","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" * Gets the status icon representing the completion status of the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"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":25,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","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-25"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" * Mark the task as done.","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":" * Unmark the task.","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"doyelee0313"},"content":" public void markAsUnDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" * Returns a string of the Task.","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":" * @return A string representation of the Task object.","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"doyelee0313"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":52}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import java.util.List;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":" * TaskList class is the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":" * It provides methods to manipulate the tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":"public class TaskList {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" ","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" * Constructs a TaskList instance.","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" * @param tasks The list of tasks to initialize the TaskList.","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" public TaskList() {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" * Gets the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":" * @return The list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" return tasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"doyelee0313"},"content":" * Adds a task to the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" * Deletes a task from the list by its number.","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"doyelee0313"},"content":" * @param number The number of the task to be deleted.","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"doyelee0313"},"content":" public void deleteTask(int number) {","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" tasks.remove(number - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"doyelee0313"},"content":" * Gets the number of tasks in the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"doyelee0313"},"content":" * @return The number of tasks in the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"doyelee0313"},"content":" public int getSize() {","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"doyelee0313"},"content":" return tasks.size();","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"doyelee0313"},"content":" * Gets a task from the list by its number.","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"doyelee0313"},"content":" * @param number The number of the task to be received.","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"doyelee0313"},"content":" * @return The task corresponding to the number.","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"doyelee0313"},"content":" public Task getTask(int number) {","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"doyelee0313"},"content":" return tasks.get(number - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"doyelee0313"},"content":" * Unmarks a task.","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"doyelee0313"},"content":" * @param number The number of the task to be unmarked.","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"doyelee0313"},"content":" public void unmark(int number) {","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"doyelee0313"},"content":" Task t \u003d tasks.get(number - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"doyelee0313"},"content":" t.markAsUnDone();","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"doyelee0313"},"content":" * Marks a task as done.","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"doyelee0313"},"content":" * @param number The number of the task to be marked as done.","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"doyelee0313"},"content":" public void mark(int number) {","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"doyelee0313"},"content":" Task t \u003d tasks.get(number - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"doyelee0313"},"content":" t.markAsDone();","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"doyelee0313"},"content":" } ","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"doyelee0313"},"content":" public List\u003cTask\u003e findTasks(String word) {","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"doyelee0313"},"content":" List\u003cTask\u003e foundTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"doyelee0313"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"doyelee0313"},"content":" if (task.toString().contains(word)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"doyelee0313"},"content":" foundTasks.add(task);","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"doyelee0313"},"content":" ","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"doyelee0313"},"content":" return foundTasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"doyelee0313":108}},{"path":"src/main/java/duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"/**","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":" * The Todo class represents a task.","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":" * It has description about the task and it is a subclass of the Task class.","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"public class Todo extends Task {","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":" * Constructor for Todo class.","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 Todo (String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" /**","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" * Returns a string format of the Event object.","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" *","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" * @return A string representation of the Event object.","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" */","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"doyelee0313":26}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"import java.util.List;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"public class Ui {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":" private Scanner scanner;","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" public Ui() {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" public String readCommand() {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" public void printLine() {","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" public void welcome() {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Hello! I\u0027m Doye\\n\" + \"What can I do for you?\");","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"doyelee0313"},"content":" public void bye() {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":30,"author":{"gitId":"doyelee0313"},"content":" ","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"doyelee0313"},"content":" public void list(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"doyelee0313"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"doyelee0313"},"content":" Task addTask \u003d tasks.get(i);","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"doyelee0313"},"content":" System.out.println((i + 1) + \".\" + addTask.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"doyelee0313"},"content":" public void findList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"doyelee0313"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"doyelee0313"},"content":" Task addTask \u003d tasks.get(i);","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"doyelee0313"},"content":" System.out.println((i + 1) + \".\" + addTask.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"doyelee0313"},"content":" public void unmark(Task t) {","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"doyelee0313"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":60,"author":{"gitId":"doyelee0313"},"content":" public void mark(Task t) {","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":62,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"doyelee0313"},"content":" System.out.println(t.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"doyelee0313"},"content":" public void showError(DukeException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"OOPS!!! \" + e.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"doyelee0313"},"content":" public void dontUnderstand() {","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"OOPS!!! I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"doyelee0313"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"loading error\");","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"doyelee0313"},"content":" public void addedMessage(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"doyelee0313"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"doyelee0313"},"content":" public void deletedMessage(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"doyelee0313"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"doyelee0313"},"content":" public void totalTask(int count) {","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"doyelee0313"},"content":" System.out.println(\"Now you have \" + count + \" tasks in the list.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"doyelee0313"},"content":" printLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"doyelee0313":101}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke; //same package as the class being tested","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"public class ParserTest {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" public void parseTodo(String order) throws DukeException {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" String command \u003d \"todo reading\";","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":" assertEquals(new Todo(\"reading\"), parser.parseTodo(command));","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"doyelee0313"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"doyelee0313"},"content":" public void parseDeadline(String order) throws DukeException {","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"doyelee0313"},"content":" String command \u003d \"deadline return book /by 2/12/2019 1800\";","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"doyelee0313"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"doyelee0313"},"content":" assertEquals(new Todo(\"deadline return book /by 2/12/2019 1800\"), parser.parseTodo(command));","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"doyelee0313":22}},{"path":"src/test/java/duke/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"doyelee0313"},"content":"package duke; //same package as the class being tested","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"doyelee0313"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"doyelee0313"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"doyelee0313"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"doyelee0313"},"content":"public class TodoTest {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"doyelee0313"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"doyelee0313"},"content":" public void toStringTest(){","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"doyelee0313"},"content":" Todo todo \u003d new Todo(\"read\");","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"doyelee0313"},"content":" assertEquals(\"[T][ ] read\", todo.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"doyelee0313"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"doyelee0313"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"doyelee0313":13}},{"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 a0021af4..5396face 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}}}]},{"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}}},{"hash":"9ba68a7a3742d5e86d52658087b8b0f9139026b5","isMergeCommit":false,"messageTitle":"oop start","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"2c1eb012fd1ac7d86dcdf3b12e720c1b5e0e0ad6","isMergeCommit":false,"messageTitle":"Revert \"oop start\"","messageBody":"This reverts commit 9ba68a7a3742d5e86d52658087b8b0f9139026b5.\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"ea9a30cde99a552ed5affd4703cc3808ec55e908","isMergeCommit":false,"messageTitle":"oop start","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":162,"deletions":0}}}]},{"date":"2024-02-03","commitResults":[{"hash":"b7308c41b1b456aa09e758e3c9b62f0cef22fa5d","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":291,"deletions":204}}},{"hash":"9df576d43776a64add20c575aa61297dac6edcd9","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":10,"deletions":0}}},{"hash":"a89625e479038f171a4c2d7620a5edac53a288cc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3f085d8fe7e853ffe19e077e8838ebd26ca689f6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f09b473cd1b0d00fd2cfafada938c91125962aa0","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":19}}},{"hash":"facffd474b41679f625eee03a0e8500b5c8c8ca6","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"30381f6e5d99b9c0fa04d8766be69e3d761d39f2","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":1}}},{"hash":"dc99113930bba8e8ddca834d1fd0278445b58db7","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":11}}},{"hash":"f2c3f9da1004d1964055b36a8305dbdd482d5b7b","isMergeCommit":false,"messageTitle":"A-JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":126,"deletions":2}}},{"hash":"ba3f63986f4ae9ad9af048ff9c3a472074341ab5","isMergeCommit":false,"messageTitle":"A-CodingStandard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":4}}},{"hash":"7638d53214f4d1b268111fa76cc36c90fd5cbc04","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":0}}},{"hash":"427e13551b83ef137eede7b42ca36dba7602f6f6","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"37a6c8bc6b9123c8639a3bcbb05ab658b0ef1da7","isMergeCommit":true,"messageTitle":"Merge tag \u0027Level-9\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Parser.java\n","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"doyelee0313":{"java":764,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":4}},"authorContributionVariance":{"doyelee0313":37207.484},"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}}},{"hash":"9ba68a7a3742d5e86d52658087b8b0f9139026b5","isMergeCommit":false,"messageTitle":"oop start","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"2c1eb012fd1ac7d86dcdf3b12e720c1b5e0e0ad6","isMergeCommit":false,"messageTitle":"Revert \"oop start\"","messageBody":"This reverts commit 9ba68a7a3742d5e86d52658087b8b0f9139026b5.\n","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"ea9a30cde99a552ed5affd4703cc3808ec55e908","isMergeCommit":false,"messageTitle":"oop start","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":162,"deletions":0}}}]},{"date":"2024-02-03","commitResults":[{"hash":"b7308c41b1b456aa09e758e3c9b62f0cef22fa5d","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":291,"deletions":204}}},{"hash":"9df576d43776a64add20c575aa61297dac6edcd9","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":10,"deletions":0}}},{"hash":"a89625e479038f171a4c2d7620a5edac53a288cc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3f085d8fe7e853ffe19e077e8838ebd26ca689f6","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-gradle-support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f09b473cd1b0d00fd2cfafada938c91125962aa0","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":19}}},{"hash":"facffd474b41679f625eee03a0e8500b5c8c8ca6","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"30381f6e5d99b9c0fa04d8766be69e3d761d39f2","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":1}}},{"hash":"dc99113930bba8e8ddca834d1fd0278445b58db7","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":11}}},{"hash":"f2c3f9da1004d1964055b36a8305dbdd482d5b7b","isMergeCommit":false,"messageTitle":"A-JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0},"java":{"insertions":126,"deletions":2}}},{"hash":"ba3f63986f4ae9ad9af048ff9c3a472074341ab5","isMergeCommit":false,"messageTitle":"A-CodingStandard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":4}}},{"hash":"7638d53214f4d1b268111fa76cc36c90fd5cbc04","isMergeCommit":false,"messageTitle":"Level-9","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":0}}},{"hash":"427e13551b83ef137eede7b42ca36dba7602f6f6","isMergeCommit":true,"messageTitle":"Merge tag \u0027A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"37a6c8bc6b9123c8639a3bcbb05ab658b0ef1da7","isMergeCommit":true,"messageTitle":"Merge tag \u0027Level-9\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Parser.java\n","fileTypesAndContributionMap":{}}]},{"date":"2024-02-07","commitResults":[{"hash":"0e5fe69b0300da9f880c0ac40a7d10d69a2d9080","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":29,"deletions":20}}}]}]},"authorFileTypeContributionMap":{"doyelee0313":{"java":764,"md":27,"fxml":0,"sh":0,"bat":0,"gradle":1,"txt":4}},"authorContributionVariance":{"doyelee0313":30820.13},"authorDisplayNameMap":{"doyelee0313":"CS2103T-W10-4 LEE ..DOYE"}} diff --git a/garywongkai_ip_master/authorship.json b/garywongkai_ip_master/authorship.json index e3e131fb..caa29b98 100644 --- a/garywongkai_ip_master/authorship.json +++ b/garywongkai_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"# Gluti project","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"![Chatbot Mascot](https://github.com/garywongkai/ip/blob/branch-A-CodingStandard/src/main/data/Gluti.png)","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"```","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"Welcome to the Gluti chatbot!","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"```","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":"## **Gluti is your chat task manager, it is:**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":"- Text-based","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":"- User-friendly","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":"- Easy and Fast to use","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":"## Setup","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":"1. Download the release [here!](https://github.com/garywongkai/ip/releases)","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":"2. Launch it!","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":"3. Add your tasks","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":"4. ~~????~~ Profit","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":"## Features","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":"- [x] Task Manager","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":"- [x] Manages Deadlines!","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":"- [ ] GUI","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":"## UML diagrams","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":"```mermaid","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"garywongkai"},"content":"classDiagram","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"garywongkai"},"content":"FileStorage \u003c-- Gluti : Initalises","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"garywongkai"},"content":"FileStorage --* Ui","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"garywongkai"},"content":"Ui \u003c-- Gluti : Calls","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"garywongkai"},"content":"Parser-- FileStorage : Link","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"garywongkai"},"content":"Ui --\u003e Parser : Calls","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"garywongkai"},"content":"Parser --\u003e Todo","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"garywongkai"},"content":"Parser --\u003e Deadline","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"garywongkai"},"content":"Parser --\u003e Event","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"garywongkai"},"content":"Task --|\u003e Todo : Inheritance","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"garywongkai"},"content":"Task--|\u003e Deadline: Inheritance","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"garywongkai"},"content":"Task--|\u003e Event: Inheritance","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"garywongkai"},"content":"class Gluti{ main()","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"garywongkai"},"content":"class Ui{ boolean isExit","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"garywongkai"},"content":"run()}","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"garywongkai"},"content":"class Parser{FileStorage fstorage","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"garywongkai"},"content":"boolean isExit","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"garywongkai"},"content":"parse(String)","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"garywongkai"},"content":"class FileStorage{ ArrayList\u003cTask\u003e taskList","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"garywongkai"},"content":"checkifexist()","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"garywongkai"},"content":"read(String)","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"garywongkai"},"content":"saveList(taskList)","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"garywongkai"},"content":"readList()","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"garywongkai"},"content":"class Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"garywongkai"},"content":"protected String description","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"garywongkai"},"content":"protected boolean isDone","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"garywongkai"},"content":"getStatusIcon()","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":93,"author":{"gitId":"garywongkai"},"content":"toString()","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":95,"author":{"gitId":"garywongkai"},"content":"setDone()","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"garywongkai"},"content":"setunDone()","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"garywongkai"},"content":"isMatch(keyword)","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-01"},{"lineNumber":102,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"garywongkai"},"content":"class Todo {","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":105,"author":{"gitId":"garywongkai"},"content":"@Override toString()","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":107,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-01"},{"lineNumber":108,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":109,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":110,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":111,"author":{"gitId":"garywongkai"},"content":"class Deadline {","lastModifiedDate":"2024-02-01"},{"lineNumber":112,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":113,"author":{"gitId":"garywongkai"},"content":"protected String by","lastModifiedDate":"2024-02-01"},{"lineNumber":114,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":115,"author":{"gitId":"garywongkai"},"content":"validDate(String)","lastModifiedDate":"2024-02-01"},{"lineNumber":116,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":117,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-01"},{"lineNumber":118,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":119,"author":{"gitId":"garywongkai"},"content":"class Event {","lastModifiedDate":"2024-02-01"},{"lineNumber":120,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":121,"author":{"gitId":"garywongkai"},"content":"String[] date;","lastModifiedDate":"2024-02-01"},{"lineNumber":122,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":123,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-01"},{"lineNumber":124,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":125,"author":{"gitId":"garywongkai"},"content":"```","lastModifiedDate":"2024-02-01"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":131,"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":132,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":133,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":134,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":135,"author":{"gitId":"-"},"content":"1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":136,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":137,"author":{"gitId":"-"},"content":"1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":138,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":139,"author":{"gitId":"-"},"content":"1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":140,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":141,"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":142,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":143,"author":{"gitId":"-"},"content":"In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":144,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":145,"author":{"gitId":"-"},"content":"3. After that, locate the `src/main/java/Duke.java` file, right-click it, and choose `Run Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2021-07-29"},{"lineNumber":146,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":147,"author":{"gitId":"garywongkai"},"content":"## The code 🔥","lastModifiedDate":"2024-02-02"},{"lineNumber":148,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":149,"author":{"gitId":"garywongkai"},"content":"```","lastModifiedDate":"2024-02-02"},{"lineNumber":150,"author":{"gitId":"garywongkai"},"content":"static void main(String[] args) {","lastModifiedDate":"2024-02-02"},{"lineNumber":151,"author":{"gitId":"garywongkai"},"content":"\t//Insert amazing Gluti code here!","lastModifiedDate":"2024-02-02"},{"lineNumber":152,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-02"},{"lineNumber":153,"author":{"gitId":"garywongkai"},"content":"```","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"garywongkai":139,"-":14}},{"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":"garywongkai"},"content":" mainClass.set(\"Gluti/Gluti\")","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"garywongkai":1,"-":41}},{"path":"src/main/data/Gluti.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"[D][X] meeting (by: Nov 11 2013)","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"[D][ ] meeting (by: Dec 29 2023)","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"[T][ ] meeting","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"[T][X] meeting","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"garywongkai":4}},{"path":"src/main/java/Gluti/Gluti.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import Gluti.helpers.FileStorage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"import Gluti.helpers.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.GlutiException;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" * The main program that is ran, and creates the FileStorage object","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":"public class Gluti {","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" public static void main(String[] args) throws GlutiException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" FileStorage fStorage \u003d new FileStorage();","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" String logo \u003d \"Hello! I\u0027m Gluti\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" \"What can I do for you?\";","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" String end \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" System.out.println(logo);","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" Ui ui \u003d new Ui(fStorage);","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" ui.run();","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" System.out.println(end);","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"garywongkai":23}},{"path":"src/main/java/Gluti/helpers/FileStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.helpers;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"import java.io.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" * Provides a Storage interface that is shared among the program","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" * Loads tasks from file when program is ran","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" * and saves the tasks to file when terminated correctly","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":"public class FileStorage {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" protected static final File DATA_FOLDER \u003d new File(\"./src/main/data\");","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" protected static final File DATA_FILE \u003d new File(\"./src/main/data/Gluti.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" protected ArrayList\u003cTask\u003e tasklist \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" * Initialises a FileStorage instance","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" * Check if there already exists a file, load tasks from file if exists","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" * Creates a new file if !exists","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" * @throws GlutiException IO Exceptions","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" public FileStorage() throws GlutiException {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" checkifexist();","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(DATA_FILE));","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":" while (line !\u003d null) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":" tasklist.add(read(line));","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"garywongkai"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"garywongkai"},"content":" reader.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"garywongkai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"garywongkai"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"garywongkai"},"content":"// System.out.println(\"Done mounting tasks\");","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"garywongkai"},"content":" * Interprets the tasks loaded from file","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"garywongkai"},"content":" * @param line the line read from File","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"garywongkai"},"content":" * @return the Task interpreted from program","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"garywongkai"},"content":" public Task read(String line) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"garywongkai"},"content":" char tasktype \u003d line.charAt(1);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"garywongkai"},"content":" char completion \u003d line.charAt(4);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"garywongkai"},"content":" Task nextTask \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"garywongkai"},"content":" String description;","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"garywongkai"},"content":" int seperator;","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"garywongkai"},"content":" switch (tasktype) {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"garywongkai"},"content":" case \u0027T\u0027:","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"garywongkai"},"content":" description \u003d line.substring(7);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"garywongkai"},"content":" nextTask \u003d new Todo(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"garywongkai"},"content":" if (completion \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"garywongkai"},"content":" nextTask.setDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"garywongkai"},"content":" case \u0027D\u0027:","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"garywongkai"},"content":" seperator \u003d line.indexOf(\"(by:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"garywongkai"},"content":" description \u003d line.substring(7, seperator);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"garywongkai"},"content":" String by \u003d line.substring(seperator + 4, line.length() - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"garywongkai"},"content":" nextTask \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"garywongkai"},"content":" if (completion \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"garywongkai"},"content":" nextTask.setDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"garywongkai"},"content":" case \u0027E\u0027:","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"garywongkai"},"content":" seperator \u003d line.indexOf(\"(from: \");","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"garywongkai"},"content":" description \u003d line.substring(7, seperator);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"garywongkai"},"content":" String[] date \u003d line.substring(seperator + 6, line.length() - 1).split(\"to:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"garywongkai"},"content":" nextTask \u003d new Event(description, date[0],date[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"garywongkai"},"content":" if (completion \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"garywongkai"},"content":" nextTask.setDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"garywongkai"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"garywongkai"},"content":" nextTask \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"garywongkai"},"content":" return nextTask;","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"garywongkai"},"content":" * Checks and creates the directory and file if there is no such directory or file","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"garywongkai"},"content":" * @throws GlutiException IO Errors","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"garywongkai"},"content":" private void checkifexist() throws GlutiException {","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"garywongkai"},"content":" if (!DATA_FILE.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"garywongkai"},"content":" if (!DATA_FOLDER.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"garywongkai"},"content":" DATA_FOLDER.mkdirs();","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"garywongkai"},"content":" DATA_FILE.createNewFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"garywongkai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Gluti detects IO Error!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":107,"author":{"gitId":"garywongkai"},"content":" * Saves the TaskList onto a file (Called during termination)","lastModifiedDate":"2024-02-01"},{"lineNumber":108,"author":{"gitId":"garywongkai"},"content":" * @param newTasks saved tasks from program","lastModifiedDate":"2024-02-01"},{"lineNumber":109,"author":{"gitId":"garywongkai"},"content":" * @throws GlutiException IO Errors","lastModifiedDate":"2024-02-01"},{"lineNumber":110,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":111,"author":{"gitId":"garywongkai"},"content":" public void saveList(ArrayList\u003cTask\u003e newTasks) throws GlutiException {","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"garywongkai"},"content":" FileWriter fileWriter \u003d new FileWriter(DATA_FILE);","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"garywongkai"},"content":" StringBuilder tasks \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"garywongkai"},"content":" for (Task newTask : newTasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"garywongkai"},"content":" tasks.append(newTask).append(System.lineSeparator());","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"garywongkai"},"content":" fileWriter.write(tasks.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"garywongkai"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"garywongkai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Gluti detects IO Error!\");","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":126,"author":{"gitId":"garywongkai"},"content":" * Returns the TaskList","lastModifiedDate":"2024-02-01"},{"lineNumber":127,"author":{"gitId":"garywongkai"},"content":" * @return List of Tasks","lastModifiedDate":"2024-02-01"},{"lineNumber":128,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":129,"author":{"gitId":"garywongkai"},"content":" public ArrayList\u003cTask\u003e readList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"garywongkai"},"content":" return tasklist;","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"garywongkai":132}},{"path":"src/main/java/Gluti/helpers/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.helpers;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.*;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" * An Interface to interpret user input and call relevant functions","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" * commands are called from UI to perform tasks (Acts as the parser and response)","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":"public class Parser {","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" private FileStorage fstorage;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" private boolean isExit;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" * Initialises a Parser instance","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" * @param fstorage loads and writes tasks from/to data","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" public Parser(FileStorage fstorage) {","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" this.fstorage \u003d fstorage;","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" this.isExit \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" * Returns the current status of the program","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" * @return isExit to allow UI to know if the program is still running for it to print the exit message","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" public boolean isLooping() {","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" return this.isExit;","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"garywongkai"},"content":" * Parsers the user inputs and perform relevant tasks accordingly","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"garywongkai"},"content":" * @param word The line read from user input","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"garywongkai"},"content":" * @throws GlutiException Caught exceptions from Tasks subclasses","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"garywongkai"},"content":" public void parse(String word) throws GlutiException {","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"garywongkai"},"content":" ArrayList\u003cTask\u003e storage \u003d fstorage.readList();","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"garywongkai"},"content":" String function \u003d word.split(\" \")[0].toLowerCase();","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"garywongkai"},"content":" String[] input \u003d word.split(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"garywongkai"},"content":" function \u003d input[0].toLowerCase();","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"garywongkai"},"content":" switch (function) {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"garywongkai"},"content":" case \"bye\":","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"garywongkai"},"content":" this.isExit \u003d true;","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"garywongkai"},"content":" case \"list\":","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"garywongkai"},"content":" int num \u003d 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"garywongkai"},"content":" if (!storage.isEmpty()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"garywongkai"},"content":" for (Task x : storage) {","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"garywongkai"},"content":" System.out.println(num++ + \".\" + x.toString());","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"garywongkai"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"List is Empty!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"garywongkai"},"content":" case \"mark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"garywongkai"},"content":" int index \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"garywongkai"},"content":" storage.get(index - 1).setDone();","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"garywongkai"},"content":" Task task \u003d storage.get(index - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"garywongkai"},"content":" task.toString());","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Make sure that you have selected the correct task!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"garywongkai"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"garywongkai"},"content":" index \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"garywongkai"},"content":" storage.get(index - 1).setunDone();","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"garywongkai"},"content":" Task task \u003d storage.get(index - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"garywongkai"},"content":" task.toString());","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Make sure that you have selected the correct task!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"garywongkai"},"content":" case \"todo\":","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"garywongkai"},"content":" String[] tempinput \u003d word.split(\" \", 2);","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"garywongkai"},"content":" assert tempinput.length \u003e 2;","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"garywongkai"},"content":" Todo toDo \u003d new Todo(tempinput[1]);","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"garywongkai"},"content":" storage.add(toDo);","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"garywongkai"},"content":" toDo);","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Now you have \" + storage.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"garywongkai"},"content":" } catch (ArrayIndexOutOfBoundsException e){","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Todo must have a description!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"garywongkai"},"content":" case \"event\":","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"garywongkai"},"content":" String[] tempinpute \u003d word.split(\" \", 2);","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"garywongkai"},"content":" assert tempinpute.length \u003d\u003d 2 ;","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"garywongkai"},"content":" assert tempinpute[0].length() \u003e 1 ;","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"garywongkai"},"content":" String description \u003d tempinpute[1].split(\"/from\",2)[0];","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"garywongkai"},"content":" String[] period \u003d tempinpute[1].split(\"/from\",2)[1].split(\"/to\",2);","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"garywongkai"},"content":" Event event \u003d new Event(description, period);","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"garywongkai"},"content":" storage.add(event);","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"garywongkai"},"content":" event);","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Now you have \" + storage.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Event must be in this format event \u003cdescription\u003e /from \u003cdate+time\u003e /to \u003ctime\u003e\");","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"garywongkai"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"garywongkai"},"content":" String[] tempinputd \u003d word.split(\" \", 2);//[1].split(\" /by \", 2);","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"garywongkai"},"content":" assert tempinputd.length \u003d\u003d 2;","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"garywongkai"},"content":" assert tempinputd[0].length() \u003e 3;","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"garywongkai"},"content":" String description \u003d tempinputd[1].split(\"/by\", 2)[0];","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"garywongkai"},"content":" String time \u003d tempinputd[1].split(\"/by\", 2)[1];","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"garywongkai"},"content":" Deadline deadline \u003d new Deadline(description, time);","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"garywongkai"},"content":" storage.add(deadline);","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":118,"author":{"gitId":"garywongkai"},"content":" deadline);","lastModifiedDate":"2024-01-31"},{"lineNumber":119,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Now you have \" + storage.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":121,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Deadline must be in this format \u003cdescription\u003e /by \u003cdate+time\u003e\");","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"garywongkai"},"content":" case \"delete\":","lastModifiedDate":"2024-01-31"},{"lineNumber":125,"author":{"gitId":"garywongkai"},"content":" index \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":127,"author":{"gitId":"garywongkai"},"content":" Task task \u003d storage.get(index - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"garywongkai"},"content":" storage.remove(index - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":129,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"garywongkai"},"content":" task.toString());","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Now you have \" + storage.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"garywongkai"},"content":" throw new GlutiException(\"Make sure that you have selected the correct task!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":136,"author":{"gitId":"garywongkai"},"content":" case \"find\":","lastModifiedDate":"2024-02-01"},{"lineNumber":137,"author":{"gitId":"garywongkai"},"content":" ArrayList\u003cTask\u003e matchlist \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-01"},{"lineNumber":138,"author":{"gitId":"garywongkai"},"content":" String keyword \u003d input[1];","lastModifiedDate":"2024-02-01"},{"lineNumber":139,"author":{"gitId":"garywongkai"},"content":" for (Task x : storage) {","lastModifiedDate":"2024-02-01"},{"lineNumber":140,"author":{"gitId":"garywongkai"},"content":" if (x.isMatch(keyword)){","lastModifiedDate":"2024-02-01"},{"lineNumber":141,"author":{"gitId":"garywongkai"},"content":" matchlist.add(x);","lastModifiedDate":"2024-02-01"},{"lineNumber":142,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":143,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":144,"author":{"gitId":"garywongkai"},"content":" if (matchlist.isEmpty()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":145,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"No matching tasks!\");","lastModifiedDate":"2024-02-01"},{"lineNumber":146,"author":{"gitId":"garywongkai"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":147,"author":{"gitId":"garywongkai"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-02-01"},{"lineNumber":148,"author":{"gitId":"garywongkai"},"content":" int count \u003d 1;","lastModifiedDate":"2024-02-01"},{"lineNumber":149,"author":{"gitId":"garywongkai"},"content":" for (Task y : matchlist) {","lastModifiedDate":"2024-02-01"},{"lineNumber":150,"author":{"gitId":"garywongkai"},"content":" System.out.println(count++ + \".\" + y);","lastModifiedDate":"2024-02-01"},{"lineNumber":151,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":152,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":153,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":154,"author":{"gitId":"garywongkai"},"content":" default:","lastModifiedDate":"2024-01-31"},{"lineNumber":155,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":156,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":157,"author":{"gitId":"garywongkai"},"content":" //}","lastModifiedDate":"2024-01-31"},{"lineNumber":158,"author":{"gitId":"garywongkai"},"content":" fstorage.saveList(storage);","lastModifiedDate":"2024-01-31"},{"lineNumber":159,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":160,"author":{"gitId":"garywongkai"},"content":" };","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"garywongkai":160}},{"path":"src/main/java/Gluti/helpers/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.helpers;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.GlutiException;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" * Represents the control hub for user input and filestorage for user","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":"public class Ui {","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" private Parser parser;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" private boolean isExit ;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" private Scanner sc;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" * Initializes a Ui instance and sets the status to \"working\"","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" * @param fStorage the filestorage object that is going to be used in the program","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" public Ui(FileStorage fStorage){","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" this.parser \u003d new Parser(fStorage);","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" isExit \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" * Runs the program loop and calls the Parser to parse user inputs","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":" * @throws GlutiException Exceptions caught during parsing","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" public void run() throws GlutiException {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":" parser.parse(sc.nextLine());","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":" while(!isExit) {","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"garywongkai"},"content":" parser.parse(sc.nextLine());","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"garywongkai"},"content":" isExit \u003d parser.isLooping();","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"garywongkai":36}},{"path":"src/main/java/Gluti/utils/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.utils;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import java.text.DateFormat;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"import java.text.ParseException;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"import java.text.SimpleDateFormat;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" * The Deadline subclass that is a child of Task class","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" protected String by;","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" * Initializes a Deadline instance","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" * @param description the name of the Deadline","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" * @param by the due date of the Tasks","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" super(description);","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" validDate(by);","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":" return \"[D]\" + super.toString() + \"(by:\" + by +\")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"garywongkai"},"content":" * Checks if the input is a valid date and perform the relevant formatting if valid","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"garywongkai"},"content":" * @param by the due date input","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"garywongkai"},"content":" private void validDate(String by) {","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"garywongkai"},"content":" String temp \u003d by.trim();","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"garywongkai"},"content":" DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"garywongkai"},"content":" DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"garywongkai"},"content":" LocalDate parsedDate \u003d LocalDate.parse(temp, inputFormatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"garywongkai"},"content":" String formattedDate \u003d parsedDate.format(outputFormatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"garywongkai"},"content":" this.by \u003d \" \" +formattedDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"garywongkai"},"content":"// System.out.println(\"Input Date: \" + temp);","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"garywongkai"},"content":"// System.out.println(\"Formatted Date: \" + formattedDate);","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"garywongkai"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"garywongkai"},"content":" // Handle the parsing exception (invalid format)","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"garywongkai"},"content":" //System.out.println(\"Error: Invalid date format\");","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"garywongkai":52}},{"path":"src/main/java/Gluti/utils/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.utils;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":" * The Event subclass that is a child of Task class","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" protected String[] date;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" * Initializes a Event instance","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" * @param description name of the Event","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" * @param date the period of the Event","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" public Event(String description, String[] date) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" super(description);","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" * Overloaded constructor for FileStorage tasks mounting","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" * @param description name of the Event","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" * @param date1 the start period of the Event","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" * @param date2 the end period of the Event","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":" public Event(String description, String date1, String date2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" this.date \u003d new String[] {date1,date2};","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"garywongkai"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"garywongkai"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"garywongkai"},"content":" return \"[E]\" + super.toString() + \"(from:\" + date[0] + \"to:\"+ date[1] + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"garywongkai":36}},{"path":"src/main/java/Gluti/utils/GlutiException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.utils;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"public class GlutiException extends Exception{","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":" public GlutiException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"garywongkai":7}},{"path":"src/main/java/Gluti/utils/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.utils;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":" protected String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" public void setDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" public void setunDone() { isDone \u003d false; }","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" public boolean isMatch(String keyword) {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":" return this.description.contains(keyword);","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"garywongkai":29}},{"path":"src/main/java/Gluti/utils/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.utils;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":" * Simple Todo subclass that is a child of Task","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" * Initializes a Todo instance","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" * @param description name of Todo task","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" super(description);","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"garywongkai":20}},{"path":"src/test/java/Gluti/utils/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.utils;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" public void paramTest(){","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" Deadline testDeadline \u003d new Deadline(\"paramTest\", \"21/12/1999\");","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" assertEquals(testDeadline.toString(), \"[D][ ] paramTest(by: Dec 21 1999)\");","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"garywongkai":13}},{"path":"src/test/java/Gluti/utils/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.utils;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"public class TodoTest {","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" public void todoTest(){","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" Todo testTodo \u003d new Todo(\"todoTest\");","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" assertEquals(testTodo.toString(), \"[T][ ] todoTest\");","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"garywongkai":13}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"todo read book","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"mark 1","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"mark 2","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"event project meeting /from Monday 2pm /to 6pm","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":"todo join club meeting","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":"mark 4","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":"bye","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"garywongkai":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":"garywongkai"},"content":"javac -cp ..\\src\\main\\java\\Gluti -Xlint:none -d ..\\bin ..\\src\\main\\java\\Gluti\\*.java","lastModifiedDate":"2024-01-29"},{"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":"garywongkai"},"content":"java -classpath ..\\bin Gluti \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":{"garywongkai":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":"garywongkai"},"content":"if ! javac -cp ../src/main/java/ -Xlint:none -d ../bin ../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":"garywongkai"},"content":"java -classpath ../bin Gluti \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":{"garywongkai":2,"-":36}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"# Gluti project","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"![Chatbot Mascot](https://github.com/garywongkai/ip/blob/branch-A-CodingStandard/src/main/data/Gluti.png)","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"```","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"Welcome to the Gluti chatbot!","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"```","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":"## **Gluti is your chat task manager, it is:**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":"- Text-based","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":"- User-friendly","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":"- Easy and Fast to use","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":"## Setup","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":"1. Download the release [here!](https://github.com/garywongkai/ip/releases)","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":"2. Launch it!","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":"3. Add your tasks","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":"4. ~~????~~ Profit","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":"## Features","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":"- [x] Task Manager","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":"- [x] Manages Deadlines!","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":"- [ ] GUI","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":"## UML diagrams","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":"```mermaid","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"garywongkai"},"content":"classDiagram","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"garywongkai"},"content":"FileStorage \u003c-- Gluti : Initalises","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"garywongkai"},"content":"FileStorage --* Ui","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"garywongkai"},"content":"Ui \u003c-- Gluti : Calls","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"garywongkai"},"content":"Parser-- FileStorage : Link","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"garywongkai"},"content":"Ui --\u003e Parser : Calls","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"garywongkai"},"content":"Parser --\u003e Todo","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"garywongkai"},"content":"Parser --\u003e Deadline","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"garywongkai"},"content":"Parser --\u003e Event","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"garywongkai"},"content":"Task --|\u003e Todo : Inheritance","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"garywongkai"},"content":"Task--|\u003e Deadline: Inheritance","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"garywongkai"},"content":"Task--|\u003e Event: Inheritance","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"garywongkai"},"content":"class Gluti{ main()","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"garywongkai"},"content":"class Ui{ boolean isExit","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"garywongkai"},"content":"run()}","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"garywongkai"},"content":"class Parser{FileStorage fstorage","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"garywongkai"},"content":"boolean isExit","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"garywongkai"},"content":"parse(String)","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"garywongkai"},"content":"class FileStorage{ ArrayList\u003cTask\u003e taskList","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"garywongkai"},"content":"checkifexist()","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"garywongkai"},"content":"read(String)","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"garywongkai"},"content":"saveList(taskList)","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"garywongkai"},"content":"readList()","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"garywongkai"},"content":"class Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"garywongkai"},"content":"protected String description","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"garywongkai"},"content":"protected boolean isDone","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"garywongkai"},"content":"getStatusIcon()","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":93,"author":{"gitId":"garywongkai"},"content":"toString()","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":95,"author":{"gitId":"garywongkai"},"content":"setDone()","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"garywongkai"},"content":"setunDone()","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"garywongkai"},"content":"isMatch(keyword)","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-01"},{"lineNumber":102,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"garywongkai"},"content":"class Todo {","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":105,"author":{"gitId":"garywongkai"},"content":"@Override toString()","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":107,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-01"},{"lineNumber":108,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":109,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":110,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":111,"author":{"gitId":"garywongkai"},"content":"class Deadline {","lastModifiedDate":"2024-02-01"},{"lineNumber":112,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":113,"author":{"gitId":"garywongkai"},"content":"protected String by","lastModifiedDate":"2024-02-01"},{"lineNumber":114,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":115,"author":{"gitId":"garywongkai"},"content":"validDate(String)","lastModifiedDate":"2024-02-01"},{"lineNumber":116,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":117,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-01"},{"lineNumber":118,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":119,"author":{"gitId":"garywongkai"},"content":"class Event {","lastModifiedDate":"2024-02-01"},{"lineNumber":120,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":121,"author":{"gitId":"garywongkai"},"content":"String[] date;","lastModifiedDate":"2024-02-01"},{"lineNumber":122,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":123,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-01"},{"lineNumber":124,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":125,"author":{"gitId":"garywongkai"},"content":"```","lastModifiedDate":"2024-02-01"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":127,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":129,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":131,"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":132,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":133,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":134,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":135,"author":{"gitId":"-"},"content":"1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":136,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":137,"author":{"gitId":"-"},"content":"1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":138,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":139,"author":{"gitId":"-"},"content":"1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":140,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":141,"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":142,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":143,"author":{"gitId":"-"},"content":"In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":144,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":145,"author":{"gitId":"-"},"content":"3. After that, locate the `src/main/java/Duke.java` file, right-click it, and choose `Run Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output:","lastModifiedDate":"2021-07-29"},{"lineNumber":146,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":147,"author":{"gitId":"garywongkai"},"content":"## The code 🔥","lastModifiedDate":"2024-02-02"},{"lineNumber":148,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":149,"author":{"gitId":"garywongkai"},"content":"```","lastModifiedDate":"2024-02-02"},{"lineNumber":150,"author":{"gitId":"garywongkai"},"content":"static void main(String[] args) {","lastModifiedDate":"2024-02-02"},{"lineNumber":151,"author":{"gitId":"garywongkai"},"content":"\t//Insert amazing Gluti code here!","lastModifiedDate":"2024-02-02"},{"lineNumber":152,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-02"},{"lineNumber":153,"author":{"gitId":"garywongkai"},"content":"```","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"garywongkai":139,"-":14}},{"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":"garywongkai"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"garywongkai"},"content":" mainClass.set(\"Gluti/Launcher\")","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"garywongkai":14,"-":41}},{"path":"src/main/data/Gluti.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"[D][X] meeting (by: Nov 11 2013)","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"[D][X] meeting (by: Dec 29 2023)","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"[T][ ] test GUI","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"[D][ ] submit GUI (by: Monday)","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"garywongkai":4}},{"path":"src/main/java/Gluti/Gluti.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import Gluti.helpers.FileStorage;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"import Gluti.helpers.Parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"import Gluti.helpers.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.GlutiException;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" * The main program that is ran, and creates the FileStorage object","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":"public class Gluti {","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" private Parser parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" private Ui ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" FileStorage fStorage;","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" public Gluti() {","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" fStorage \u003d new FileStorage();","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" parser \u003d new Parser(fStorage);","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" public static void main(String[] args) throws GlutiException, IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" new Gluti();","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" public String getResponse(String input) throws GlutiException {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":" ArrayList\u003cTask\u003e temps \u003d fStorage.readList();","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":" fStorage.saveList(temps);","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"garywongkai"},"content":" return ui.typeBye();","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"garywongkai"},"content":" return parser.parse(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"garywongkai":36}},{"path":"src/main/java/Gluti/Gui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.Gui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import Gluti.MainWindow;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" private Label dialog;","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"garywongkai"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"garywongkai"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"garywongkai"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"garywongkai"},"content":" private void flip() {","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"garywongkai"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"garywongkai"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"garywongkai"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"garywongkai"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"garywongkai"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"garywongkai"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"garywongkai"},"content":" public static DialogBox getGlutiDialog(String text, Image img) {","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"garywongkai"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"garywongkai"},"content":" db.flip();","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"garywongkai"},"content":" return db;","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"garywongkai":57}},{"path":"src/main/java/Gluti/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"public class Launcher {","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"garywongkai":9}},{"path":"src/main/java/Gluti/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import Gluti.helpers.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" private Gluti gluti \u003d new Gluti();","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" private Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().initialize(gluti, ui);","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" stage.show();","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"garywongkai":30}},{"path":"src/main/java/Gluti/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import Gluti.Gui.DialogBox;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"import Gluti.helpers.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.GlutiException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"import javafx.application.Platform;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" private Gluti gluti;","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/data/usericon.jpg\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" private Image gluticon \u003d new Image(this.getClass().getResourceAsStream(\"/data/Gluticon.png\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" public void initialize(Gluti gluti, Ui ui) {","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":" this.gluti \u003d gluti;","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"garywongkai"},"content":" dialogContainer.getChildren().addAll(DialogBox.getGlutiDialog(ui.typeHi(), gluticon));","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"garywongkai"},"content":" public void setGluti(Gluti g) {","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"garywongkai"},"content":" gluti \u003d g;","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"garywongkai"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"garywongkai"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"garywongkai"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"garywongkai"},"content":" private void handleUserInput() throws GlutiException {","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"garywongkai"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"garywongkai"},"content":" String response \u003d gluti.getResponse(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"garywongkai"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"garywongkai"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"garywongkai"},"content":" DialogBox.getGlutiDialog(response, gluticon)","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"garywongkai"},"content":" );","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"garywongkai"},"content":" userInput.clear();","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"garywongkai"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"garywongkai"},"content":" Platform.exit();","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"garywongkai":54}},{"path":"src/main/java/Gluti/helpers/FileStorage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.helpers;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import java.io.*;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.Todo;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.Event;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.Deadline;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" * Provides a Storage interface that is shared among the program","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" * Loads tasks from file when program is ran","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" * and saves the tasks to file when terminated correctly","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":"public class FileStorage {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" protected static final File DATA_FOLDER \u003d new File(\"./src/main/data\");","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" protected static final File DATA_FILE \u003d new File(\"./src/main/data/Gluti.txt\");","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" protected ArrayList\u003cTask\u003e tasklist \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" * Initialises a FileStorage instance","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" * Check if there already exists a file, load tasks from file if exists","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" * Creates a new file if !exists","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" public FileStorage() {","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" checkIfExist();","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(DATA_FILE));","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" String line \u003d reader.readLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":" while (line !\u003d null) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":" tasklist.add(read(line));","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"garywongkai"},"content":" line \u003d reader.readLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"garywongkai"},"content":" reader.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"garywongkai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"garywongkai"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"garywongkai"},"content":"// System.out.println(\"Done mounting tasks\");","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"garywongkai"},"content":" * Interprets the tasks loaded from file","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"garywongkai"},"content":" * @param line the line read from File","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"garywongkai"},"content":" * @return the Task interpreted from program","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"garywongkai"},"content":" public Task read(String line) {","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"garywongkai"},"content":" char tasktype \u003d line.charAt(1);","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"garywongkai"},"content":" char completion \u003d line.charAt(4);","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"garywongkai"},"content":" Task nextTask \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"garywongkai"},"content":" String description;","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"garywongkai"},"content":" int seperator;","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"garywongkai"},"content":" switch (tasktype) {","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"garywongkai"},"content":" case \u0027T\u0027:","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"garywongkai"},"content":" description \u003d line.substring(7);","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"garywongkai"},"content":" nextTask \u003d new Todo(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"garywongkai"},"content":" if (completion \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"garywongkai"},"content":" nextTask.setDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"garywongkai"},"content":" case \u0027D\u0027:","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"garywongkai"},"content":" seperator \u003d line.indexOf(\"(by:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"garywongkai"},"content":" description \u003d line.substring(7, seperator);","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"garywongkai"},"content":" String by \u003d line.substring(seperator + 4, line.length() - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"garywongkai"},"content":" nextTask \u003d new Deadline(description, by);","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"garywongkai"},"content":" if (completion \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"garywongkai"},"content":" nextTask.setDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"garywongkai"},"content":" case \u0027E\u0027:","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"garywongkai"},"content":" seperator \u003d line.indexOf(\"(from: \");","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"garywongkai"},"content":" description \u003d line.substring(7, seperator);","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"garywongkai"},"content":" String[] date \u003d line.substring(seperator + 6, line.length() - 1).split(\"to:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"garywongkai"},"content":" nextTask \u003d new Event(description, date[0],date[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"garywongkai"},"content":" if (completion \u003d\u003d \u0027X\u0027) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"garywongkai"},"content":" nextTask.setDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"garywongkai"},"content":" default:","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"garywongkai"},"content":" nextTask \u003d null;","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"garywongkai"},"content":" return nextTask;","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"garywongkai"},"content":" * Checks and creates the directory and file if there is no such directory or file","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"garywongkai"},"content":" private void checkIfExist() {","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"garywongkai"},"content":" if (!DATA_FILE.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"garywongkai"},"content":" if (!DATA_FOLDER.exists()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"garywongkai"},"content":" DATA_FOLDER.mkdirs();","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"garywongkai"},"content":" DATA_FILE.createNewFile();","lastModifiedDate":"2024-01-29"},{"lineNumber":99,"author":{"gitId":"garywongkai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"garywongkai"},"content":" //Todo catch errors","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"garywongkai"},"content":" * Saves the TaskList onto a file (Called during termination)","lastModifiedDate":"2024-02-01"},{"lineNumber":107,"author":{"gitId":"garywongkai"},"content":" * @param newTasks saved tasks from program","lastModifiedDate":"2024-02-01"},{"lineNumber":108,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":109,"author":{"gitId":"garywongkai"},"content":" public void saveList(ArrayList\u003cTask\u003e newTasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":110,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"garywongkai"},"content":" FileWriter fileWriter \u003d new FileWriter(DATA_FILE);","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"garywongkai"},"content":" StringBuilder tasks \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"garywongkai"},"content":" for (Task newTask : newTasks) {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"garywongkai"},"content":" tasks.append(newTask).append(System.lineSeparator());","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"garywongkai"},"content":" fileWriter.write(tasks.toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"garywongkai"},"content":" fileWriter.close();","lastModifiedDate":"2024-01-29"},{"lineNumber":118,"author":{"gitId":"garywongkai"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":119,"author":{"gitId":"garywongkai"},"content":" //Todo catch errors","lastModifiedDate":"2024-02-07"},{"lineNumber":120,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":124,"author":{"gitId":"garywongkai"},"content":" * Returns the TaskList","lastModifiedDate":"2024-02-01"},{"lineNumber":125,"author":{"gitId":"garywongkai"},"content":" * @return List of Tasks","lastModifiedDate":"2024-02-01"},{"lineNumber":126,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":127,"author":{"gitId":"garywongkai"},"content":" public ArrayList\u003cTask\u003e readList() {","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"garywongkai"},"content":" return tasklist;","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"garywongkai":130}},{"path":"src/main/java/Gluti/helpers/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.helpers;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.*;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" * An Interface to interpret user input and call relevant functions","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" * commands are called from UI to perform tasks (Acts as the parser and response)","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":"public class Parser {","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" private FileStorage fstorage;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" protected Ui ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" * Initialises a Parser instance","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" * @param fstorage loads and writes tasks from/to data","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" public Parser(FileStorage fstorage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" this.fstorage \u003d fstorage;","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" * Parsers the user inputs and perform relevant tasks accordingly","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" * @param word The line read from user input","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":" * @return","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" * @throws GlutiException Caught exceptions from Tasks subclasses","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":" public String parse(String word) throws GlutiException {","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":" ArrayList\u003cTask\u003e storage \u003d fstorage.readList();","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"garywongkai"},"content":" String function \u003d word.split(\" \")[0].toLowerCase();","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"garywongkai"},"content":" String[] input \u003d word.split(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"garywongkai"},"content":" function \u003d input[0].toLowerCase();","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"garywongkai"},"content":" switch (function) {","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"garywongkai"},"content":" case \"bye\":","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"garywongkai"},"content":" case \"list\":","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"garywongkai"},"content":" int num \u003d 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"garywongkai"},"content":" if (!storage.isEmpty()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"garywongkai"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"garywongkai"},"content":" for (Task x : storage) {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"garywongkai"},"content":" sb.append(num).append(\".\").append(x.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"garywongkai"},"content":" sb.append(\"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"garywongkai"},"content":" num++;","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"garywongkai"},"content":" return sb.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"garywongkai"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"garywongkai"},"content":" return \"List is Empty!\";","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"garywongkai"},"content":" case \"mark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"garywongkai"},"content":" int index \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"garywongkai"},"content":" storage.get(index - 1).setDone();","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"garywongkai"},"content":" Task task \u003d storage.get(index - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"garywongkai"},"content":" return \"Nice! I\u0027ve marked this task as done:\\n\" + task.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"garywongkai"},"content":" return \"Make sure that you have selected the correct task!\";","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"garywongkai"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"garywongkai"},"content":" index \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"garywongkai"},"content":" storage.get(index - 1).setunDone();","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"garywongkai"},"content":" Task task \u003d storage.get(index - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"garywongkai"},"content":" return \"OK, I\u0027ve marked this task as not done yet:\\n\" + task.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"garywongkai"},"content":" return \"Make sure that you have selected the correct task!\";","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"garywongkai"},"content":" case \"todo\":","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"garywongkai"},"content":" String[] tempinput \u003d word.split(\" \", 2);","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"garywongkai"},"content":" assert tempinput.length \u003e 2;","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"garywongkai"},"content":" Todo toDo \u003d new Todo(tempinput[1]);","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"garywongkai"},"content":" storage.add(toDo);","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"garywongkai"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"garywongkai"},"content":" sb.append(\"Got it. I\u0027ve added this task:\\n\").append(toDo);","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"garywongkai"},"content":" sb.append(\"Now you have \").append(storage.size()).append(\" tasks in the list.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"garywongkai"},"content":" return sb.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"garywongkai"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"garywongkai"},"content":" return \"Todo must have a description!\";","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"garywongkai"},"content":" case \"event\":","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"garywongkai"},"content":" String[] tempinpute \u003d word.split(\" \", 2);","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"garywongkai"},"content":" assert tempinpute.length \u003d\u003d 2 ;","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"garywongkai"},"content":" assert tempinpute[0].length() \u003e 1 ;","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"garywongkai"},"content":" String description \u003d tempinpute[1].split(\"/from\",2)[0];","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"garywongkai"},"content":" String[] period \u003d tempinpute[1].split(\"/from\",2)[1].split(\"/to\",2);","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"garywongkai"},"content":" Event event \u003d new Event(description, period);","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"garywongkai"},"content":" storage.add(event);","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"garywongkai"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"garywongkai"},"content":" sb.append(\"Got it. I\u0027ve added this task:\\n\").append(event);","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"garywongkai"},"content":" sb.append(\"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"garywongkai"},"content":" sb.append(\"Now you have \").append(storage.size()).append(\" tasks in the list.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"garywongkai"},"content":" return sb.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"garywongkai"},"content":" return(\"Event must be in this format event \u003cdescription\u003e /from \u003cdate+time\u003e /to \u003ctime\u003e\");","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"garywongkai"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"garywongkai"},"content":" String[] tempinputd \u003d word.split(\" \", 2);//[1].split(\" /by \", 2);","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"garywongkai"},"content":" assert tempinputd.length \u003d\u003d 2;","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"garywongkai"},"content":" assert tempinputd[0].length() \u003e 3;","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"garywongkai"},"content":" String description \u003d tempinputd[1].split(\"/by\", 2)[0];","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"garywongkai"},"content":" String time \u003d tempinputd[1].split(\"/by\", 2)[1];","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"garywongkai"},"content":" Deadline deadline \u003d new Deadline(description, time);","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"garywongkai"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":108,"author":{"gitId":"garywongkai"},"content":" storage.add(deadline);","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"garywongkai"},"content":" sb.append(\"Got it. I\u0027ve added this task:\\n\").append(deadline).append(\"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":110,"author":{"gitId":"garywongkai"},"content":" sb.append(\"Now you have \").append(storage.size()).append(\" tasks in the list.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":111,"author":{"gitId":"garywongkai"},"content":" return sb.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":112,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"garywongkai"},"content":" return \"Deadline must be in this format \u003cdescription\u003e /by \u003cdate+time\u003e\";","lastModifiedDate":"2024-02-07"},{"lineNumber":114,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"garywongkai"},"content":" case \"delete\":","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"garywongkai"},"content":" index \u003d Integer.parseInt(input[1]);","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":118,"author":{"gitId":"garywongkai"},"content":" Task task \u003d storage.get(index - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":119,"author":{"gitId":"garywongkai"},"content":" storage.remove(index - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"garywongkai"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":121,"author":{"gitId":"garywongkai"},"content":" sb.append(\"Noted. I\u0027ve removed this task:\\n\").append(","lastModifiedDate":"2024-02-07"},{"lineNumber":122,"author":{"gitId":"garywongkai"},"content":" task.toString()).append(\"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":123,"author":{"gitId":"garywongkai"},"content":" sb.append(\"Now you have \").append(storage.size()).append(\" tasks in the list.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":124,"author":{"gitId":"garywongkai"},"content":" return sb.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":125,"author":{"gitId":"garywongkai"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"garywongkai"},"content":" return \"Make sure that you have selected the correct task!\";","lastModifiedDate":"2024-02-07"},{"lineNumber":127,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"garywongkai"},"content":" case \"find\":","lastModifiedDate":"2024-02-01"},{"lineNumber":129,"author":{"gitId":"garywongkai"},"content":" ArrayList\u003cTask\u003e matchlist \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-01"},{"lineNumber":130,"author":{"gitId":"garywongkai"},"content":" String keyword \u003d input[1];","lastModifiedDate":"2024-02-01"},{"lineNumber":131,"author":{"gitId":"garywongkai"},"content":" for (Task x : storage) {","lastModifiedDate":"2024-02-01"},{"lineNumber":132,"author":{"gitId":"garywongkai"},"content":" if (x.isMatch(keyword)){","lastModifiedDate":"2024-02-01"},{"lineNumber":133,"author":{"gitId":"garywongkai"},"content":" matchlist.add(x);","lastModifiedDate":"2024-02-01"},{"lineNumber":134,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":135,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":136,"author":{"gitId":"garywongkai"},"content":" if (matchlist.isEmpty()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":137,"author":{"gitId":"garywongkai"},"content":" return \"No matching tasks!\";","lastModifiedDate":"2024-02-07"},{"lineNumber":138,"author":{"gitId":"garywongkai"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":139,"author":{"gitId":"garywongkai"},"content":" ui.sendMessage(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-02-07"},{"lineNumber":140,"author":{"gitId":"garywongkai"},"content":" int count \u003d 1;","lastModifiedDate":"2024-02-01"},{"lineNumber":141,"author":{"gitId":"garywongkai"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":142,"author":{"gitId":"garywongkai"},"content":" for (Task y : matchlist) {","lastModifiedDate":"2024-02-01"},{"lineNumber":143,"author":{"gitId":"garywongkai"},"content":" sb.append(count).append(\".\").append(y.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":144,"author":{"gitId":"garywongkai"},"content":" sb.append(\"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":145,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":146,"author":{"gitId":"garywongkai"},"content":" return sb.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":147,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":148,"author":{"gitId":"garywongkai"},"content":" default:","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"garywongkai"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":150,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":151,"author":{"gitId":"garywongkai"},"content":" //}","lastModifiedDate":"2024-01-31"},{"lineNumber":152,"author":{"gitId":"garywongkai"},"content":" fstorage.saveList(storage);","lastModifiedDate":"2024-01-31"},{"lineNumber":153,"author":{"gitId":"garywongkai"},"content":" return \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":154,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":155,"author":{"gitId":"garywongkai"},"content":" };","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"garywongkai":155}},{"path":"src/main/java/Gluti/helpers/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.helpers;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import Gluti.Gui.DialogBox;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"import Gluti.utils.GlutiException;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"import javafx.scene.control.*;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"import javafx.scene.layout.*;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" * Represents the control hub for user input and filestorage for user","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":"public class Ui {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" private Parser parser;","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" * Initializes a Ui instance and sets the status to \"working\"","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" public Ui(){","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" public String typeHi() {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" return \"Hello! I\u0027m Gluti\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" \"What can I do for you?\";","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":" public String typeBye() {","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" return \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":" public String sendMessage(String s) {","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"garywongkai"},"content":" return s;","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"garywongkai":34}},{"path":"src/main/java/Gluti/utils/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.utils;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import java.text.DateFormat;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"import java.text.ParseException;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"import java.text.SimpleDateFormat;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" * The Deadline subclass that is a child of Task class","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" protected String by;","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" * Initializes a Deadline instance","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" * @param description the name of the Deadline","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" * @param by the due date of the Tasks","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" super(description);","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" validDate(by);","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":" return \"[D]\" + super.toString() + \"(by:\" + by +\")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"garywongkai"},"content":" * Checks if the input is a valid date and perform the relevant formatting if valid","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"garywongkai"},"content":" * @param by the due date input","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"garywongkai"},"content":" private void validDate(String by) {","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"garywongkai"},"content":" String temp \u003d by.trim();","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"garywongkai"},"content":" DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"garywongkai"},"content":" DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"garywongkai"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"garywongkai"},"content":" LocalDate parsedDate \u003d LocalDate.parse(temp, inputFormatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"garywongkai"},"content":" String formattedDate \u003d parsedDate.format(outputFormatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"garywongkai"},"content":" this.by \u003d \" \" +formattedDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"garywongkai"},"content":"// System.out.println(\"Input Date: \" + temp);","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"garywongkai"},"content":"// System.out.println(\"Formatted Date: \" + formattedDate);","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"garywongkai"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"garywongkai"},"content":" // Handle the parsing exception (invalid format)","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"garywongkai"},"content":" //System.out.println(\"Error: Invalid date format\");","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"garywongkai":52}},{"path":"src/main/java/Gluti/utils/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.utils;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":" * The Event subclass that is a child of Task class","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" protected String[] date;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" * Initializes a Event instance","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" * @param description name of the Event","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" * @param date the period of the Event","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" public Event(String description, String[] date) {","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" super(description);","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" * Overloaded constructor for FileStorage tasks mounting","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" * @param description name of the Event","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":" * @param date1 the start period of the Event","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" * @param date2 the end period of the Event","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":" public Event(String description, String date1, String date2) {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":" this.date \u003d new String[] {date1,date2};","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"garywongkai"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"garywongkai"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"garywongkai"},"content":" return \"[E]\" + super.toString() + \"(from:\" + date[0] + \"to:\"+ date[1] + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"garywongkai":36}},{"path":"src/main/java/Gluti/utils/GlutiException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.utils;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"public class GlutiException extends Exception{","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":" public GlutiException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"garywongkai":7}},{"path":"src/main/java/Gluti/utils/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.utils;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"public class Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":" protected String description;","lastModifiedDate":"2024-01-21"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" return \"[\" + getStatusIcon() + \"] \" + description;","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":" public void setDone() {","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"garywongkai"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"garywongkai"},"content":" public void setunDone() { isDone \u003d false; }","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"garywongkai"},"content":" public boolean isMatch(String keyword) {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"garywongkai"},"content":" return this.description.contains(keyword);","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"garywongkai":29}},{"path":"src/main/java/Gluti/utils/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.utils;","lastModifiedDate":"2024-01-21"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":" * Simple Todo subclass that is a child of Task","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" * Initializes a Todo instance","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" * @param description name of Todo task","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" super(description);","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"garywongkai":20}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"garywongkai":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"Gluti.MainWindow\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"garywongkai"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"garywongkai"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"garywongkai"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"garywongkai"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"garywongkai"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"garywongkai"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"garywongkai":19}},{"path":"src/test/java/Gluti/utils/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.utils;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" public void paramTest(){","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" Deadline testDeadline \u003d new Deadline(\"paramTest\", \"21/12/1999\");","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" assertEquals(testDeadline.toString(), \"[D][ ] paramTest(by: Dec 21 1999)\");","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"garywongkai":13}},{"path":"src/test/java/Gluti/utils/TodoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"package Gluti.utils;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"public class TodoTest {","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":" public void todoTest(){","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":" Todo testTodo \u003d new Todo(\"todoTest\");","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":" assertEquals(testTodo.toString(), \"[T][ ] todoTest\");","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"garywongkai"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"garywongkai":13}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"garywongkai"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"garywongkai"},"content":"todo read book","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"garywongkai"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"garywongkai"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"garywongkai"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"garywongkai"},"content":"mark 1","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"garywongkai"},"content":"mark 2","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"garywongkai"},"content":"event project meeting /from Monday 2pm /to 6pm","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"garywongkai"},"content":"todo join club meeting","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"garywongkai"},"content":"mark 4","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"garywongkai"},"content":"list","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"garywongkai"},"content":"bye","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"garywongkai":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":"garywongkai"},"content":"javac -cp ..\\src\\main\\java\\Gluti -Xlint:none -d ..\\bin ..\\src\\main\\java\\Gluti\\*.java","lastModifiedDate":"2024-01-29"},{"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":"garywongkai"},"content":"java -classpath ..\\bin Gluti \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":{"garywongkai":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":"garywongkai"},"content":"if ! javac -cp ../src/main/java/ -Xlint:none -d ../bin ../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":"garywongkai"},"content":"java -classpath ../bin Gluti \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":{"garywongkai":2,"-":36}}] diff --git a/garywongkai_ip_master/commits.json b/garywongkai_ip_master/commits.json index 7de53c04..89cc99de 100644 --- a/garywongkai_ip_master/commits.json +++ b/garywongkai_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"garywongkai":[{"date":"2024-01-21","commitResults":[{"hash":"6fc366f64d53fd91de69cf73a4e87b184549d862","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-3","Level-2","Level-1","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":6}}},{"hash":"39d35337b45b4f2cc5d04e9c6f347bf9d6fc11c8","isMergeCommit":false,"messageTitle":"Refactor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":17}}},{"hash":"558ff264bd057bec07ed7c77325542aa779b1ee4","isMergeCommit":false,"messageTitle":"Checkpoint","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":0}}},{"hash":"f7b57501af0f245da8d76735c2c149b021c7b5ea","isMergeCommit":false,"messageTitle":"Checkpoint","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"72fcbd6ebf7c223d18e3f326d92a8a1a99c09ef1","isMergeCommit":false,"messageTitle":"New Checkpoint","messageBody":"","tags":["Level-6","Level-5","Level-4","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":12}}}]},{"date":"2024-01-29","commitResults":[{"hash":"2cf73dd931679eda792212693abb7a69768d7cde","isMergeCommit":false,"messageTitle":"Checkpoint 2","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":116,"deletions":93},"bat":{"insertions":2,"deletions":2},"sh":{"insertions":2,"deletions":2}}},{"hash":"5896a51de65d8c14c5e6cec56f2ecf5d3136521b","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":125,"deletions":6}}},{"hash":"4233eec81b9abbf1b3300dc30d9eb2e30a748ea6","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":2,"deletions":3}}},{"hash":"7a04ba8bb1736be896e8ddbf24b6e44fc3f2766c","isMergeCommit":false,"messageTitle":"Checkpoint 3","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":3}}}]},{"date":"2024-01-30","commitResults":[{"hash":"ee6726a12902ca52c8fee4a30687bd0f29afad6d","isMergeCommit":false,"messageTitle":"Checkpoint 3","messageBody":"","tags":["A-jar"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":3,"deletions":3}}}]},{"date":"2024-01-31","commitResults":[{"hash":"60beb3d2293d44423aa1fe2bf63341d5462fc322","isMergeCommit":false,"messageTitle":"LocalDate addition","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":27,"deletions":3}}},{"hash":"fae26d0bc340e8c618fb89cc6f432772ce125691","isMergeCommit":false,"messageTitle":"More OOP Checkpoint","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":4},"java":{"insertions":167,"deletions":49}}},{"hash":"211219ced8471a7172175ade306708f3e1f44708","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"fe68581511a89483769fe0cbdc4119d8cc573171","isMergeCommit":false,"messageTitle":"Gradle Test","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":0},"java":{"insertions":26,"deletions":0}}},{"hash":"feeeda6479362c3a6d56963ee47fe9398888b8b9","isMergeCommit":true,"messageTitle":"Checkpoint Gradle Test","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f64cc353376f37addd479ba6caf990156212ea77","isMergeCommit":false,"messageTitle":"New Commit after Testing","messageBody":"","tags":["Level-9","A-Packages","A-MoreOOP","A-JavaDoc","A-JUnit","A-CodingStandard"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3}}}]},{"date":"2024-02-01","commitResults":[{"hash":"6b9155ce1065aa5aa411ab75c960d72a8287548d","isMergeCommit":false,"messageTitle":"Update header comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":127}}},{"hash":"ca71ef1478d78470afa5782892cadc7b8884e5ff","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":63,"deletions":14}}},{"hash":"85adfb32566e3463813812f7cd03108f8b5746e4","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":0}}},{"hash":"9b56d4f453ae1d12046580529b92e547908dd894","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":4,"deletions":1}}},{"hash":"c9fa3d6fa4e9ad7b2142b37100a603540aaac320","isMergeCommit":false,"messageTitle":"Add Find function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"4aa97bf54c32b26c2ad0b10ea13bb25b1711bbfb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8d4b959a172c79866dcb9753bc230ef9e0f1fec8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"169803f0cf264452d3c7cf091e513ee0df3f0803","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-02","commitResults":[{"hash":"72bf5c3c480998f9f46185edeae7c1baab61bc43","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"md":{"insertions":78,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"garywongkai":{"java":521,"md":139,"fxml":0,"sh":2,"bat":2,"gradle":1,"txt":16}},"authorContributionVariance":{"garywongkai":19666.463},"authorDisplayNameMap":{"garywongkai":"CS2103-F15-4 WONG..I LI"}} +{"authorDailyContributionsMap":{"garywongkai":[{"date":"2024-01-21","commitResults":[{"hash":"6fc366f64d53fd91de69cf73a4e87b184549d862","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-3","Level-2","Level-1","Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":6}}},{"hash":"39d35337b45b4f2cc5d04e9c6f347bf9d6fc11c8","isMergeCommit":false,"messageTitle":"Refactor","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":17}}},{"hash":"558ff264bd057bec07ed7c77325542aa779b1ee4","isMergeCommit":false,"messageTitle":"Checkpoint","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":48,"deletions":0}}},{"hash":"f7b57501af0f245da8d76735c2c149b021c7b5ea","isMergeCommit":false,"messageTitle":"Checkpoint","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"72fcbd6ebf7c223d18e3f326d92a8a1a99c09ef1","isMergeCommit":false,"messageTitle":"New Checkpoint","messageBody":"","tags":["Level-6","Level-5","Level-4","A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":12}}}]},{"date":"2024-01-29","commitResults":[{"hash":"2cf73dd931679eda792212693abb7a69768d7cde","isMergeCommit":false,"messageTitle":"Checkpoint 2","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":116,"deletions":93},"bat":{"insertions":2,"deletions":2},"sh":{"insertions":2,"deletions":2}}},{"hash":"5896a51de65d8c14c5e6cec56f2ecf5d3136521b","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":125,"deletions":6}}},{"hash":"4233eec81b9abbf1b3300dc30d9eb2e30a748ea6","isMergeCommit":false,"messageTitle":"Level-7","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":3},"java":{"insertions":2,"deletions":3}}},{"hash":"7a04ba8bb1736be896e8ddbf24b6e44fc3f2766c","isMergeCommit":false,"messageTitle":"Checkpoint 3","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":3}}}]},{"date":"2024-01-30","commitResults":[{"hash":"ee6726a12902ca52c8fee4a30687bd0f29afad6d","isMergeCommit":false,"messageTitle":"Checkpoint 3","messageBody":"","tags":["A-jar"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":3,"deletions":3}}}]},{"date":"2024-01-31","commitResults":[{"hash":"60beb3d2293d44423aa1fe2bf63341d5462fc322","isMergeCommit":false,"messageTitle":"LocalDate addition","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":27,"deletions":3}}},{"hash":"fae26d0bc340e8c618fb89cc6f432772ce125691","isMergeCommit":false,"messageTitle":"More OOP Checkpoint","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":4},"java":{"insertions":167,"deletions":49}}},{"hash":"211219ced8471a7172175ade306708f3e1f44708","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"fe68581511a89483769fe0cbdc4119d8cc573171","isMergeCommit":false,"messageTitle":"Gradle Test","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":0},"java":{"insertions":26,"deletions":0}}},{"hash":"feeeda6479362c3a6d56963ee47fe9398888b8b9","isMergeCommit":true,"messageTitle":"Checkpoint Gradle Test","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f64cc353376f37addd479ba6caf990156212ea77","isMergeCommit":false,"messageTitle":"New Commit after Testing","messageBody":"","tags":["Level-9","A-Packages","A-MoreOOP","A-JavaDoc","A-JUnit","A-CodingStandard"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3}}}]},{"date":"2024-02-01","commitResults":[{"hash":"6b9155ce1065aa5aa411ab75c960d72a8287548d","isMergeCommit":false,"messageTitle":"Update header comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":100,"deletions":127}}},{"hash":"ca71ef1478d78470afa5782892cadc7b8884e5ff","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":63,"deletions":14}}},{"hash":"85adfb32566e3463813812f7cd03108f8b5746e4","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":1,"deletions":0}}},{"hash":"9b56d4f453ae1d12046580529b92e547908dd894","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":4,"deletions":1}}},{"hash":"c9fa3d6fa4e9ad7b2142b37100a603540aaac320","isMergeCommit":false,"messageTitle":"Add Find function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"4aa97bf54c32b26c2ad0b10ea13bb25b1711bbfb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8d4b959a172c79866dcb9753bc230ef9e0f1fec8","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"169803f0cf264452d3c7cf091e513ee0df3f0803","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-02","commitResults":[{"hash":"72bf5c3c480998f9f46185edeae7c1baab61bc43","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"md":{"insertions":78,"deletions":2}}}]},{"date":"2024-02-03","commitResults":[{"hash":"778614d9fb0debba931ce28ac9f1e812e9e87922","isMergeCommit":false,"messageTitle":"Implement GUI","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":13,"deletions":0},"txt":{"insertions":2,"deletions":1},"java":{"insertions":129,"deletions":35}}},{"hash":"7b2f43883117a13f5ed295f13bf053f372f98216","isMergeCommit":false,"messageTitle":"Implement GUI","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}}]},{"date":"2024-02-05","commitResults":[{"hash":"70bde0ded56bea17f02d1d96a6e917aef43144d6","isMergeCommit":false,"messageTitle":"WIP GUI","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":53,"deletions":22}}}]},{"date":"2024-02-06","commitResults":[{"hash":"2b9bb7330855a3bd80423bfab4fc4609ac61091a","isMergeCommit":false,"messageTitle":"New Checkpoint","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":131,"deletions":49}}},{"hash":"64c6afacd9a1be4e804da451f7c20b1c0e426d94","isMergeCommit":false,"messageTitle":"GUI Checkpoint","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":59,"deletions":106}}}]},{"date":"2024-02-07","commitResults":[{"hash":"2c61549e74e609d4e03dfd169593dca10981a33b","isMergeCommit":false,"messageTitle":"GUI v1","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":4},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":213,"deletions":225}}}]}]},"authorFileTypeContributionMap":{"garywongkai":{"java":675,"md":139,"fxml":35,"sh":2,"bat":2,"gradle":14,"txt":16}},"authorContributionVariance":{"garywongkai":25436.01},"authorDisplayNameMap":{"garywongkai":"CS2103-F15-4 WONG..I LI"}} diff --git a/gavin331_ip_master/authorship.json b/gavin331_ip_master/authorship.json index 186b2e7d..18cac32b 100644 --- a/gavin331_ip_master/authorship.json +++ b/gavin331_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":"gavin331"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"checkstyle {","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" mainClass.set(\"bartenderbob.BartenderBob\")","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" archiveBaseName \u003d \"BartenderBob\"","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" archiveVersion \u003d \"0.1\"","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"gavin331":8,"-":30}},{"path":"src/main/java/bartenderbob/BartenderBob.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":" * Represents a BartenderBob chatbot that stores tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":" * @author Gavin Goh","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":" * @version 0.1","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"public class BartenderBob {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" /** Name of the chatbot */","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" private static final String NAME \u003d \"BartenderBob\";","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" /** Save tasks to the user\u0027s hard disk */","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" private Storage storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" /** Keeps track of the user tasks */","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" /** Displays the chatbot\u0027s user interface to the user */","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" private Ui ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" * Creates a BartenderBob with the specified file path.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" * @param filePath The file path of the stored tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" public BartenderBob(String filePath) {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" ui.showWelcomeMessage(NAME);","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" } catch (BartenderBobException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" * Sets Bartender Bob to begin receiving and responding to user inputs.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" public void run() {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" InputHandler inputHandler \u003d new InputHandler();","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" inputHandler.handleInput(tasks, ui);","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" * Initialises and runs the BartenderBob chatbot.","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" * @param args Command line arguments.","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" new BartenderBob(\"./data/tasks.txt\").run();","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"gavin331":49}},{"path":"src/main/java/bartenderbob/BartenderBobException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":" * Handles exceptions that is specific to BartenderBob chatbot.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"public class BartenderBobException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" /** First word of the user input */","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" private String firstWord;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" /** Displays messages to the user */","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" private static final Ui UI \u003d new Ui();","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" * Creates an instance of BartenderBobException.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" public BartenderBobException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" * Creates an instance of BartenderBobException and initialise","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" * it with the first word of the user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" * @param firstWord First word of the user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" public BartenderBobException(String firstWord) {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" this.firstWord \u003d firstWord;","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" * Shows invalid input error message when a user","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" * types in a command BartenderBob cannot comprehend.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" * @param userInput The user input to BartenderBob.","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" public static void invalidInput(String userInput) {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" UI.showInvalidInputError(userInput);","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" * Displays error message when a user gives an input","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" * with missing parameters that is required by BartenderBob.","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" public void displayError() {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" switch (firstWord) {","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" UI.showInvalidMarkCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" UI.showInvalidUnmarkCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" UI.showInvalidDeleteCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" UI.showInvalidTodoCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" UI.showInvalidDeadlineCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" UI.showInvalidEventCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" default:","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" * Displays error message when a user specified task index","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" * is out of bounds.","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" public void tasksOutOfBounds() {","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" UI.showOutOfBoundsCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"gavin331":74}},{"path":"src/main/java/bartenderbob/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":" * Represents the Deadline task that has a due date.","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" /** The due date for the task */","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" private LocalDate dueDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" * Creates an instance of the Deadline task with a description and a","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" * due date.","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" * @param description Description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" * @param by Due date of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" * @throws IllegalArgumentException If \u0027by\u0027 parameter is not in yyyy-MM-dd format.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" public Deadline(String description, String by) throws IllegalArgumentException {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" if (!isValidDateFormat(by)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" this.dueDate \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" * Creates an instance of the Deadline task with a description, due date","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" * and whether it has been completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" * @param description Description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" * @param by Due date of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" * @param isDone Represents whether the task has been completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" * @throws IllegalArgumentException If \u0027by\u0027 parameter is not in yyyy-MM-dd format.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" public Deadline(String description, String by, boolean isDone) throws IllegalArgumentException {","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" super(description, isDone);","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" if (!isValidDateFormat(by)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" this.dueDate \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" * Verifies whether a string is of the format yyyy-MM-dd.","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" * @param by Input String.","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" * @return Whether the string follows the format yyyy-MM-dd.","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" private boolean isValidDateFormat(String by) {","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" LocalDate.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" return true;","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" * Shows the deadline task information when the user uses the \u0027list\u0027 command.","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" * @return Complete deadline task information as a String.","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" public String show() {","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" super.status \u003d isDone ? \"X\" : \" \";","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" String dateFormat \u003d this.dueDate.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" String byFormat \u003d \"(by: \" + dateFormat + \")\";","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" return \"[D]\" + \"[\" + status + \"]\" + \" \" + this.description + \" \" + byFormat;","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gavin331":72}},{"path":"src/main/java/bartenderbob/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":" * Represents the Event task that has a description, from date and a due date.","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" /** Event start date */","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" private LocalDate from;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" /** Event due date */","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" private LocalDate by;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" * Creates an instance of an Event class that has a description, from date","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" * and a by date.","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" * @param description Description of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" * @param from Start date of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" * @param by Due date of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" public Event(String description, String from, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" if (!isValidDateFormat(from, by)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" this.from \u003d LocalDate.parse(from, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" this.by \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" * Creates an instance of an Event class that has a description, from date,","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" * by date and whether it has been completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" * @param description Description of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" * @param from Start date of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" * @param by Due date of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" * @param isDone Represents whether the task has been completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" public Event(String description, String from, String by, boolean isDone) {","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" super(description, isDone);","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" if (!isValidDateFormat(from, by)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" this.from \u003d LocalDate.parse(from, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" this.by \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" * Verifies whether a string is of the format yyyy-MM-dd.","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" * @param by Input String.","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" * @return Whether the string follows the format yyyy-MM-dd.","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" private boolean isValidDateFormat(String from, String by) {","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" LocalDate.parse(from, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" LocalDate.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" return true;","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" * Shows the event task information when the user uses the \u0027list\u0027 command.","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" * @return Complete event task information as a String.","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" public String show() {","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" super.status \u003d isDone ? \"X\" : \" \";","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" String fromFormat \u003d this.from.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" String byFormat \u003d this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" String fromByFormat \u003d \"(from: \" + fromFormat + \" to: \" + byFormat + \")\";","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" return \"[E]\" + \"[\" + status + \"]\" + \" \" + this.description + \" \" + fromByFormat;","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gavin331":78}},{"path":"src/main/java/bartenderbob/InputHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":" * Represents a parser that receives and handle user inputs.","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"public class InputHandler {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" * Receives and handles the user inputs to BartenderBob chatbot.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" * @param taskList The tasks that the user has inputted into BartenderBob.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" * @param ui Displays appropriate messages for its corresponding user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" public void handleInput(TaskList taskList, Ui ui) {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" while (true) {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" String[] stringComponents \u003d userInput.split(\" \");","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" String firstWord \u003d stringComponents[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" String index;","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" if (firstWord.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" ui.leave();","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" break;","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" switch (firstWord) {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" case \"list\":","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" taskList.list();","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" case \"mark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" index \u003d stringComponents[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" taskList.markDone(index);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" index \u003d stringComponents[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" taskList.unmarkDone(index);","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" index \u003d stringComponents[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" taskList.delete(index);","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" break;","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" case \"find\":","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" String substring \u003d stringComponents[1];","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" taskList.find(substring);","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" case \"todo\":","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" String str \u003d userInput.split(\"todo \")[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" ToDo task \u003d new ToDo(str);","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" taskList.store(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" String[] deadlineComponents \u003d userInput.split(\"deadline | /by \");","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" Deadline deadline \u003d new Deadline(deadlineComponents[1], deadlineComponents[2]);","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" taskList.store(deadline);","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" case \"event\":","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" String[] eventComponents \u003d userInput.split(\"event | /from | /to \");","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" Event event \u003d new Event(eventComponents[1], eventComponents[2], eventComponents[3]);","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" taskList.store(event);","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" BartenderBobException.invalidInput(userInput);","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" } catch (BartenderBobException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" //This exception is when the index from user input is out of the TASKS bounds.","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" e.tasksOutOfBounds();","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" //IndexOutOfBoundsException is for missing userInputs.","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" BartenderBobException error \u003d new BartenderBobException(firstWord);","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" error.displayError();","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" ui.showInvalidDateFormat();","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"gavin331":77}},{"path":"src/main/java/bartenderbob/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import java.util.List;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" * Represents the storage class to store user tasks into the hard disk.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"public class Storage {","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" /** File path to the storage file */","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" private String filePath; //eg \"./data/tasks.txt\"","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" /** Displays messages to the user */","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" private Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" * Creates an instance of the Storage class and initialises its file path.","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" * @param filePath File path to the storage file.","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" * Loads the tasks from the storage file into BartenderBob.","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" * @return ArrayList of tasks","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" * @throws BartenderBobException If error occurred while loading the tasks into BartenderBob.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" public ArrayList\u003cTask\u003e load() throws BartenderBobException {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" ArrayList\u003cTask\u003e taskArray \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" Path path \u003d Paths.get(filePath); //Operating system independent","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" if (Files.exists(path)) {","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" List\u003cString\u003e tasks \u003d Files.readAllLines(path);","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" for (String taskString : tasks) {","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" String[] taskStringComponents \u003d taskString.split(\" \\\\| \");","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" String taskType \u003d taskStringComponents[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" String taskStatus \u003d taskStringComponents[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" boolean isDone \u003d taskStatus.equals(\"X\");","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" String description \u003d taskStringComponents[2];","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" taskArray.add(new ToDo(description, isDone));","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" String dueDate \u003d taskStringComponents[3];","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" dueDate \u003d convertDateFormat(dueDate);","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" taskArray.add(new Deadline(description, dueDate, isDone));","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" String fromDate \u003d taskStringComponents[3];","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" fromDate \u003d convertDateFormat(fromDate);","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" String toDate \u003d taskStringComponents[4];","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" toDate \u003d convertDateFormat(toDate);","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" taskArray.add(new Event(description, fromDate, toDate, isDone));","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" //Create data directory","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" //if path is \"./data/tasks.txt\", then path.getParent()","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" //gives data.","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" Files.createDirectories(path.getParent());","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" //Create tasks.txt","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" Files.createFile(path);","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" return taskArray;","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" throw new BartenderBobException();","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" * Save changes to the files in the hard disk","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" * especially after unmarking, marking and deleting them.","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" * @param tasks The tasks that the user has inputted to BartenderBob.","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" public void saveChanges(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":" Files.write(path, \"\".getBytes(), StandardOpenOption.TRUNCATE_EXISTING);","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" saveTask(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":" ui.showSaveChangesError();","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" * Convert date format from MMM dd yyyy to yyyy-MM-dd","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" * @param oldDateFormat Date which is of MMM dd yyyy format.","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":" * @return Date which is of yyyy-MM-dd format.","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"gavin331"},"content":" private String convertDateFormat(String oldDateFormat) {","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":" DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":" // Parse the original string to LocalDate","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"gavin331"},"content":" LocalDate localDate \u003d LocalDate.parse(oldDateFormat, inputFormatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":108,"author":{"gitId":"gavin331"},"content":" // Define the formatter for the output pattern","lastModifiedDate":"2024-02-01"},{"lineNumber":109,"author":{"gitId":"gavin331"},"content":" DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-02-01"},{"lineNumber":110,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":111,"author":{"gitId":"gavin331"},"content":" // Format the LocalDate to the desired output pattern","lastModifiedDate":"2024-02-01"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":" return localDate.format(outputFormatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":113,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":114,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":115,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":116,"author":{"gitId":"gavin331"},"content":" * Saves tasks to the storage file specified by the filepath,","lastModifiedDate":"2024-02-02"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":" * especially after adding them to the tasks list.","lastModifiedDate":"2024-02-02"},{"lineNumber":118,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":119,"author":{"gitId":"gavin331"},"content":" * @param task The task that we are saving to the storage file.","lastModifiedDate":"2024-02-02"},{"lineNumber":120,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":121,"author":{"gitId":"gavin331"},"content":" public void saveTask(Task task) {","lastModifiedDate":"2024-02-02"},{"lineNumber":122,"author":{"gitId":"gavin331"},"content":" //[T][X] read book \u003d T | X | read book","lastModifiedDate":"2024-02-02"},{"lineNumber":123,"author":{"gitId":"gavin331"},"content":" //[D][ ] return book (by: June 6th) \u003d D | | return book | June 6th","lastModifiedDate":"2024-02-02"},{"lineNumber":124,"author":{"gitId":"gavin331"},"content":" //[E][ ] project meeting (from: Aug 6th 2pm to: 4pm)","lastModifiedDate":"2024-02-02"},{"lineNumber":125,"author":{"gitId":"gavin331"},"content":" // \u003d E | | project meeting | Aug 6th 2pm | 4pm","lastModifiedDate":"2024-02-02"},{"lineNumber":126,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":127,"author":{"gitId":"gavin331"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2024-02-02"},{"lineNumber":128,"author":{"gitId":"gavin331"},"content":" String taskString \u003d task.show();","lastModifiedDate":"2024-02-01"},{"lineNumber":129,"author":{"gitId":"gavin331"},"content":" String typeOfTask \u003d taskString.substring(1, 2); //T","lastModifiedDate":"2024-02-01"},{"lineNumber":130,"author":{"gitId":"gavin331"},"content":" String taskStatus \u003d taskString.substring(4, 5); //X","lastModifiedDate":"2024-02-01"},{"lineNumber":131,"author":{"gitId":"gavin331"},"content":" String taskDescription \u003d \"\";","lastModifiedDate":"2024-02-01"},{"lineNumber":132,"author":{"gitId":"gavin331"},"content":" String saveEntry \u003d \"\";","lastModifiedDate":"2024-02-01"},{"lineNumber":133,"author":{"gitId":"gavin331"},"content":" if (typeOfTask.equals(\"T\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":134,"author":{"gitId":"gavin331"},"content":" taskDescription \u003d taskString.substring(7);","lastModifiedDate":"2024-02-01"},{"lineNumber":135,"author":{"gitId":"gavin331"},"content":" saveEntry \u003d typeOfTask + \" | \" + taskStatus + \" | \" + taskDescription;","lastModifiedDate":"2024-02-01"},{"lineNumber":136,"author":{"gitId":"gavin331"},"content":" } else if (typeOfTask.equals(\"D\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":137,"author":{"gitId":"gavin331"},"content":" int startIndex \u003d taskString.indexOf(\"(by: \");","lastModifiedDate":"2024-02-01"},{"lineNumber":138,"author":{"gitId":"gavin331"},"content":" int endIndex \u003d taskString.indexOf(\")\");","lastModifiedDate":"2024-02-01"},{"lineNumber":139,"author":{"gitId":"gavin331"},"content":" taskDescription \u003d taskString.substring(7, startIndex - 1);","lastModifiedDate":"2024-02-01"},{"lineNumber":140,"author":{"gitId":"gavin331"},"content":" String deadline \u003d taskString.substring(startIndex + 5, endIndex);","lastModifiedDate":"2024-02-01"},{"lineNumber":141,"author":{"gitId":"gavin331"},"content":" saveEntry \u003d typeOfTask + \" | \" + taskStatus + \" | \" + taskDescription","lastModifiedDate":"2024-02-01"},{"lineNumber":142,"author":{"gitId":"gavin331"},"content":" + \" | \" + deadline;","lastModifiedDate":"2024-02-01"},{"lineNumber":143,"author":{"gitId":"gavin331"},"content":" } else if (typeOfTask.equals(\"E\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":144,"author":{"gitId":"gavin331"},"content":" int startIndex \u003d taskString.indexOf(\"(from: \");","lastModifiedDate":"2024-02-01"},{"lineNumber":145,"author":{"gitId":"gavin331"},"content":" taskDescription \u003d taskString.substring(7, startIndex - 1);","lastModifiedDate":"2024-02-01"},{"lineNumber":146,"author":{"gitId":"gavin331"},"content":" int endIndex \u003d taskString.indexOf(\" to:\");","lastModifiedDate":"2024-02-01"},{"lineNumber":147,"author":{"gitId":"gavin331"},"content":" String fromDate \u003d taskString.substring(startIndex + 7, endIndex);","lastModifiedDate":"2024-02-01"},{"lineNumber":148,"author":{"gitId":"gavin331"},"content":" startIndex \u003d taskString.indexOf(\")\");","lastModifiedDate":"2024-02-01"},{"lineNumber":149,"author":{"gitId":"gavin331"},"content":" String toDate \u003d taskString.substring(endIndex + 5, startIndex);","lastModifiedDate":"2024-02-01"},{"lineNumber":150,"author":{"gitId":"gavin331"},"content":" saveEntry \u003d typeOfTask + \" | \" + taskStatus + \" | \" + taskDescription","lastModifiedDate":"2024-02-01"},{"lineNumber":151,"author":{"gitId":"gavin331"},"content":" + \" | \" + fromDate + \" | \" + toDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":152,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":153,"author":{"gitId":"gavin331"},"content":" Files.write(path, (saveEntry + System.lineSeparator()).getBytes(), StandardOpenOption.APPEND);","lastModifiedDate":"2024-02-01"},{"lineNumber":154,"author":{"gitId":"gavin331"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":155,"author":{"gitId":"gavin331"},"content":" ui.showSaveTasksError();","lastModifiedDate":"2024-02-02"},{"lineNumber":156,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":157,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":158,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"gavin331":158}},{"path":"src/main/java/bartenderbob/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"public class Task {","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":" protected boolean isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":" protected String status;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" public void mark() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" public void unmark() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" public String show() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" return \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" public String getDescription() {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" return this.description;","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"gavin331":30}},{"path":"src/main/java/bartenderbob/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"public class TaskList {","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":" private final Storage STORAGE \u003d new Storage(\"./data/tasks.txt\");","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" private final ArrayList\u003cTask\u003e TASKS;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" private Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" this.TASKS \u003d tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" public void store(Task task) {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" TASKS.add(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" STORAGE.saveTask(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" int totalTasks \u003d TASKS.size();","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" ui.showStoreTasksMessage(task, totalTasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" public void list() {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" ui.showListCommandHeader();","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" for (int i \u003d 0; i \u003c TASKS.size(); i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" int number \u003d i + 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" ui.showListElements(number, TASKS, i);","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" public void markDone(String index) throws BartenderBobException {","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" int integerIndex \u003d Integer.parseInt(index);","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" Task task \u003d TASKS.get(integerIndex - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" task.mark();","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" STORAGE.saveChanges(TASKS);","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" ui.showMarkDone(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" throw new BartenderBobException();","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" public void unmarkDone(String index) throws BartenderBobException {","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" int integerIndex \u003d Integer.parseInt(index);","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" Task task \u003d TASKS.get(integerIndex - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" task.unmark();","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" STORAGE.saveChanges(TASKS);","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" ui.showUnmarkDone(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" throw new BartenderBobException();","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" public void delete(String index) throws BartenderBobException {","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" int integerIndex \u003d Integer.parseInt(index);","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" String display \u003d TASKS.get(integerIndex - 1).show();","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" TASKS.remove(integerIndex - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" STORAGE.saveChanges(TASKS);","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" int totalTasks \u003d TASKS.size();","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" ui.showDelete(display, totalTasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" throw new BartenderBobException();","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" public void find(String substring) {","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" ArrayList\u003cTask\u003e result \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" for (Task task : TASKS) {","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" if (task.getDescription().contains(substring)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" result.add(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" ui.showFindCommandHeader();","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" for (int i \u003d 0; i \u003c result.size(); i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" int number \u003d i + 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" ui.showListElements(number, result, i);","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"gavin331":75}},{"path":"src/main/java/bartenderbob/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":" super(description);","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" super(description, isDone);","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" public String show() {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" super.status \u003d isDone ? \"X\" : \" \";","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" return \"[T]\" + \"[\" + status + \"]\" + \" \" + this.description;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"gavin331":15}},{"path":"src/main/java/bartenderbob/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"public class Ui {","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":" public void leave() {","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":" System.out.println(\"Bye! Another round next time!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" public void showWelcomeMessage(String name) {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" System.out.println(\"Welcome back! I\u0027m \" + name + \"\\nHow\u0027s it going out there?\");","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" System.out.println(\"Error occurred while loading!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" public void showInvalidInputError(String userInput) {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" System.out.println(\"What? I can\u0027t understand \" + userInput + \" \u003d(\");","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" public void showInvalidMarkCommand() {","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" System.out.println(\"Hmm, please provide a valid task number to mark.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" public void showInvalidUnmarkCommand() {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" System.out.println(\"Hmm, please provide a valid task number to unmark.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" public void showInvalidDeleteCommand() {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" System.out.println(\"Hmm, please provide a valid task number to delete.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" public void showInvalidTodoCommand() {","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" System.out.println(\"Hmm, did you add in a description for the todo?\");","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" public void showInvalidDeadlineCommand() {","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" System.out.println(\"Hey, this is an invalid format for deadline!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" public void showInvalidDateFormat() {","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" System.out.println(\"Date format should be of the form yyyy-MM-dd!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" public void showInvalidEventCommand() {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" System.out.println(\"Hey, this is an invalid format for event!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" public void showOutOfBoundsCommand() {","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" System.out.println(\"The index is out of bounds!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" public void showSaveChangesError() {","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" System.out.println(\"Something went wrong while saving changes!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" public void showSaveTasksError() {","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" System.out.println(\"Something went wrong while saving tasks!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" public void showStoreTasksMessage(Task task, int totalTasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" System.out.println(task.show());","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" System.out.println(\"Now you have \" + totalTasks + \" tasks in the list.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" public void showListCommandHeader() {","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" System.out.println(\"Here are the tasks in your list!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" public void showListElements(int number, ArrayList\u003cTask\u003e tasks, int i) {","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" System.out.println(number + \".\" + tasks.get(i).show());","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" public void showMarkDone(Task task) {","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" System.out.println(task.show());","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" public void showUnmarkDone(Task task) {","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" System.out.println(task.show());","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" public void showDelete(String display, int totalTasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" System.out.println(display);","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" System.out.println(\"Now you have \" + totalTasks + \" tasks in the list.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" public void showFindCommandHeader() {","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"gavin331":75}},{"path":"src/test/java/bartenderbob/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" public void deadline_invalidString_exceptionThrown() {","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" new Deadline(\"Testing!\", \"Tuesday\");","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" });","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" public void deadline_invalidMonth_exceptionThrown() {","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e {","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" new Deadline(\"Testing!\", \"2019-13-10\");","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" });","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" public void deadline_dayExceedBounds_exceptionThrown() {","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e {","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" new Deadline(\"Testing!\", \"2019-13-40\");","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" });","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" public void deadline_dayEqualZero_exceptionThrown() {","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e {","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" new Deadline(\"Testing!\", \"2019-13-0\");","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" });","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" public void deadline_validString_classCreated() {","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" Deadline test \u003d new Deadline(\"Testing!\", \"2019-10-10\");","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" assertNotNull(test, \"Deadline instance should not be null\");","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" assertEquals(test.show(), \"[D][ ] Testing! (by: Oct 10 2019)\");","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"gavin331":41}},{"path":"src/test/java/bartenderbob/ToDoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"public class ToDoTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" public void toDo_withoutIsDoneParameter_blankStatus() {","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" ToDo test \u003d new ToDo(\"Testing!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" assertNotNull(test, \"ToDo instance should not be null\");","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" assertEquals(test.show(), \"[T][ ] Testing!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" public void toDo_trueIsDoneParameter_blankStatus() {","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" ToDo test \u003d new ToDo(\"Testing!\", true);","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" assertNotNull(test, \"ToDo instance should not be null\");","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" assertEquals(test.show(), \"[T][X] Testing!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" public void toDo_falseIsDoneParameter_blankStatus() {","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" ToDo test \u003d new ToDo(\"Testing!\", false);","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" assertNotNull(test, \"ToDo instance should not be null\");","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" assertEquals(test.show(), \"[T][ ] Testing!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"gavin331":28}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"todo buy bread","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"mark 4","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"unmark 4","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"mark","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"unmark","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"delete","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"event","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"mark 5","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"mark 0","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"blah","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"gavin331":20}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"checkstyle {","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" useJUnitPlatform()","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":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" mainClass.set(\"bartenderbob.BartenderBob\")","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" archiveBaseName \u003d \"BartenderBob\"","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" archiveVersion \u003d \"0.1\"","lastModifiedDate":"2024-02-02"},{"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":{"gavin331":23,"-":30}},{"path":"src/main/java/bartenderbob/BartenderBob.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" * Represents a BartenderBob chatbot that stores tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" * @author Gavin Goh","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" * @version 0.1","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"public class BartenderBob extends Application {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" /** Name of the chatbot */","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" private static final String NAME \u003d \"BartenderBob\";","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" /** Save tasks to the user\u0027s hard disk */","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" private static Storage storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" /** Keeps track of the user tasks */","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" private static TaskList tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" /** Displays the chatbot\u0027s user interface to the user */","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" private static Ui ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" private Scene scene;","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" private Image user \u003d new Image(this.getClass().getResourceAsStream(\"/images/Luffy_Avatar.png\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" private Image duke \u003d new Image(this.getClass().getResourceAsStream(\"/images/Ussop_Avatar.png\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" public BartenderBob() {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" * Creates a BartenderBob with the specified file path.","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" * @param filePath The file path of the stored tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" public BartenderBob(String filePath) {","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" ui.showWelcomeMessage(NAME);","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" } catch (BartenderBobException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" //Step 1. Setting up required components","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" //The container for the content of the chat to scroll.","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" scrollPane \u003d new ScrollPane();","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" dialogContainer \u003d new VBox();","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" scrollPane.setContent(dialogContainer);","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" userInput \u003d new TextField();","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" sendButton \u003d new Button(\"Send\");","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" AnchorPane mainLayout \u003d new AnchorPane();","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" mainLayout.getChildren().addAll(scrollPane, userInput, sendButton);","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" scene \u003d new Scene(mainLayout);","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" stage.show();","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" //Step 2. Formatting the window to look as expected","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" stage.setTitle(\"BartenderBob\");","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" stage.setResizable(false);","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" stage.setMinHeight(600.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" stage.setMinWidth(400.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" mainLayout.setPrefSize(400.0, 600.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" scrollPane.setPrefSize(385, 535);","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" scrollPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER);","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" scrollPane.setVbarPolicy(ScrollPane.ScrollBarPolicy.ALWAYS);","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":" scrollPane.setVvalue(1.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" scrollPane.setFitToWidth(true);","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":" //You will need to import `javafx.scene.layout.Region` for this.","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" dialogContainer.setPrefHeight(Region.USE_COMPUTED_SIZE);","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" userInput.setPrefWidth(325.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"gavin331"},"content":" sendButton.setPrefWidth(55.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":" AnchorPane.setTopAnchor(scrollPane, 1.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" AnchorPane.setBottomAnchor(sendButton, 1.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" AnchorPane.setRightAnchor(sendButton, 1.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"gavin331"},"content":" AnchorPane.setLeftAnchor(userInput , 1.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"gavin331"},"content":" AnchorPane.setBottomAnchor(userInput, 1.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"gavin331"},"content":" //More code to be added here later","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":" //Part 3. Add functionality to handle user input.","lastModifiedDate":"2024-02-06"},{"lineNumber":106,"author":{"gitId":"gavin331"},"content":" sendButton.setOnMouseClicked((event) -\u003e {","lastModifiedDate":"2024-02-06"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":" handleUserInput();","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"gavin331"},"content":" });","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"gavin331"},"content":" userInput.setOnAction((event) -\u003e {","lastModifiedDate":"2024-02-06"},{"lineNumber":111,"author":{"gitId":"gavin331"},"content":" handleUserInput();","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":" });","lastModifiedDate":"2024-02-06"},{"lineNumber":113,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"gavin331"},"content":" //Scroll down to the end every time dialogContainer\u0027s height changes.","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"gavin331"},"content":" dialogContainer.heightProperty().addListener((observable) -\u003e scrollPane.setVvalue(1.0));","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":118,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":119,"author":{"gitId":"gavin331"},"content":" * Iteration 1:","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"gavin331"},"content":" * Creates a label with the specified text and adds it to the dialog container.","lastModifiedDate":"2024-02-06"},{"lineNumber":121,"author":{"gitId":"gavin331"},"content":" * @param text String containing text to add","lastModifiedDate":"2024-02-06"},{"lineNumber":122,"author":{"gitId":"gavin331"},"content":" * @return a label with the specified text that has word wrap enabled.","lastModifiedDate":"2024-02-06"},{"lineNumber":123,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":124,"author":{"gitId":"gavin331"},"content":" private Label getDialogLabel(String text) {","lastModifiedDate":"2024-02-06"},{"lineNumber":125,"author":{"gitId":"gavin331"},"content":" Label textToAdd \u003d new Label(text);","lastModifiedDate":"2024-02-06"},{"lineNumber":126,"author":{"gitId":"gavin331"},"content":" textToAdd.setWrapText(true);","lastModifiedDate":"2024-02-06"},{"lineNumber":127,"author":{"gitId":"gavin331"},"content":" return textToAdd;","lastModifiedDate":"2024-02-06"},{"lineNumber":128,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":129,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":130,"author":{"gitId":"gavin331"},"content":" * Iteration 2:","lastModifiedDate":"2024-02-06"},{"lineNumber":131,"author":{"gitId":"gavin331"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2024-02-06"},{"lineNumber":132,"author":{"gitId":"gavin331"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-06"},{"lineNumber":133,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":134,"author":{"gitId":"gavin331"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-06"},{"lineNumber":135,"author":{"gitId":"gavin331"},"content":" Label userText \u003d new Label(userInput.getText());","lastModifiedDate":"2024-02-06"},{"lineNumber":136,"author":{"gitId":"gavin331"},"content":" Label dukeText \u003d new Label(getResponse(userInput.getText()));","lastModifiedDate":"2024-02-06"},{"lineNumber":137,"author":{"gitId":"gavin331"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-06"},{"lineNumber":138,"author":{"gitId":"gavin331"},"content":" DialogBox.getUserDialog(userText, new ImageView(user)),","lastModifiedDate":"2024-02-06"},{"lineNumber":139,"author":{"gitId":"gavin331"},"content":" DialogBox.getDukeDialog(dukeText, new ImageView(duke))","lastModifiedDate":"2024-02-06"},{"lineNumber":140,"author":{"gitId":"gavin331"},"content":" );","lastModifiedDate":"2024-02-06"},{"lineNumber":141,"author":{"gitId":"gavin331"},"content":" userInput.clear();","lastModifiedDate":"2024-02-06"},{"lineNumber":142,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":143,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":144,"author":{"gitId":"gavin331"},"content":" * You should have your own function to generate a response to user input.","lastModifiedDate":"2024-02-06"},{"lineNumber":145,"author":{"gitId":"gavin331"},"content":" * Replace this stub with your completed method.","lastModifiedDate":"2024-02-06"},{"lineNumber":146,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":147,"author":{"gitId":"gavin331"},"content":" private String getResponse(String input) {","lastModifiedDate":"2024-02-06"},{"lineNumber":148,"author":{"gitId":"gavin331"},"content":" //TODO: Replace with my own code.","lastModifiedDate":"2024-02-06"},{"lineNumber":149,"author":{"gitId":"gavin331"},"content":" return InputHandler.handleInput(tasks, ui, input);","lastModifiedDate":"2024-02-06"},{"lineNumber":150,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":151,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":152,"author":{"gitId":"gavin331"},"content":"// /**","lastModifiedDate":"2024-02-06"},{"lineNumber":153,"author":{"gitId":"gavin331"},"content":"// * Sets Bartender Bob to begin receiving and responding to user inputs.","lastModifiedDate":"2024-02-06"},{"lineNumber":154,"author":{"gitId":"gavin331"},"content":"// */","lastModifiedDate":"2024-02-06"},{"lineNumber":155,"author":{"gitId":"gavin331"},"content":"// public void run() {","lastModifiedDate":"2024-02-06"},{"lineNumber":156,"author":{"gitId":"gavin331"},"content":"// InputHandler inputHandler \u003d new InputHandler();","lastModifiedDate":"2024-02-06"},{"lineNumber":157,"author":{"gitId":"gavin331"},"content":"// inputHandler.handleInput(tasks, ui);","lastModifiedDate":"2024-02-06"},{"lineNumber":158,"author":{"gitId":"gavin331"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":159,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":160,"author":{"gitId":"gavin331"},"content":"// /**","lastModifiedDate":"2024-02-06"},{"lineNumber":161,"author":{"gitId":"gavin331"},"content":"// * Initialises and runs the BartenderBob chatbot.","lastModifiedDate":"2024-02-06"},{"lineNumber":162,"author":{"gitId":"gavin331"},"content":"// *","lastModifiedDate":"2024-02-06"},{"lineNumber":163,"author":{"gitId":"gavin331"},"content":"// * @param args Command line arguments.","lastModifiedDate":"2024-02-06"},{"lineNumber":164,"author":{"gitId":"gavin331"},"content":"// */","lastModifiedDate":"2024-02-06"},{"lineNumber":165,"author":{"gitId":"gavin331"},"content":"// public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":166,"author":{"gitId":"gavin331"},"content":"// new BartenderBob(\"./data/tasks.txt\").run();","lastModifiedDate":"2024-02-06"},{"lineNumber":167,"author":{"gitId":"gavin331"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":168,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":169,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"gavin331":169}},{"path":"src/main/java/bartenderbob/BartenderBobException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":" * Handles exceptions that is specific to BartenderBob chatbot.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"public class BartenderBobException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" /** Displays messages to the user */","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" private static final Ui UI \u003d new Ui();","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" /** First word of the user input */","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" private String firstWord;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" * Creates an instance of BartenderBobException.","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" public BartenderBobException() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" * Creates an instance of BartenderBobException and initialise","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" * it with the first word of the user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" * @param firstWord First word of the user input.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" public BartenderBobException(String firstWord) {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" this.firstWord \u003d firstWord;","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" * Shows invalid input error message when a user","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" * types in a command BartenderBob cannot comprehend.","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" * @param userInput The user input to BartenderBob.","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" public static String invalidInput(String userInput) {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" return UI.showInvalidInputError(userInput);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" * Displays error message when a user gives an input","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" * with missing parameters that is required by BartenderBob.","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" public String displayError() {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" switch (firstWord) {","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" case \"mark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" return UI.showInvalidMarkCommand();","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" return UI.showInvalidUnmarkCommand();","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" return UI.showInvalidDeleteCommand();","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" case \"todo\":","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" return UI.showInvalidTodoCommand();","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" return UI.showInvalidDeadlineCommand();","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" case \"event\":","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" return UI.showInvalidEventCommand();","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" default:","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" return \"\";","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" * Displays error message when a user specified task index","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" * is out of bounds.","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" public String tasksOutOfBounds() {","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" return UI.showOutOfBoundsCommand();","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"gavin331":67}},{"path":"src/main/java/bartenderbob/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":" * Represents the Deadline task that has a due date.","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" /** The due date for the task */","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" private LocalDate dueDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" * Creates an instance of the Deadline task with a description and a","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" * due date.","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" * @param description Description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" * @param by Due date of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" * @throws IllegalArgumentException If \u0027by\u0027 parameter is not in yyyy-MM-dd format.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" public Deadline(String description, String by) throws IllegalArgumentException {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" if (!isValidDateFormat(by)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" this.dueDate \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" * Creates an instance of the Deadline task with a description, due date","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" * and whether it has been completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" * @param description Description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" * @param by Due date of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" * @param isDone Represents whether the task has been completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" * @throws IllegalArgumentException If \u0027by\u0027 parameter is not in yyyy-MM-dd format.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" public Deadline(String description, String by, boolean isDone) throws IllegalArgumentException {","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" super(description, isDone);","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" if (!isValidDateFormat(by)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" this.dueDate \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" * Verifies whether a string is of the format yyyy-MM-dd.","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" * @param by Input String.","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" * @return Whether the string follows the format yyyy-MM-dd.","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" private boolean isValidDateFormat(String by) {","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" LocalDate.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" return true;","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" * Shows the deadline task information when the user uses the \u0027list\u0027 command.","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" * @return Complete deadline task information as a String.","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" public String show() {","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" super.status \u003d isDone ? \"X\" : \" \";","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" String dateFormat \u003d this.dueDate.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" String byFormat \u003d \"(by: \" + dateFormat + \")\";","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" return \"[D]\" + \"[\" + status + \"]\" + \" \" + this.description + \" \" + byFormat;","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gavin331":72}},{"path":"src/main/java/bartenderbob/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" private Label text;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" public DialogBox(Label l, ImageView iv) {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" text \u003d l;","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" displayPicture \u003d iv;","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" text.setWrapText(true);","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" displayPicture.setFitWidth(100.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" displayPicture.setFitHeight(100.0);","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" this.setAlignment(Pos.TOP_RIGHT);","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" this.getChildren().addAll(text, displayPicture);","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" private void flip() {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" this.setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" FXCollections.reverse(tmp);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" this.getChildren().setAll(tmp);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" public static DialogBox getUserDialog(Label l, ImageView iv) {","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" return new DialogBox(l, iv);","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" public static DialogBox getDukeDialog(Label l, ImageView iv) {","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" var db \u003d new DialogBox(l, iv);","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" db.flip();","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" return db;","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"gavin331":44}},{"path":"src/main/java/bartenderbob/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":" * Represents the Event task that has a description, from date and a due date.","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" /** Event start date */","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" private LocalDate from;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" /** Event due date */","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" private LocalDate by;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" * Creates an instance of an Event class that has a description, from date","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" * and a by date.","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" * @param description Description of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" * @param from Start date of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" * @param by Due date of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" public Event(String description, String from, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" if (!isValidDateFormat(from, by)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" this.from \u003d LocalDate.parse(from, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" this.by \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" * Creates an instance of an Event class that has a description, from date,","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" * by date and whether it has been completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" * @param description Description of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" * @param from Start date of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" * @param by Due date of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" * @param isDone Represents whether the task has been completed.","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" public Event(String description, String from, String by, boolean isDone) {","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" super(description, isDone);","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" if (!isValidDateFormat(from, by)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" throw new IllegalArgumentException();","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" this.from \u003d LocalDate.parse(from, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" this.by \u003d LocalDate.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" * Verifies whether a string is of the format yyyy-MM-dd.","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" * @param by Input String.","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" * @return Whether the string follows the format yyyy-MM-dd.","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" private boolean isValidDateFormat(String from, String by) {","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" LocalDate.parse(from, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" LocalDate.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" return true;","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" * Shows the event task information when the user uses the \u0027list\u0027 command.","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" * @return Complete event task information as a String.","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" public String show() {","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" super.status \u003d isDone ? \"X\" : \" \";","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" String fromFormat \u003d this.from.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" String byFormat \u003d this.by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" String fromByFormat \u003d \"(from: \" + fromFormat + \" to: \" + byFormat + \")\";","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" return \"[E]\" + \"[\" + status + \"]\" + \" \" + this.description + \" \" + fromByFormat;","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gavin331":78}},{"path":"src/main/java/bartenderbob/InputHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":" * Represents a parser that receives and handle user inputs.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"public class InputHandler {","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" public static String handleInput(TaskList taskList, Ui ui, String userInput) {","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" String[] stringComponents \u003d userInput.split(\" \");","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" String firstWord \u003d stringComponents[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" String index;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" if (firstWord.equals(\"bye\")) {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" return ui.leave();","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" switch (firstWord) {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" case \"list\":","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" return taskList.list();","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" case \"mark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" index \u003d stringComponents[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" return taskList.markDone(index);","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" index \u003d stringComponents[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" return taskList.unmarkDone(index);","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" case \"delete\":","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" index \u003d stringComponents[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" return taskList.delete(index);","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" case \"find\":","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" String substring \u003d stringComponents[1];","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" return taskList.find(substring);","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" case \"todo\":","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" String str \u003d userInput.split(\"todo \")[1];","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" ToDo task \u003d new ToDo(str);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" return taskList.store(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" String[] deadlineComponents \u003d userInput.split(\"deadline | /by \");","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" Deadline deadline \u003d new Deadline(deadlineComponents[1], deadlineComponents[2]);","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" return taskList.store(deadline);","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" case \"event\":","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" String[] eventComponents \u003d userInput.split(\"event | /from | /to \");","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" Event event \u003d new Event(eventComponents[1], eventComponents[2], eventComponents[3]);","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" return taskList.store(event);","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" default:","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" return BartenderBobException.invalidInput(userInput);","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" } catch (BartenderBobException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" //This exception is when the index from user input is out of the TASKS bounds.","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" return e.tasksOutOfBounds();","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" //IndexOutOfBoundsException is for missing userInputs.","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" BartenderBobException error \u003d new BartenderBobException(firstWord);","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" return error.displayError();","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" return ui.showInvalidDateFormat();","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":"// /**","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":"// * Receives and handles the user inputs to BartenderBob chatbot.","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":"// *","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":"// * @param taskList The tasks that the user has inputted into BartenderBob.","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":"// * @param ui Displays appropriate messages for its corresponding user input.","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":"// */","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":"// public void handleInput(TaskList taskList, Ui ui) {","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":"// Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":"// while (true) {","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":"// String userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":"// String[] stringComponents \u003d userInput.split(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":"// String firstWord \u003d stringComponents[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":"// String index;","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":"// if (firstWord.equals(\"bye\")) {","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":"// ui.leave();","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":"// break;","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":"// } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":"// try {","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":"// switch (firstWord) {","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":"// case \"list\":","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":"// taskList.list();","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":"// break;","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":"// case \"mark\":","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":"// index \u003d stringComponents[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":"// taskList.markDone(index);","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":"// break;","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":"// case \"unmark\":","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":"// index \u003d stringComponents[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":"// taskList.unmarkDone(index);","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":"// break;","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":"// case \"delete\":","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":"// index \u003d stringComponents[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":"// taskList.delete(index);","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":"// break;","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":"// case \"find\":","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"gavin331"},"content":"// String substring \u003d stringComponents[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":"// taskList.find(substring);","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":"// break;","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":"// case \"todo\":","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":"// String str \u003d userInput.split(\"todo \")[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":"// ToDo task \u003d new ToDo(str);","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":"// taskList.store(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"gavin331"},"content":"// break;","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"gavin331"},"content":"// case \"deadline\":","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":"// String[] deadlineComponents \u003d userInput.split(\"deadline | /by \");","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"gavin331"},"content":"// Deadline deadline \u003d new Deadline(deadlineComponents[1], deadlineComponents[2]);","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":"// taskList.store(deadline);","lastModifiedDate":"2024-02-06"},{"lineNumber":106,"author":{"gitId":"gavin331"},"content":"// break;","lastModifiedDate":"2024-02-06"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":"// case \"event\":","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"gavin331"},"content":"// String[] eventComponents \u003d userInput.split(\"event | /from | /to \");","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"gavin331"},"content":"// Event event \u003d new Event(eventComponents[1], eventComponents[2], eventComponents[3]);","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"gavin331"},"content":"// taskList.store(event);","lastModifiedDate":"2024-02-06"},{"lineNumber":111,"author":{"gitId":"gavin331"},"content":"// break;","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":"// default:","lastModifiedDate":"2024-02-06"},{"lineNumber":113,"author":{"gitId":"gavin331"},"content":"// BartenderBobException.invalidInput(userInput);","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"gavin331"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"gavin331"},"content":"// } catch (BartenderBobException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"gavin331"},"content":"// //This exception is when the index from user input is out of the TASKS bounds.","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":"// e.tasksOutOfBounds();","lastModifiedDate":"2024-02-06"},{"lineNumber":118,"author":{"gitId":"gavin331"},"content":"// } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":119,"author":{"gitId":"gavin331"},"content":"// //IndexOutOfBoundsException is for missing userInputs.","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"gavin331"},"content":"// BartenderBobException error \u003d new BartenderBobException(firstWord);","lastModifiedDate":"2024-02-06"},{"lineNumber":121,"author":{"gitId":"gavin331"},"content":"// error.displayError();","lastModifiedDate":"2024-02-06"},{"lineNumber":122,"author":{"gitId":"gavin331"},"content":"// } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":123,"author":{"gitId":"gavin331"},"content":"// ui.showInvalidDateFormat();","lastModifiedDate":"2024-02-06"},{"lineNumber":124,"author":{"gitId":"gavin331"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":125,"author":{"gitId":"gavin331"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":126,"author":{"gitId":"gavin331"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":127,"author":{"gitId":"gavin331"},"content":"// }","lastModifiedDate":"2024-02-06"},{"lineNumber":128,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":129,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"gavin331":129}},{"path":"src/main/java/bartenderbob/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"public class Launcher {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" BartenderBob bartenderBob \u003d new BartenderBob(\"./data/tasks.txt\");","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" Application.launch(BartenderBob.class, args);","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"gavin331":13}},{"path":"src/main/java/bartenderbob/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import java.nio.file.StandardOpenOption;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"import java.util.List;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" * Represents the storage class to store user tasks into the hard disk.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"public class Storage {","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" /** File path to the storage file */","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" private String filePath; //eg \"./data/tasks.txt\"","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" /** Displays messages to the user */","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" private Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" * Creates an instance of the Storage class and initialises its file path.","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" * @param filePath File path to the storage file.","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" * Loads the tasks from the storage file into BartenderBob.","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" * @return ArrayList of tasks","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" * @throws BartenderBobException If error occurred while loading the tasks into BartenderBob.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" public ArrayList\u003cTask\u003e load() throws BartenderBobException {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" ArrayList\u003cTask\u003e taskArray \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" Path path \u003d Paths.get(filePath); //Operating system independent","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" if (Files.exists(path)) {","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" List\u003cString\u003e tasks \u003d Files.readAllLines(path);","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" for (String taskString : tasks) {","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" String[] taskStringComponents \u003d taskString.split(\" \\\\| \");","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" String taskType \u003d taskStringComponents[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" String taskStatus \u003d taskStringComponents[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" boolean isDone \u003d taskStatus.equals(\"X\");","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" String description \u003d taskStringComponents[2];","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" taskArray.add(new ToDo(description, isDone));","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" String dueDate \u003d taskStringComponents[3];","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" dueDate \u003d convertDateFormat(dueDate);","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" taskArray.add(new Deadline(description, dueDate, isDone));","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" String fromDate \u003d taskStringComponents[3];","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" fromDate \u003d convertDateFormat(fromDate);","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" String toDate \u003d taskStringComponents[4];","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" toDate \u003d convertDateFormat(toDate);","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" taskArray.add(new Event(description, fromDate, toDate, isDone));","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" //Create data directory","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" //if path is \"./data/tasks.txt\", then path.getParent()","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" //gives data.","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" Files.createDirectories(path.getParent());","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" //Create tasks.txt","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" Files.createFile(path);","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" return taskArray;","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" throw new BartenderBobException();","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" * Save changes to the files in the hard disk","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" * especially after unmarking, marking and deleting them.","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":" * @param tasks The tasks that the user has inputted to BartenderBob.","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"gavin331"},"content":" public void saveChanges(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"gavin331"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"gavin331"},"content":" Files.write(path, \"\".getBytes(), StandardOpenOption.TRUNCATE_EXISTING);","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"gavin331"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"gavin331"},"content":" saveTask(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"gavin331"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"gavin331"},"content":" ui.showSaveChangesError();","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":96,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"gavin331"},"content":" * Convert date format from MMM dd yyyy to yyyy-MM-dd","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"gavin331"},"content":" * @param oldDateFormat Date which is of MMM dd yyyy format.","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"gavin331"},"content":" * @return Date which is of yyyy-MM-dd format.","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"gavin331"},"content":" private String convertDateFormat(String oldDateFormat) {","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"gavin331"},"content":" DateTimeFormatter inputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"gavin331"},"content":" // Parse the original string to LocalDate","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"gavin331"},"content":" LocalDate localDate \u003d LocalDate.parse(oldDateFormat, inputFormatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":107,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":108,"author":{"gitId":"gavin331"},"content":" // Define the formatter for the output pattern","lastModifiedDate":"2024-02-01"},{"lineNumber":109,"author":{"gitId":"gavin331"},"content":" DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-02-01"},{"lineNumber":110,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":111,"author":{"gitId":"gavin331"},"content":" // Format the LocalDate to the desired output pattern","lastModifiedDate":"2024-02-01"},{"lineNumber":112,"author":{"gitId":"gavin331"},"content":" return localDate.format(outputFormatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":113,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":114,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":115,"author":{"gitId":"gavin331"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":116,"author":{"gitId":"gavin331"},"content":" * Saves tasks to the storage file specified by the filepath,","lastModifiedDate":"2024-02-02"},{"lineNumber":117,"author":{"gitId":"gavin331"},"content":" * especially after adding them to the tasks list.","lastModifiedDate":"2024-02-02"},{"lineNumber":118,"author":{"gitId":"gavin331"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":119,"author":{"gitId":"gavin331"},"content":" * @param task The task that we are saving to the storage file.","lastModifiedDate":"2024-02-02"},{"lineNumber":120,"author":{"gitId":"gavin331"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":121,"author":{"gitId":"gavin331"},"content":" public void saveTask(Task task) {","lastModifiedDate":"2024-02-02"},{"lineNumber":122,"author":{"gitId":"gavin331"},"content":" //[T][X] read book \u003d T | X | read book","lastModifiedDate":"2024-02-02"},{"lineNumber":123,"author":{"gitId":"gavin331"},"content":" //[D][ ] return book (by: June 6th) \u003d D | | return book | June 6th","lastModifiedDate":"2024-02-02"},{"lineNumber":124,"author":{"gitId":"gavin331"},"content":" //[E][ ] project meeting (from: Aug 6th 2pm to: 4pm)","lastModifiedDate":"2024-02-02"},{"lineNumber":125,"author":{"gitId":"gavin331"},"content":" // \u003d E | | project meeting | Aug 6th 2pm | 4pm","lastModifiedDate":"2024-02-02"},{"lineNumber":126,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":127,"author":{"gitId":"gavin331"},"content":" Path path \u003d Paths.get(filePath);","lastModifiedDate":"2024-02-02"},{"lineNumber":128,"author":{"gitId":"gavin331"},"content":" String taskString \u003d task.show();","lastModifiedDate":"2024-02-01"},{"lineNumber":129,"author":{"gitId":"gavin331"},"content":" String typeOfTask \u003d taskString.substring(1, 2); //T","lastModifiedDate":"2024-02-01"},{"lineNumber":130,"author":{"gitId":"gavin331"},"content":" String taskStatus \u003d taskString.substring(4, 5); //X","lastModifiedDate":"2024-02-01"},{"lineNumber":131,"author":{"gitId":"gavin331"},"content":" String taskDescription \u003d \"\";","lastModifiedDate":"2024-02-01"},{"lineNumber":132,"author":{"gitId":"gavin331"},"content":" String saveEntry \u003d \"\";","lastModifiedDate":"2024-02-01"},{"lineNumber":133,"author":{"gitId":"gavin331"},"content":" if (typeOfTask.equals(\"T\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":134,"author":{"gitId":"gavin331"},"content":" taskDescription \u003d taskString.substring(7);","lastModifiedDate":"2024-02-01"},{"lineNumber":135,"author":{"gitId":"gavin331"},"content":" saveEntry \u003d typeOfTask + \" | \" + taskStatus + \" | \" + taskDescription;","lastModifiedDate":"2024-02-01"},{"lineNumber":136,"author":{"gitId":"gavin331"},"content":" } else if (typeOfTask.equals(\"D\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":137,"author":{"gitId":"gavin331"},"content":" int startIndex \u003d taskString.indexOf(\"(by: \");","lastModifiedDate":"2024-02-01"},{"lineNumber":138,"author":{"gitId":"gavin331"},"content":" int endIndex \u003d taskString.indexOf(\")\");","lastModifiedDate":"2024-02-01"},{"lineNumber":139,"author":{"gitId":"gavin331"},"content":" taskDescription \u003d taskString.substring(7, startIndex - 1);","lastModifiedDate":"2024-02-01"},{"lineNumber":140,"author":{"gitId":"gavin331"},"content":" String deadline \u003d taskString.substring(startIndex + 5, endIndex);","lastModifiedDate":"2024-02-01"},{"lineNumber":141,"author":{"gitId":"gavin331"},"content":" saveEntry \u003d typeOfTask + \" | \" + taskStatus + \" | \" + taskDescription","lastModifiedDate":"2024-02-01"},{"lineNumber":142,"author":{"gitId":"gavin331"},"content":" + \" | \" + deadline;","lastModifiedDate":"2024-02-01"},{"lineNumber":143,"author":{"gitId":"gavin331"},"content":" } else if (typeOfTask.equals(\"E\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":144,"author":{"gitId":"gavin331"},"content":" int startIndex \u003d taskString.indexOf(\"(from: \");","lastModifiedDate":"2024-02-01"},{"lineNumber":145,"author":{"gitId":"gavin331"},"content":" taskDescription \u003d taskString.substring(7, startIndex - 1);","lastModifiedDate":"2024-02-01"},{"lineNumber":146,"author":{"gitId":"gavin331"},"content":" int endIndex \u003d taskString.indexOf(\" to:\");","lastModifiedDate":"2024-02-01"},{"lineNumber":147,"author":{"gitId":"gavin331"},"content":" String fromDate \u003d taskString.substring(startIndex + 7, endIndex);","lastModifiedDate":"2024-02-01"},{"lineNumber":148,"author":{"gitId":"gavin331"},"content":" startIndex \u003d taskString.indexOf(\")\");","lastModifiedDate":"2024-02-01"},{"lineNumber":149,"author":{"gitId":"gavin331"},"content":" String toDate \u003d taskString.substring(endIndex + 5, startIndex);","lastModifiedDate":"2024-02-01"},{"lineNumber":150,"author":{"gitId":"gavin331"},"content":" saveEntry \u003d typeOfTask + \" | \" + taskStatus + \" | \" + taskDescription","lastModifiedDate":"2024-02-01"},{"lineNumber":151,"author":{"gitId":"gavin331"},"content":" + \" | \" + fromDate + \" | \" + toDate;","lastModifiedDate":"2024-02-01"},{"lineNumber":152,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":153,"author":{"gitId":"gavin331"},"content":" Files.write(path, (saveEntry + System.lineSeparator()).getBytes(), StandardOpenOption.APPEND);","lastModifiedDate":"2024-02-01"},{"lineNumber":154,"author":{"gitId":"gavin331"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":155,"author":{"gitId":"gavin331"},"content":" ui.showSaveTasksError();","lastModifiedDate":"2024-02-02"},{"lineNumber":156,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":157,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":158,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"gavin331":158}},{"path":"src/main/java/bartenderbob/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"public class Task {","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":" protected boolean isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":" protected String status;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" public Task(String description, boolean isDone) {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" public void mark() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" public void unmark() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" public String show() {","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" return \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" public String getDescription() {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" return this.description;","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"gavin331":30}},{"path":"src/main/java/bartenderbob/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"public class TaskList {","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":" private static final Storage STORAGE \u003d new Storage(\"./data/tasks.txt\");","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" private final ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" private Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" public String store(Task task) {","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" STORAGE.saveTask(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" int totalTasks \u003d tasks.size();","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" return ui.showStoreTasksMessage(task, totalTasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" public String list() {","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" stringBuilder.append(ui.showListCommandHeader()).append(\"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" int number \u003d i + 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" stringBuilder.append(ui.showListElements(number, tasks, i)).append(\"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" return stringBuilder.toString();","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" public String markDone(String index) throws BartenderBobException {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" int integerIndex \u003d Integer.parseInt(index);","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" Task task \u003d tasks.get(integerIndex - 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" task.mark();","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" STORAGE.saveChanges(tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" return ui.showMarkDone(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" throw new BartenderBobException();","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" public String unmarkDone(String index) throws BartenderBobException {","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" int integerIndex \u003d Integer.parseInt(index);","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" Task task \u003d tasks.get(integerIndex - 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" task.unmark();","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" STORAGE.saveChanges(tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" return ui.showUnmarkDone(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" throw new BartenderBobException();","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" public String delete(String index) throws BartenderBobException {","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" int integerIndex \u003d Integer.parseInt(index);","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" String display \u003d tasks.get(integerIndex - 1).show();","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" tasks.remove(integerIndex - 1);","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" STORAGE.saveChanges(tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" int totalTasks \u003d tasks.size();","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" return ui.showDelete(display, totalTasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" throw new BartenderBobException();","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" public String find(String substring) {","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" ArrayList\u003cTask\u003e result \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" if (task.getDescription().contains(substring)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" result.add(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"gavin331"},"content":" StringBuilder stringBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"gavin331"},"content":" stringBuilder.append(ui.showFindCommandHeader()).append(\"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"gavin331"},"content":" for (int i \u003d 0; i \u003c result.size(); i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"gavin331"},"content":" int number \u003d i + 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"gavin331"},"content":" ui.showListElements(number, result, i);","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"gavin331"},"content":" stringBuilder.append(ui.showListElements(number, result, i)).append(\"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"gavin331"},"content":" return stringBuilder.toString();","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"gavin331":81}},{"path":"src/main/java/bartenderbob/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":" super(description);","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" public ToDo(String description, boolean isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" super(description, isDone);","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" public String show() {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" super.status \u003d isDone ? \"X\" : \" \";","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" return \"[T]\" + \"[\" + status + \"]\" + \" \" + this.description;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"gavin331":15}},{"path":"src/main/java/bartenderbob/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"public class Ui {","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":" public String leave() {","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":" return \"Bye! Another round next time!\";","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":" public String showWelcomeMessage(String name) {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" return \"Welcome back! I\u0027m \" + name + \"\\nHow\u0027s it going out there?\";","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" public String showLoadingError() {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" return \"Error occurred while loading!\";","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" public String showInvalidInputError(String userInput) {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" return \"What? I can\u0027t understand \" + userInput + \" \u003d(\";","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" public String showInvalidMarkCommand() {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" return \"Hmm, please provide a valid task number to mark.\";","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" public String showInvalidUnmarkCommand() {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" return \"Hmm, please provide a valid task number to unmark.\";","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" public String showInvalidDeleteCommand() {","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" return \"Hmm, please provide a valid task number to delete.\";","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" public String showInvalidTodoCommand() {","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" return \"Hmm, did you add in a description for the todo?\";","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" public String showInvalidDeadlineCommand() {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" return \"Hey, this is an invalid format for deadline!\";","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" public String showInvalidDateFormat() {","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" return \"Date format should be of the form yyyy-MM-dd!\";","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" public String showInvalidEventCommand() {","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" return \"Hey, this is an invalid format for event!\";","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" public String showOutOfBoundsCommand() {","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" return \"The index is out of bounds!\";","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"gavin331"},"content":" public String showSaveChangesError() {","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"gavin331"},"content":" return \"Something went wrong while saving changes!\";","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"gavin331"},"content":" public String showSaveTasksError() {","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"gavin331"},"content":" return \"Something went wrong while saving tasks!\";","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"gavin331"},"content":" public String showStoreTasksMessage(Task task, int totalTasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"gavin331"},"content":" return \"Got it. I\u0027ve added this task:\\n\" + task.show() + \"\\nNow you have \" + totalTasks","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"gavin331"},"content":" + \" tasks in the list.\";","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"gavin331"},"content":" public String showListCommandHeader() {","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"gavin331"},"content":" return \"Here are the tasks in your list!\";","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"gavin331"},"content":" public String showListElements(int number, ArrayList\u003cTask\u003e tasks, int i) {","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"gavin331"},"content":" return number + \".\" + tasks.get(i).show();","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"gavin331"},"content":" public String showMarkDone(Task task) {","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"gavin331"},"content":" return \"Nice! I\u0027ve marked this task as done:\\n\" + task.show();","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"gavin331"},"content":" public String showUnmarkDone(Task task) {","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"gavin331"},"content":" return \"OK, I\u0027ve marked this task as not done yet:\\n\" + task.show();","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"gavin331"},"content":" public String showDelete(String display, int totalTasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"gavin331"},"content":" return \"Noted. I\u0027ve removed this task:\\n\" + display","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"gavin331"},"content":" + \"\\nNow you have \" + totalTasks + \" tasks in the list.\";","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"gavin331"},"content":" public String showFindCommandHeader() {","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"gavin331"},"content":" return \"Here are the matching tasks in your list:\";","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"gavin331":71}},{"path":"src/test/java/bartenderbob/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" public void deadline_invalidString_exceptionThrown() {","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" new Deadline(\"Testing!\", \"Tuesday\");","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" });","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" public void deadline_invalidMonth_exceptionThrown() {","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e {","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" new Deadline(\"Testing!\", \"2019-13-10\");","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" });","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" public void deadline_dayExceedBounds_exceptionThrown() {","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e {","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" new Deadline(\"Testing!\", \"2019-13-40\");","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" });","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"gavin331"},"content":" public void deadline_dayEqualZero_exceptionThrown() {","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"gavin331"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e {","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"gavin331"},"content":" new Deadline(\"Testing!\", \"2019-13-0\");","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"gavin331"},"content":" });","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"gavin331"},"content":" public void deadline_validString_classCreated() {","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"gavin331"},"content":" Deadline test \u003d new Deadline(\"Testing!\", \"2019-10-10\");","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"gavin331"},"content":" assertNotNull(test, \"Deadline instance should not be null\");","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"gavin331"},"content":" assertEquals(test.show(), \"[D][ ] Testing! (by: Oct 10 2019)\");","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"gavin331":41}},{"path":"src/test/java/bartenderbob/ToDoTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"package bartenderbob;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"public class ToDoTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":" public void toDo_withoutIsDoneParameter_blankStatus() {","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":" ToDo test \u003d new ToDo(\"Testing!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":" assertNotNull(test, \"ToDo instance should not be null\");","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":" assertEquals(test.show(), \"[T][ ] Testing!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":" public void toDo_trueIsDoneParameter_blankStatus() {","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":" ToDo test \u003d new ToDo(\"Testing!\", true);","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":" assertNotNull(test, \"ToDo instance should not be null\");","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":" assertEquals(test.show(), \"[T][X] Testing!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"gavin331"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"gavin331"},"content":" public void toDo_falseIsDoneParameter_blankStatus() {","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"gavin331"},"content":" ToDo test \u003d new ToDo(\"Testing!\", false);","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"gavin331"},"content":" assertNotNull(test, \"ToDo instance should not be null\");","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"gavin331"},"content":" assertEquals(test.show(), \"[T][ ] Testing!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"gavin331"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"gavin331"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"gavin331"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"gavin331":28}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"gavin331"},"content":"todo buy bread","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"gavin331"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"gavin331"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"gavin331"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"gavin331"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"gavin331"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"gavin331"},"content":"mark 4","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"gavin331"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"gavin331"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"gavin331"},"content":"unmark 4","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"gavin331"},"content":"mark","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"gavin331"},"content":"unmark","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"gavin331"},"content":"delete","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"gavin331"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"gavin331"},"content":"deadline","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"gavin331"},"content":"event","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"gavin331"},"content":"mark 5","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"gavin331"},"content":"mark 0","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"gavin331"},"content":"blah","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"gavin331"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"gavin331":20}}] diff --git a/gavin331_ip_master/commits.json b/gavin331_ip_master/commits.json index f62869bd..3c3f9fdd 100644 --- a/gavin331_ip_master/commits.json +++ b/gavin331_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"gavin331":[{"date":"2024-01-22","commitResults":[{"hash":"1602eccd7dbd3377c9faa5dd2ae9b8899f6c4464","isMergeCommit":false,"messageTitle":"Implemented Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}},{"hash":"3d91fd6948e6a7bae2f2b479f5f03b11be49f9c5","isMergeCommit":false,"messageTitle":"Added BartenderBob class","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":8}}},{"hash":"c82796684190511d79ebecee7349da4b9ee0755f","isMergeCommit":false,"messageTitle":"Added storage and its functions","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}},{"hash":"b1c132d83fdc2756f1ca480971d09eaa706b2cc7","isMergeCommit":false,"messageTitle":"Added InputHandler and Task classes","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":22}}}]},{"date":"2024-01-23","commitResults":[{"hash":"b9aa39393708054e941fa8d5dcc24b981cc2d2aa","isMergeCommit":false,"messageTitle":"Added Deadline and Event classes","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":19}}}]},{"date":"2024-01-24","commitResults":[{"hash":"330030c402e45f284cf8c5ea8bff0240f29b80c4","isMergeCommit":false,"messageTitle":"Filled in test cases in expected.txt and input.txt","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"0768a7d9d6b35d320ff4bf38af20c07036b62ca0","isMergeCommit":false,"messageTitle":"Created BartenderBobException to handle exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":27}}},{"hash":"813d6e00d677d6ffeb382e341c8484647c78004c","isMergeCommit":false,"messageTitle":"Implemented delete, updated tests and exceptions","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":54,"deletions":17}}}]},{"date":"2024-02-01","commitResults":[{"hash":"0fbdbfb1ae230ce9e8caf1a1ecd8d812bfe69884","isMergeCommit":false,"messageTitle":"Implement save feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":128,"deletions":11}}},{"hash":"cb4fa4b3abe0c5ddeba72f40459c4a7e20913a4a","isMergeCommit":false,"messageTitle":"Fix bugs from save feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":61}}},{"hash":"cc3592142ce803345bd110cbfa20b90b61557858","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"ddec088059d4984be1cdf83a9c9a882f73071fd1","isMergeCommit":false,"messageTitle":"Implement dates and times","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":12}}},{"hash":"5764f40180a3927782035e448a6b4fb683af81c3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-02","commitResults":[{"hash":"bd19da7e9d0127ef2d9fb8bc8122ff8e7e09a3f7","isMergeCommit":false,"messageTitle":"Improve OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":227,"deletions":140}}},{"hash":"cffa8747a5efefd78af1738dfc7321bc99e24861","isMergeCommit":false,"messageTitle":"Remove unused code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}},{"hash":"9f6600677a4ace74eca2bf26cb3567c501b40930","isMergeCommit":false,"messageTitle":"Add BartenderBob package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":36}}},{"hash":"62fcbff5f7262335920c13fd85b5090985e77144","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/gavin331/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"577e0c835d3e8a8d3223eda3d50af1994464c43e","isMergeCommit":false,"messageTitle":"Add gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"f8eaf64fc28c9a5340ca95f7bd48b9274aa47001","isMergeCommit":false,"messageTitle":"Handle invalid date format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":7}}},{"hash":"8cc25981237bc84dfe63a155be13063025041396","isMergeCommit":false,"messageTitle":"Add Junit test cases","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":11},"java":{"insertions":76,"deletions":12}}},{"hash":"23e73643b13fc5d72f6a275c0277fe9729b19760","isMergeCommit":false,"messageTitle":"Create jar file","messageBody":"","tags":["v0.1","A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}},{"hash":"237a3999235c7c1f2ca168d3900d9bd6c5a48851","isMergeCommit":false,"messageTitle":"Add Java Docs","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":178,"deletions":2}}},{"hash":"cf9d3430eca239d9e55ccb8aa9dd739c1c838964","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"131828a11da93cd1584c8e7b73a351ffecd6b9ef","isMergeCommit":false,"messageTitle":"Improve coding standards","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":16}}},{"hash":"0d8a13cb77c152d66a4e2ec6f9e10304d6a4d402","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"55761d29f702566e6ab5a50e16605c3f070b954f","isMergeCommit":false,"messageTitle":"Implement find feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"5a713d49080cfea12c857d8efc69326d984d8255","isMergeCommit":true,"messageTitle":"Merge branch \u0027Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-05","commitResults":[{"hash":"5cdb0a02426413adcb7b2917e5b08a7d56637da7","isMergeCommit":false,"messageTitle":"Implement checkstyle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":28,"deletions":22}}},{"hash":"2250714f108c7855be31bf684f4ce1d26fc71c5a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CheckStyle\u0027","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"gavin331":{"java":772,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":8,"txt":20}},"authorContributionVariance":{"gavin331":40016.8},"authorDisplayNameMap":{"gavin331":"CS2103T-T15-4 GAVI.. WEI"}} +{"authorDailyContributionsMap":{"gavin331":[{"date":"2024-01-22","commitResults":[{"hash":"1602eccd7dbd3377c9faa5dd2ae9b8899f6c4464","isMergeCommit":false,"messageTitle":"Implemented Level-0","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}},{"hash":"3d91fd6948e6a7bae2f2b479f5f03b11be49f9c5","isMergeCommit":false,"messageTitle":"Added BartenderBob class","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":8}}},{"hash":"c82796684190511d79ebecee7349da4b9ee0755f","isMergeCommit":false,"messageTitle":"Added storage and its functions","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":2}}},{"hash":"b1c132d83fdc2756f1ca480971d09eaa706b2cc7","isMergeCommit":false,"messageTitle":"Added InputHandler and Task classes","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":22}}}]},{"date":"2024-01-23","commitResults":[{"hash":"b9aa39393708054e941fa8d5dcc24b981cc2d2aa","isMergeCommit":false,"messageTitle":"Added Deadline and Event classes","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":71,"deletions":19}}}]},{"date":"2024-01-24","commitResults":[{"hash":"330030c402e45f284cf8c5ea8bff0240f29b80c4","isMergeCommit":false,"messageTitle":"Filled in test cases in expected.txt and input.txt","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"java":{"insertions":1,"deletions":1}}},{"hash":"0768a7d9d6b35d320ff4bf38af20c07036b62ca0","isMergeCommit":false,"messageTitle":"Created BartenderBobException to handle exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":27}}},{"hash":"813d6e00d677d6ffeb382e341c8484647c78004c","isMergeCommit":false,"messageTitle":"Implemented delete, updated tests and exceptions","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":54,"deletions":17}}}]},{"date":"2024-02-01","commitResults":[{"hash":"0fbdbfb1ae230ce9e8caf1a1ecd8d812bfe69884","isMergeCommit":false,"messageTitle":"Implement save feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":128,"deletions":11}}},{"hash":"cb4fa4b3abe0c5ddeba72f40459c4a7e20913a4a","isMergeCommit":false,"messageTitle":"Fix bugs from save feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":61}}},{"hash":"cc3592142ce803345bd110cbfa20b90b61557858","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"ddec088059d4984be1cdf83a9c9a882f73071fd1","isMergeCommit":false,"messageTitle":"Implement dates and times","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":12}}},{"hash":"5764f40180a3927782035e448a6b4fb683af81c3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-02","commitResults":[{"hash":"bd19da7e9d0127ef2d9fb8bc8122ff8e7e09a3f7","isMergeCommit":false,"messageTitle":"Improve OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":227,"deletions":140}}},{"hash":"cffa8747a5efefd78af1738dfc7321bc99e24861","isMergeCommit":false,"messageTitle":"Remove unused code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}},{"hash":"9f6600677a4ace74eca2bf26cb3567c501b40930","isMergeCommit":false,"messageTitle":"Add BartenderBob package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":36}}},{"hash":"62fcbff5f7262335920c13fd85b5090985e77144","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 of https://github.com/gavin331/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"577e0c835d3e8a8d3223eda3d50af1994464c43e","isMergeCommit":false,"messageTitle":"Add gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"f8eaf64fc28c9a5340ca95f7bd48b9274aa47001","isMergeCommit":false,"messageTitle":"Handle invalid date format","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":7}}},{"hash":"8cc25981237bc84dfe63a155be13063025041396","isMergeCommit":false,"messageTitle":"Add Junit test cases","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":11},"java":{"insertions":76,"deletions":12}}},{"hash":"23e73643b13fc5d72f6a275c0277fe9729b19760","isMergeCommit":false,"messageTitle":"Create jar file","messageBody":"","tags":["v0.1","A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":0}}},{"hash":"237a3999235c7c1f2ca168d3900d9bd6c5a48851","isMergeCommit":false,"messageTitle":"Add Java Docs","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":178,"deletions":2}}},{"hash":"cf9d3430eca239d9e55ccb8aa9dd739c1c838964","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"131828a11da93cd1584c8e7b73a351ffecd6b9ef","isMergeCommit":false,"messageTitle":"Improve coding standards","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":16}}},{"hash":"0d8a13cb77c152d66a4e2ec6f9e10304d6a4d402","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"55761d29f702566e6ab5a50e16605c3f070b954f","isMergeCommit":false,"messageTitle":"Implement find feature","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"5a713d49080cfea12c857d8efc69326d984d8255","isMergeCommit":true,"messageTitle":"Merge branch \u0027Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-05","commitResults":[{"hash":"5cdb0a02426413adcb7b2917e5b08a7d56637da7","isMergeCommit":false,"messageTitle":"Implement checkstyle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":28,"deletions":22}}},{"hash":"2250714f108c7855be31bf684f4ce1d26fc71c5a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CheckStyle\u0027","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"729c8772054202fa4ea0698015117569014237e6","isMergeCommit":false,"messageTitle":"Implement Javafx GUI","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"3488da19becaa6de76d47784aeeee333ac291eb4","isMergeCommit":false,"messageTitle":"Complete Javafx GUI","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":0},"java":{"insertions":399,"deletions":179}}},{"hash":"136257e8f57bb8775684c5a23e465585a15b6445","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"gavin331":{"java":996,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":23,"txt":20}},"authorContributionVariance":{"gavin331":50598.617},"authorDisplayNameMap":{"gavin331":"CS2103T-T15-4 GAVI.. WEI"}} diff --git a/gavingoh99_ip_master/authorship.json b/gavingoh99_ip_master/authorship.json index 8578431e..a960caf6 100644 --- a/gavingoh99_ip_master/authorship.json +++ b/gavingoh99_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":"gavingoh99"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":"checkstyle {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"gavingoh99"},"content":" mainClass.set(\"Mona.Mona\")","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"gavingoh99"},"content":" archiveFileName \u003d \u0027mona.jar\u0027","lastModifiedDate":"2024-01-31"},{"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":{"gavingoh99":7,"-":38}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"T|1|read book","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"T|1|join sports club","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"D|1|test this other function|2/2/2014 0222","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"E|0|testing this|6/28/2001 1200|6/29/2001 1200","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"E|0|test 1 2 3|2/2/2022 0200|3/3/2022 0300","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"T|0|hello","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":"D|0|hello|2/2/2022 0321","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":"T|0|hello","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"gavingoh99":8}},{"path":"src/main/java/Mona/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":" protected DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"d \u0027of\u0027 MMMM yyyy, ha\");","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" protected static DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"M/d/yyyy HHmm\");","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" this.by \u003d LocalDateTime.parse(by, formatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" public String parseToLogRepresentation() {","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" int completionStatus \u003d this.isDone ? 1 : 0;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" return \"D|\" + completionStatus + \"|\" + this.description + \"|\" + this.by.format(formatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(outputFormatter) + \")\";","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"gavingoh99":25}},{"path":"src/main/java/Mona/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":" protected LocalDateTime start;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":" protected LocalDateTime end;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" protected DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"d \u0027of\u0027 MMMM yyyy, ha\");","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" protected static DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"M/d/yyyy HHmm\");","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" this.start \u003d LocalDateTime.parse(start, formatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" this.end \u003d LocalDateTime.parse(end, formatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" public String parseToLogRepresentation() {","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" int completionStatus \u003d this.isDone ? 1 : 0;","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":" return \"E|\" + completionStatus + \"|\" + this.description + \"|\" + this.start.format(formatter) + \"|\" + this.end.format(formatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.start.format(outputFormatter) + \" to: \" + this.end.format(outputFormatter) + \")\";","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"gavingoh99":26}},{"path":"src/main/java/Mona/Mona.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":" * This class represents the main class used for gradle builds for my version of the Duke Chatbot.","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":"public class Mona {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":" private Storage storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" private Ui ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" private Scanner sc;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" private Parser parser;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" enum Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" BYE,","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" LIST,","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" EVENT,","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" TODO,","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" DEADLINE,","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" MARK,","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":" UNMARK,","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" DELETE,","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" FIND","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":" * Constructor for Mona, the Duke Chatbot","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"gavingoh99"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"gavingoh99"},"content":" * @param filePath The location where logs are to be written to.","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"gavingoh99"},"content":" public Mona(String filePath) {","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"gavingoh99"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"gavingoh99"},"content":" this.storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"gavingoh99"},"content":" this.tasks \u003d new TaskList(storage);","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"gavingoh99"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"gavingoh99"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"gavingoh99"},"content":" * Contains the main looping logic for Mona\u0027s interaction on the command line","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"gavingoh99"},"content":" public void run() {","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"gavingoh99"},"content":" while (true) {","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"gavingoh99"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"gavingoh99"},"content":" String[] inputArray \u003d input.split(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"gavingoh99"},"content":" Command currCommand \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"gavingoh99"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"gavingoh99"},"content":" currCommand \u003d parser.getCurrentCommand(inputArray);","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"gavingoh99"},"content":" } catch (MonaException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"gavingoh99"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"gavingoh99"},"content":" continue;","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"gavingoh99"},"content":" switch (currCommand) {","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"gavingoh99"},"content":" case BYE:","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"gavingoh99"},"content":" ui.sayBye();","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"gavingoh99"},"content":" return;","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"gavingoh99"},"content":" case LIST:","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"gavingoh99"},"content":" tasks.displayList();","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"gavingoh99"},"content":" break;","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"gavingoh99"},"content":" case TODO:","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"gavingoh99"},"content":" String[] details \u003d parser.getDetails(currCommand, input);","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"gavingoh99"},"content":" Task newTask \u003d new Todo(details[0]);","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"gavingoh99"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"gavingoh99"},"content":" ui.showListAfterQuantityChange(newTask, tasks.getNumberOfTasks(), true);","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"gavingoh99"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"gavingoh99"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"gavingoh99"},"content":" details \u003d parser.getDetails(currCommand, input);","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"gavingoh99"},"content":" newTask \u003d new Deadline(details[0], details[1]);","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"gavingoh99"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"gavingoh99"},"content":" ui.showListAfterQuantityChange(newTask, tasks.getNumberOfTasks(), true);","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"gavingoh99"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"gavingoh99"},"content":" case EVENT:","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"gavingoh99"},"content":" details \u003d parser.getDetails(currCommand, input);","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"gavingoh99"},"content":" newTask \u003d new Event(details[0], details[1], details[2]);","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"gavingoh99"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"gavingoh99"},"content":" ui.showListAfterQuantityChange(newTask, tasks.getNumberOfTasks(), true);","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"gavingoh99"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"gavingoh99"},"content":" case MARK:","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"gavingoh99"},"content":" Task markedTask \u003d tasks.markTask(Integer.parseInt(inputArray[1]) - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"gavingoh99"},"content":" ui.showListAfterProgressChange(markedTask);","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"gavingoh99"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"gavingoh99"},"content":" case UNMARK:","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"gavingoh99"},"content":" Task unmarkedTask \u003d tasks.unmarkTask(Integer.parseInt(inputArray[1]) - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"gavingoh99"},"content":" ui.showListAfterProgressChange(unmarkedTask);","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"gavingoh99"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"gavingoh99"},"content":" case DELETE:","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"gavingoh99"},"content":" Task removedTask \u003d tasks.deleteTask(Integer.parseInt(inputArray[1]) - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"gavingoh99"},"content":" ui.showListAfterQuantityChange(removedTask, tasks.getNumberOfTasks(), false);","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"gavingoh99"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"gavingoh99"},"content":" case FIND:","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"gavingoh99"},"content":" tasks.showRelevantTasks(inputArray[1]);","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"gavingoh99"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"gavingoh99"},"content":" default:","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"gavingoh99"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"gavingoh99"},"content":" * Runs Mona","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"gavingoh99"},"content":" * @param args","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"gavingoh99"},"content":" * @throws MonaException currently a catch all for possible exceptions that can occur while Mona is running.","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"gavingoh99"},"content":" public static void main(String[] args) throws MonaException{","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"gavingoh99"},"content":" new Mona(\"data/duke.txt\").run();","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gavingoh99":106}},{"path":"src/main/java/Mona/MonaException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"public class MonaException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":" public MonaException(String errorMessage) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"gavingoh99":6}},{"path":"src/main/java/Mona/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":" * This class contains all logic for parsing the user input","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"public class Parser {","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":" * Method for determining the type of command given by the user","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" * @param input the user input split by the \" \" delimiter","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" * @return Command enum indicating which of the predefined commands was called","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" * @throws MonaException thrown when an unknown command is encountered","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" public Mona.Command getCurrentCommand(String[] input) throws MonaException{","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" switch (input[0]) {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" case \"bye\":","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" return Mona.Command.BYE;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" case \"list\":","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" return Mona.Command.LIST;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":" return Mona.Command.DEADLINE;","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" case \"todo\":","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" return Mona.Command.TODO;","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":" case \"event\":","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" return Mona.Command.EVENT;","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":" case \"mark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":" return Mona.Command.MARK;","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"gavingoh99"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"gavingoh99"},"content":" return Mona.Command.UNMARK;","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"gavingoh99"},"content":" case \"delete\":","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"gavingoh99"},"content":" return Mona.Command.DELETE;","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"gavingoh99"},"content":" case \"find\":","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"gavingoh99"},"content":" return Mona.Command.FIND;","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"gavingoh99"},"content":" default:","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"gavingoh99"},"content":" throw new MonaException(\"Mona does not recognise this command!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"gavingoh99"},"content":" * Method for getting the rest of the details following the type of task being added to the list","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"gavingoh99"},"content":" * @param command Command enum indicating which command was called","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"gavingoh99"},"content":" * @param input full user input from the command line","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"gavingoh99"},"content":" * @return an array containing the details to be used to instantiate tasks","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"gavingoh99"},"content":" public String[] getDetails(Mona.Command command, String input) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"gavingoh99"},"content":" String[] details \u003d new String[3];","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"gavingoh99"},"content":" switch (command) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"gavingoh99"},"content":" case TODO:","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"gavingoh99"},"content":" details[0] \u003d input.substring(5);","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"gavingoh99"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"gavingoh99"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"gavingoh99"},"content":" String rest \u003d input.substring(9);","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"gavingoh99"},"content":" String[] parts \u003d rest.split(\" /by \");","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"gavingoh99"},"content":" details[0] \u003d parts[0];","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"gavingoh99"},"content":" details[1] \u003d parts[1];","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"gavingoh99"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"gavingoh99"},"content":" case EVENT:","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"gavingoh99"},"content":" String[] subDetails \u003d input.substring(6).split(\" /from \");","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"gavingoh99"},"content":" String[] startAndEnd \u003d subDetails[1].split(\" /to \");","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"gavingoh99"},"content":" details[0] \u003d subDetails[0];","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"gavingoh99"},"content":" details[1] \u003d startAndEnd[0];","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"gavingoh99"},"content":" details[2] \u003d startAndEnd[1];","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"gavingoh99"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"gavingoh99"},"content":" default:","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"gavingoh99"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"gavingoh99"},"content":" return details;","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"gavingoh99":68}},{"path":"src/main/java/Mona/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"import java.io.*;","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":"import java.util.List;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" * This class contains the logic for interacting with the data logs","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":"public class Storage {","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" protected static DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"M/d/yyyy HHmm\");","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" private String filePath;","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" * Constructor for Storage","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" * @param filePath location for the logs to be written to","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":" String workingDirectory \u003d System.getProperty(\"user.dir\");","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":" Path dataDirectory \u003d Paths.get(workingDirectory + \"/data\");","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":" Files.createDirectories(dataDirectory);","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"gavingoh99"},"content":" File logFile \u003d new File(workingDirectory + \"/\" + this.filePath);","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"gavingoh99"},"content":" logFile.createNewFile();","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"gavingoh99"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"gavingoh99"},"content":" System.out.println(\"Error occurred setting up log\" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"gavingoh99"},"content":" * Method for adding the tasks stored in the logs to Mona\u0027s task list","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"gavingoh99"},"content":" * @param currentTasks Mona\u0027s task list for tasks stored in the logs to be added to","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"gavingoh99"},"content":" public void readLog(List\u003cTask\u003e currentTasks) {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"gavingoh99"},"content":" File log \u003d new File(this.filePath);","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"gavingoh99"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"gavingoh99"},"content":" Scanner s \u003d new Scanner(log);","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"gavingoh99"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"gavingoh99"},"content":" String[] task \u003d s.nextLine().split(\"\\\\|\");","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"gavingoh99"},"content":" currentTasks.add(parseLogEntry(task));","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"gavingoh99"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"gavingoh99"},"content":" System.out.println(\"File not found:\" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"gavingoh99"},"content":" * Method for translating the tasks stored in the logs into their corresponding Tasks","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"gavingoh99"},"content":" * @param logEntry the task stored in the log","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"gavingoh99"},"content":" * @return the corresponding task instance","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"gavingoh99"},"content":" public static Task parseLogEntry(String[] logEntry) {","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"gavingoh99"},"content":" String description \u003d logEntry[2];","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"gavingoh99"},"content":" boolean isCompleted \u003d logEntry[1].equals(\"1\");","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"gavingoh99"},"content":" switch (logEntry[0]) {","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"gavingoh99"},"content":" case \"T\":","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"gavingoh99"},"content":" Task currTask \u003d new Todo(description);","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"gavingoh99"},"content":" currTask.setCompletion(isCompleted);","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"gavingoh99"},"content":" return currTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"gavingoh99"},"content":" case \"D\":","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"gavingoh99"},"content":" currTask \u003d new Deadline(description, logEntry[3]);","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"gavingoh99"},"content":" currTask.setCompletion(isCompleted);","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"gavingoh99"},"content":" return currTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"gavingoh99"},"content":" case \"E\":","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"gavingoh99"},"content":" currTask \u003d new Event(description, logEntry[3], logEntry[4]);","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"gavingoh99"},"content":" currTask.setCompletion(isCompleted);","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"gavingoh99"},"content":" return currTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"gavingoh99"},"content":" default:","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"gavingoh99"},"content":" return null;","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"gavingoh99"},"content":" * Method for updating the logs when the task list is modified while Mona is running","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"gavingoh99"},"content":" * @param currentTasks Mona\u0027s task list which the user can directly interact with","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"gavingoh99"},"content":" public void writeToFile(List\u003cTask\u003e currentTasks) {","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"gavingoh99"},"content":" File log \u003d new File(this.filePath);","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"gavingoh99"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"gavingoh99"},"content":" for (Task task : currentTasks) {","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"gavingoh99"},"content":" sb.append(task.parseToLogRepresentation() + \"\\n\");","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"gavingoh99"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"gavingoh99"},"content":" FileWriter fw \u003d new FileWriter(log.getAbsoluteFile());","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"gavingoh99"},"content":" BufferedWriter bw \u003d new BufferedWriter(fw);","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"gavingoh99"},"content":" bw.write(sb.toString());","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"gavingoh99"},"content":" bw.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"gavingoh99"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"gavingoh99"},"content":" System.out.println(\"Problem writing to log: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"gavingoh99":96}},{"path":"src/main/java/Mona/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":" public void setCompletion(boolean isCompleted) {","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" this.isDone \u003d isCompleted;","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" public String parseToLogRepresentation() {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":" return this.toString();","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"gavingoh99"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"gavingoh99"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"gavingoh99"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"gavingoh99"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gavingoh99":36}},{"path":"src/main/java/Mona/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"import java.util.List;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":" * This class contains all logic surrounding Mona\u0027s task list","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":"public class TaskList {","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" private List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" private Storage storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" * Constructor for Task List","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" * @param storage The storage instance that works hand-in-hand for most of the task list logic","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" public TaskList(Storage storage) {","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" storage.readLog(this.tasks);","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" * Display the contents of the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" public void displayList() {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"gavingoh99"},"content":" Task currTask \u003d tasks.get(i);","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"gavingoh99"},"content":" System.out.println(\" \" + (i + 1) + \". \" + currTask);","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"gavingoh99"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"gavingoh99"},"content":" * Adds a task to the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"gavingoh99"},"content":" * @param task the task to be added","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"gavingoh99"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"gavingoh99"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"gavingoh99"},"content":" storage.writeToFile(tasks);","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"gavingoh99"},"content":" * Adds a task to the task list for unit testing","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"gavingoh99"},"content":" * @param task the task to be added","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"gavingoh99"},"content":" public void addTaskTest(Task task) {","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"gavingoh99"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"gavingoh99"},"content":" * Unmarks the task at the given index in the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"gavingoh99"},"content":" * @param taskIndex the index of the target task in the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"gavingoh99"},"content":" * @return the unmarked task","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"gavingoh99"},"content":" public Task unmarkTask(int taskIndex) {","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"gavingoh99"},"content":" Task currTask \u003d this.tasks.get(taskIndex);","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"gavingoh99"},"content":" currTask.setCompletion(false);","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"gavingoh99"},"content":" storage.writeToFile(tasks);","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"gavingoh99"},"content":" return currTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"gavingoh99"},"content":" * Marks the task at the given index in the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"gavingoh99"},"content":" * @param taskIndex the index of the target task in the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"gavingoh99"},"content":" * @return the marked task","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"gavingoh99"},"content":" public Task markTask(int taskIndex) {","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"gavingoh99"},"content":" Task currTask \u003d this.tasks.get(taskIndex);","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"gavingoh99"},"content":" currTask.setCompletion(true);","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"gavingoh99"},"content":" storage.writeToFile(tasks);","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"gavingoh99"},"content":" return currTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"gavingoh99"},"content":" * Deletes the task at the given index in the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"gavingoh99"},"content":" * @param taskIndex the index of the target task in the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"gavingoh99"},"content":" * @return the deleted task","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"gavingoh99"},"content":" public Task deleteTask(int taskIndex) {","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"gavingoh99"},"content":" Task removedTask \u003d this.tasks.remove(taskIndex);","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"gavingoh99"},"content":" storage.writeToFile(tasks);","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"gavingoh99"},"content":" return removedTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"gavingoh99"},"content":" * Deletes the task at the given index in the task list for unit testing","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"gavingoh99"},"content":" * @param taskIndex the index of the target task in the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"gavingoh99"},"content":" * @return the deleted task","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"gavingoh99"},"content":" public Task deleteTaskTest(int taskIndex) {","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"gavingoh99"},"content":" Task removedTask \u003d this.tasks.remove(taskIndex);","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"gavingoh99"},"content":" return removedTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"gavingoh99"},"content":" * Provides the number of tasks presently in the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"gavingoh99"},"content":" * @return the number of tasks in the list","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"gavingoh99"},"content":" public int getNumberOfTasks() {","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"gavingoh99"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"gavingoh99"},"content":" public void showRelevantTasks(String keyword) {","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"gavingoh99"},"content":" System.out.println(\" ____________________________________________________________\\n\" + \" Give Mona a second to find relevant tasks...\");","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"gavingoh99"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"gavingoh99"},"content":" Task currTask \u003d tasks.get(i);","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"gavingoh99"},"content":" if (!currTask.description.contains(keyword)) {","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"gavingoh99"},"content":" continue;","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"gavingoh99"},"content":" System.out.println(\" \" + (i + 1) + \". \" + currTask);","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"gavingoh99"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"gavingoh99":112}},{"path":"src/main/java/Mona/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":" public String parseToLogRepresentation() {","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" int completionStatus \u003d this.isDone ? 1 : 0;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" return \"T|\" + completionStatus + \"|\" + this.description;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"gavingoh99":16}},{"path":"src/main/java/Mona/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":" * This class contains all logic regarding Mona\u0027s response","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"public class Ui {","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" * Constructor for Ui","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" public Ui() {","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" this.greet();","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" * Functionality for Mona\u0027s greeting at the start of the program","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" public void greet() {","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" String introduction \u003d \" ____________________________________________________________\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":" + \" Hello! I\u0027m Mona\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" + \" What can I do for you?\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" + \" ____________________________________________________________\\n\";","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":" System.out.println(introduction);","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"gavingoh99"},"content":" * Mona\u0027s farewell when the user issues the bye command","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"gavingoh99"},"content":" public void sayBye() {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"gavingoh99"},"content":" String farewell \u003d \" ____________________________________________________________\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"gavingoh99"},"content":" + \" Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"gavingoh99"},"content":" + \" ____________________________________________________________\";","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"gavingoh99"},"content":" System.out.println(farewell);","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"gavingoh99"},"content":" * Mona updates the user of the task that was added / removed and the number of tasks that remain","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"gavingoh99"},"content":" * @param task task that was removed / added","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"gavingoh99"},"content":" * @param numTasks remaining number of tasks","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"gavingoh99"},"content":" * @param hasIncreased whether a task was added or removed from the list","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"gavingoh99"},"content":" public void showListAfterQuantityChange(Task task, int numTasks, boolean hasIncreased) {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"gavingoh99"},"content":" String action \u003d hasIncreased ? \"added\" : \"removed\";","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"gavingoh99"},"content":" String response \u003d \" ____________________________________________________________\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"gavingoh99"},"content":" + \" Noted. I\u0027ve \" + action + \" this task: \\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"gavingoh99"},"content":" + \" \" + task + \"\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"gavingoh99"},"content":" + \" Now you have \" + numTasks + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"gavingoh99"},"content":" + \" ____________________________________________________________\\n\";","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"gavingoh99"},"content":" System.out.println(response);","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"gavingoh99"},"content":" * Mona acknowledges that a task has been marked or unmarked","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"gavingoh99"},"content":" * @param task the task that was marked or unmarked","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"gavingoh99"},"content":" public void showListAfterProgressChange(Task task) {","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"gavingoh99"},"content":" String status \u003d task.isDone ? \"done\" : \"not done\";","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"gavingoh99"},"content":" String response \u003d \" ____________________________________________________________\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"gavingoh99"},"content":" + \" Got it! I\u0027ve marked this task as \" + status + \":\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"gavingoh99"},"content":" + \" \" + task + \"\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"gavingoh99"},"content":" + \" ____________________________________________________________\\n\";","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"gavingoh99"},"content":" System.out.println(response);","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"gavingoh99"},"content":" * Mona echoes the message when an exception is thrown","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"gavingoh99"},"content":" * @param message the message from the exception","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"gavingoh99"},"content":" public void showError(String message) {","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"gavingoh99"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"gavingoh99"},"content":" System.out.println(\" \" + message);","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"gavingoh99"},"content":" System.out.println(\" ____________________________________________________________\");","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"gavingoh99":74}},{"path":"src/test/java/Mona/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"class ParserTest {","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" public void testGetCommand() throws MonaException {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" assertEquals(Mona.Command.BYE, parser.getCurrentCommand(new String[]{\"bye\"}));","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" assertEquals(Mona.Command.TODO, parser.getCurrentCommand(new String[]{\"todo\"}));","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" assertEquals(Mona.Command.EVENT, parser.getCurrentCommand(new String[]{\"event\"}));","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" assertEquals(Mona.Command.DEADLINE, parser.getCurrentCommand(new String[]{\"deadline\"}));","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" assertEquals(Mona.Command.LIST, parser.getCurrentCommand(new String[]{\"list\"}));","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" assertEquals(Mona.Command.UNMARK, parser.getCurrentCommand(new String[]{\"unmark\"}));","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" assertEquals(Mona.Command.MARK, parser.getCurrentCommand(new String[]{\"mark\"}));","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"gavingoh99":19}},{"path":"src/test/java/Mona/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":"public class TaskListTest {","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" public void testInsert() {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" Storage storage \u003d new Storage(\"\");","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" TaskList taskList \u003d new TaskList(storage);","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" Todo toAdd \u003d new Todo(\"first todo\");","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" Todo toAdd2 \u003d new Todo(\"second todo\");","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" taskList.addTaskTest(toAdd);","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" assertEquals(1, taskList.getNumberOfTasks());","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" taskList.addTaskTest(toAdd2);","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" assertEquals(2, taskList.getNumberOfTasks());","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":" public void testRemove() {","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" Storage storage \u003d new Storage(\"\");","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" TaskList taskList \u003d new TaskList(storage);","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":" Todo toAdd \u003d new Todo(\"first todo\");","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" Todo toAdd2 \u003d new Todo(\"second todo\");","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":" taskList.addTaskTest(toAdd);","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":" taskList.addTaskTest(toAdd2);","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"gavingoh99"},"content":" Task removed1 \u003d taskList.deleteTaskTest(0);","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"gavingoh99"},"content":" assertEquals(\"first todo\", removed1.description);","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"gavingoh99"},"content":" Task removed2 \u003d taskList.deleteTaskTest(0);","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"gavingoh99"},"content":" assertEquals(\"second todo\", removed2.description);","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"gavingoh99":32}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"gavingoh99":5}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":"java -classpath ../bin Mona \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":{"gavingoh99":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":"gavingoh99"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":"checkstyle {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"gavingoh99"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"gavingoh99"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"gavingoh99"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"gavingoh99"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"gavingoh99"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"gavingoh99"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"gavingoh99"},"content":" mainClass.set(\"mona.Mona\")","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"gavingoh99"},"content":" archiveFileName \u003d \u0027mona.jar\u0027","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"gavingoh99":21,"-":38}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"D|0|test|2/12/2019 1800","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"E|0|test|2/12/2019 0100|3/12/2019 2000","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"gavingoh99":2}},{"path":"src/main/java/Mona/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":" protected DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"d \u0027of\u0027 MMMM yyyy, ha\");","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" protected static DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" this.by \u003d LocalDateTime.parse(by, formatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" public String parseToLogRepresentation() {","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" int completionStatus \u003d this.isDone ? 1 : 0;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" return \"D|\" + completionStatus + \"|\" + this.description + \"|\" + this.by.format(formatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(outputFormatter) + \")\";","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"gavingoh99":25}},{"path":"src/main/java/Mona/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" * containing text from the speaker.","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":" private Label dialog;","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"gavingoh99"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"gavingoh99"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"gavingoh99"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"gavingoh99"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"gavingoh99"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"gavingoh99"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"gavingoh99"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"gavingoh99"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"gavingoh99"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"gavingoh99"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"gavingoh99"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"gavingoh99"},"content":" private void flip() {","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"gavingoh99"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"gavingoh99"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"gavingoh99"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"gavingoh99"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"gavingoh99"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"gavingoh99"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"gavingoh99"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"gavingoh99"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"gavingoh99"},"content":" db.flip();","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"gavingoh99"},"content":" return db;","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"gavingoh99":60}},{"path":"src/main/java/Mona/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":" protected LocalDateTime start;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":" protected LocalDateTime end;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" protected DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"d \u0027of\u0027 MMMM yyyy, ha\");","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" protected static DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" public Event(String description, String start, String end) {","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" this.start \u003d LocalDateTime.parse(start, formatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" this.end \u003d LocalDateTime.parse(end, formatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" public String parseToLogRepresentation() {","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" int completionStatus \u003d this.isDone ? 1 : 0;","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":" return \"E|\" + completionStatus + \"|\" + this.description + \"|\" + this.start.format(formatter) + \"|\" + this.end.format(formatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.start.format(outputFormatter) + \" to: \" + this.end.format(outputFormatter) + \")\";","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"gavingoh99":26}},{"path":"src/main/java/Mona/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":"public class Launcher {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"gavingoh99":11}},{"path":"src/main/java/Mona/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" private Mona mona \u003d new Mona();","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(mona);","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":" stage.show();","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"gavingoh99"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"gavingoh99":30}},{"path":"src/main/java/Mona/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" private Mona mona;","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/Russer.jpeg\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/Mona.jpeg\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"gavingoh99"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"gavingoh99"},"content":" public void initialize() {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"gavingoh99"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"gavingoh99"},"content":" public void setDuke(Mona mona) {","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"gavingoh99"},"content":" this.mona \u003d mona;","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"gavingoh99"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"gavingoh99"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"gavingoh99"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"gavingoh99"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"gavingoh99"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"gavingoh99"},"content":" String response \u003d mona.getResponse(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"gavingoh99"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"gavingoh99"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"gavingoh99"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"gavingoh99"},"content":" );","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"gavingoh99"},"content":" userInput.clear();","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"gavingoh99":51}},{"path":"src/main/java/Mona/Mona.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":" * This class represents the main class used for gradle builds for my version of the Duke Chatbot.","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":"public class Mona {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":" private Storage storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" private Ui ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" private Scanner sc;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" private Parser parser;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" enum Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" BYE,","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" LIST,","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" EVENT,","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" TODO,","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" DEADLINE,","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" MARK,","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":" UNMARK,","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" DELETE,","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" FIND","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":" * Constructor for Mona, the Duke Chatbot","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"gavingoh99"},"content":" public Mona() {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"gavingoh99"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"gavingoh99"},"content":" this.storage \u003d new Storage(\"data/duke.txt\");","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"gavingoh99"},"content":" this.tasks \u003d new TaskList(storage);","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"gavingoh99"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"gavingoh99"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"gavingoh99"},"content":" public String getResponse(String input) {","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"gavingoh99"},"content":" String[] inputArray \u003d input.split(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"gavingoh99"},"content":" Command currCommand \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"gavingoh99"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"gavingoh99"},"content":" currCommand \u003d parser.getCurrentCommand(inputArray);","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"gavingoh99"},"content":" } catch (MonaException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"gavingoh99"},"content":" return ui.showError(e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"gavingoh99"},"content":" switch (currCommand) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"gavingoh99"},"content":" case BYE:","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"gavingoh99"},"content":" return ui.sayBye();","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"gavingoh99"},"content":" case LIST:","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"gavingoh99"},"content":" return tasks.displayList();","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"gavingoh99"},"content":" case TODO:","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"gavingoh99"},"content":" String[] details \u003d parser.getDetails(currCommand, input);","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"gavingoh99"},"content":" Task newTask \u003d new Todo(details[0]);","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"gavingoh99"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"gavingoh99"},"content":" return ui.showListAfterQuantityChange(newTask, tasks.getNumberOfTasks(), true);","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"gavingoh99"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"gavingoh99"},"content":" details \u003d parser.getDetails(currCommand, input);","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"gavingoh99"},"content":" newTask \u003d new Deadline(details[0], details[1]);","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"gavingoh99"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"gavingoh99"},"content":" return ui.showListAfterQuantityChange(newTask, tasks.getNumberOfTasks(), true);","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"gavingoh99"},"content":" case EVENT:","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"gavingoh99"},"content":" details \u003d parser.getDetails(currCommand, input);","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"gavingoh99"},"content":" newTask \u003d new Event(details[0], details[1], details[2]);","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"gavingoh99"},"content":" tasks.addTask(newTask);","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"gavingoh99"},"content":" return ui.showListAfterQuantityChange(newTask, tasks.getNumberOfTasks(), true);","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"gavingoh99"},"content":" case MARK:","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"gavingoh99"},"content":" Task markedTask \u003d tasks.markTask(Integer.parseInt(inputArray[1]) - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"gavingoh99"},"content":" return ui.showListAfterProgressChange(markedTask);","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"gavingoh99"},"content":" case UNMARK:","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"gavingoh99"},"content":" Task unmarkedTask \u003d tasks.unmarkTask(Integer.parseInt(inputArray[1]) - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"gavingoh99"},"content":" return ui.showListAfterProgressChange(unmarkedTask);","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"gavingoh99"},"content":" case DELETE:","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"gavingoh99"},"content":" Task removedTask \u003d tasks.deleteTask(Integer.parseInt(inputArray[1]) - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"gavingoh99"},"content":" return ui.showListAfterQuantityChange(removedTask, tasks.getNumberOfTasks(), false);","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"gavingoh99"},"content":" case FIND:","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"gavingoh99"},"content":" return tasks.showRelevantTasks(inputArray[1]);","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"gavingoh99"},"content":" default:","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"gavingoh99"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"gavingoh99"},"content":" return \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gavingoh99":81}},{"path":"src/main/java/Mona/MonaException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"public class MonaException extends Exception {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":" public MonaException(String errorMessage) {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":" super(errorMessage);","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"gavingoh99":6}},{"path":"src/main/java/Mona/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":" * This class contains all logic for parsing the user input","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"public class Parser {","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":" * Method for determining the type of command given by the user","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" * @param input the user input split by the \" \" delimiter","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" * @return Command enum indicating which of the predefined commands was called","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" * @throws MonaException thrown when an unknown command is encountered","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" public Mona.Command getCurrentCommand(String[] input) throws MonaException{","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" switch (input[0]) {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" case \"bye\":","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" return Mona.Command.BYE;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" case \"list\":","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" return Mona.Command.LIST;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":" return Mona.Command.DEADLINE;","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" case \"todo\":","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" return Mona.Command.TODO;","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":" case \"event\":","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" return Mona.Command.EVENT;","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":" case \"mark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":" return Mona.Command.MARK;","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"gavingoh99"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"gavingoh99"},"content":" return Mona.Command.UNMARK;","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"gavingoh99"},"content":" case \"delete\":","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"gavingoh99"},"content":" return Mona.Command.DELETE;","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"gavingoh99"},"content":" case \"find\":","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"gavingoh99"},"content":" return Mona.Command.FIND;","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"gavingoh99"},"content":" default:","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"gavingoh99"},"content":" throw new MonaException(\"Mona does not recognise this command!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"gavingoh99"},"content":" * Method for getting the rest of the details following the type of task being added to the list","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"gavingoh99"},"content":" * @param command Command enum indicating which command was called","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"gavingoh99"},"content":" * @param input full user input from the command line","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"gavingoh99"},"content":" * @return an array containing the details to be used to instantiate tasks","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"gavingoh99"},"content":" public String[] getDetails(Mona.Command command, String input) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"gavingoh99"},"content":" String[] details \u003d new String[3];","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"gavingoh99"},"content":" switch (command) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"gavingoh99"},"content":" case TODO:","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"gavingoh99"},"content":" details[0] \u003d input.substring(5);","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"gavingoh99"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"gavingoh99"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"gavingoh99"},"content":" String rest \u003d input.substring(9);","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"gavingoh99"},"content":" String[] parts \u003d rest.split(\" /by \");","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"gavingoh99"},"content":" details[0] \u003d parts[0];","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"gavingoh99"},"content":" details[1] \u003d parts[1];","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"gavingoh99"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"gavingoh99"},"content":" case EVENT:","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"gavingoh99"},"content":" String[] subDetails \u003d input.substring(6).split(\" /from \");","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"gavingoh99"},"content":" String[] startAndEnd \u003d subDetails[1].split(\" /to \");","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"gavingoh99"},"content":" details[0] \u003d subDetails[0];","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"gavingoh99"},"content":" details[1] \u003d startAndEnd[0];","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"gavingoh99"},"content":" details[2] \u003d startAndEnd[1];","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"gavingoh99"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"gavingoh99"},"content":" default:","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"gavingoh99"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"gavingoh99"},"content":" return details;","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"gavingoh99":68}},{"path":"src/main/java/Mona/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"import java.io.*;","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":"import java.util.List;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" * This class contains the logic for interacting with the data logs","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":"public class Storage {","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" protected static DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"M/d/yyyy HHmm\");","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" private String filePath;","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" * Constructor for Storage","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" * @param filePath location for the logs to be written to","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":" String workingDirectory \u003d System.getProperty(\"user.dir\");","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":" Path dataDirectory \u003d Paths.get(workingDirectory + \"/data\");","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":" Files.createDirectories(dataDirectory);","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"gavingoh99"},"content":" File logFile \u003d new File(workingDirectory + \"/\" + this.filePath);","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"gavingoh99"},"content":" logFile.createNewFile();","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"gavingoh99"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"gavingoh99"},"content":" System.out.println(\"Error occurred setting up log\" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"gavingoh99"},"content":" * Method for adding the tasks stored in the logs to Mona\u0027s task list","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"gavingoh99"},"content":" * @param currentTasks Mona\u0027s task list for tasks stored in the logs to be added to","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"gavingoh99"},"content":" public void readLog(List\u003cTask\u003e currentTasks) {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"gavingoh99"},"content":" File log \u003d new File(this.filePath);","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"gavingoh99"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"gavingoh99"},"content":" Scanner s \u003d new Scanner(log);","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"gavingoh99"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"gavingoh99"},"content":" String[] task \u003d s.nextLine().split(\"\\\\|\");","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"gavingoh99"},"content":" currentTasks.add(parseLogEntry(task));","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"gavingoh99"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"gavingoh99"},"content":" System.out.println(\"File not found:\" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"gavingoh99"},"content":" * Method for translating the tasks stored in the logs into their corresponding Tasks","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"gavingoh99"},"content":" * @param logEntry the task stored in the log","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"gavingoh99"},"content":" * @return the corresponding task instance","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"gavingoh99"},"content":" public static Task parseLogEntry(String[] logEntry) {","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"gavingoh99"},"content":" String description \u003d logEntry[2];","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"gavingoh99"},"content":" boolean isCompleted \u003d logEntry[1].equals(\"1\");","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"gavingoh99"},"content":" switch (logEntry[0]) {","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"gavingoh99"},"content":" case \"T\":","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"gavingoh99"},"content":" Task currTask \u003d new Todo(description);","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"gavingoh99"},"content":" currTask.setCompletion(isCompleted);","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"gavingoh99"},"content":" return currTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"gavingoh99"},"content":" case \"D\":","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"gavingoh99"},"content":" currTask \u003d new Deadline(description, logEntry[3]);","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"gavingoh99"},"content":" currTask.setCompletion(isCompleted);","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"gavingoh99"},"content":" return currTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"gavingoh99"},"content":" case \"E\":","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"gavingoh99"},"content":" currTask \u003d new Event(description, logEntry[3], logEntry[4]);","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"gavingoh99"},"content":" currTask.setCompletion(isCompleted);","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"gavingoh99"},"content":" return currTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"gavingoh99"},"content":" default:","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"gavingoh99"},"content":" return null;","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"gavingoh99"},"content":" * Method for updating the logs when the task list is modified while Mona is running","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"gavingoh99"},"content":" * @param currentTasks Mona\u0027s task list which the user can directly interact with","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"gavingoh99"},"content":" public void writeToFile(List\u003cTask\u003e currentTasks) {","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"gavingoh99"},"content":" File log \u003d new File(this.filePath);","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"gavingoh99"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"gavingoh99"},"content":" for (Task task : currentTasks) {","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"gavingoh99"},"content":" sb.append(task.parseToLogRepresentation() + \"\\n\");","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"gavingoh99"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"gavingoh99"},"content":" FileWriter fw \u003d new FileWriter(log.getAbsoluteFile());","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"gavingoh99"},"content":" BufferedWriter bw \u003d new BufferedWriter(fw);","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"gavingoh99"},"content":" bw.write(sb.toString());","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"gavingoh99"},"content":" bw.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"gavingoh99"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"gavingoh99"},"content":" System.out.println(\"Problem writing to log: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"gavingoh99":96}},{"path":"src/main/java/Mona/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":" public void setCompletion(boolean isCompleted) {","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" this.isDone \u003d isCompleted;","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" public String parseToLogRepresentation() {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":" return this.toString();","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"gavingoh99"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"gavingoh99"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"gavingoh99"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"gavingoh99"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"gavingoh99":36}},{"path":"src/main/java/Mona/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"import java.util.List;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":" * This class contains all logic surrounding Mona\u0027s task list","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":"public class TaskList {","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" private List\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" private Storage storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" * Constructor for Task List","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" * @param storage The storage instance that works hand-in-hand for most of the task list logic","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" public TaskList(Storage storage) {","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" storage.readLog(this.tasks);","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" * Display the contents of the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" public String displayList() {","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":" sb.append(\" ______________________________________\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"gavingoh99"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"gavingoh99"},"content":" Task currTask \u003d tasks.get(i);","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"gavingoh99"},"content":" sb.append(\" \" + (i + 1) + \". \" + currTask + \"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"gavingoh99"},"content":" sb.append(\" ______________________________________\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"gavingoh99"},"content":" return sb.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"gavingoh99"},"content":" * Adds a task to the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"gavingoh99"},"content":" * @param task the task to be added","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"gavingoh99"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"gavingoh99"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"gavingoh99"},"content":" storage.writeToFile(tasks);","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"gavingoh99"},"content":" * Adds a task to the task list for unit testing","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"gavingoh99"},"content":" * @param task the task to be added","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"gavingoh99"},"content":" public void addTaskTest(Task task) {","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"gavingoh99"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"gavingoh99"},"content":" * Unmarks the task at the given index in the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"gavingoh99"},"content":" * @param taskIndex the index of the target task in the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"gavingoh99"},"content":" * @return the unmarked task","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"gavingoh99"},"content":" public Task unmarkTask(int taskIndex) {","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"gavingoh99"},"content":" Task currTask \u003d this.tasks.get(taskIndex);","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"gavingoh99"},"content":" currTask.setCompletion(false);","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"gavingoh99"},"content":" storage.writeToFile(tasks);","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"gavingoh99"},"content":" return currTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"gavingoh99"},"content":" * Marks the task at the given index in the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"gavingoh99"},"content":" * @param taskIndex the index of the target task in the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"gavingoh99"},"content":" * @return the marked task","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"gavingoh99"},"content":" public Task markTask(int taskIndex) {","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"gavingoh99"},"content":" Task currTask \u003d this.tasks.get(taskIndex);","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"gavingoh99"},"content":" currTask.setCompletion(true);","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"gavingoh99"},"content":" storage.writeToFile(tasks);","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"gavingoh99"},"content":" return currTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"gavingoh99"},"content":" * Deletes the task at the given index in the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"gavingoh99"},"content":" * @param taskIndex the index of the target task in the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"gavingoh99"},"content":" * @return the deleted task","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"gavingoh99"},"content":" public Task deleteTask(int taskIndex) {","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"gavingoh99"},"content":" Task removedTask \u003d this.tasks.remove(taskIndex);","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"gavingoh99"},"content":" storage.writeToFile(tasks);","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"gavingoh99"},"content":" return removedTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"gavingoh99"},"content":" * Deletes the task at the given index in the task list for unit testing","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"gavingoh99"},"content":" * @param taskIndex the index of the target task in the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"gavingoh99"},"content":" * @return the deleted task","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"gavingoh99"},"content":" public Task deleteTaskTest(int taskIndex) {","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"gavingoh99"},"content":" Task removedTask \u003d this.tasks.remove(taskIndex);","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"gavingoh99"},"content":" return removedTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"gavingoh99"},"content":" * Provides the number of tasks presently in the task list","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"gavingoh99"},"content":" * @return the number of tasks in the list","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"gavingoh99"},"content":" public int getNumberOfTasks() {","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"gavingoh99"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"gavingoh99"},"content":" public String showRelevantTasks(String keyword) {","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"gavingoh99"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"gavingoh99"},"content":" sb.append(\" ______________________________________\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":106,"author":{"gitId":"gavingoh99"},"content":" sb.append(\" Give Mona a second to find relevant tasks...\");","lastModifiedDate":"2024-02-07"},{"lineNumber":107,"author":{"gitId":"gavingoh99"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"gavingoh99"},"content":" Task currTask \u003d tasks.get(i);","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"gavingoh99"},"content":" if (!currTask.description.contains(keyword)) {","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"gavingoh99"},"content":" continue;","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"gavingoh99"},"content":" sb.append(\" \" + (i + 1) + \". \" + currTask);","lastModifiedDate":"2024-02-07"},{"lineNumber":113,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"gavingoh99"},"content":" sb.append(\" ______________________________________\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":115,"author":{"gitId":"gavingoh99"},"content":" return sb.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":116,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"gavingoh99":117}},{"path":"src/main/java/Mona/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":" public String parseToLogRepresentation() {","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" int completionStatus \u003d this.isDone ? 1 : 0;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" return \"T|\" + completionStatus + \"|\" + this.description;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"gavingoh99":16}},{"path":"src/main/java/Mona/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":" * This class contains all logic regarding Mona\u0027s response","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"public class Ui {","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" * Constructor for Ui","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" public Ui() {","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" this.greet();","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" * Functionality for Mona\u0027s greeting at the start of the program","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" public String greet() {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" String introduction \u003d \" ______________________________________\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":" + \" Hello! I\u0027m Mona\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" + \" What can I do for you?\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" + \" ______________________________________\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":" return introduction;","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"gavingoh99"},"content":" * Mona\u0027s farewell when the user issues the bye command","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"gavingoh99"},"content":" public String sayBye() {","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"gavingoh99"},"content":" String farewell \u003d \" ______________________________________\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"gavingoh99"},"content":" + \" Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"gavingoh99"},"content":" + \" ______________________________________\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"gavingoh99"},"content":" return farewell;","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"gavingoh99"},"content":" * Mona updates the user of the task that was added / removed and the number of tasks that remain","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"gavingoh99"},"content":" * @param task task that was removed / added","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"gavingoh99"},"content":" * @param numTasks remaining number of tasks","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"gavingoh99"},"content":" * @param hasIncreased whether a task was added or removed from the list","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"gavingoh99"},"content":" public String showListAfterQuantityChange(Task task, int numTasks, boolean hasIncreased) {","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"gavingoh99"},"content":" String action \u003d hasIncreased ? \"added\" : \"removed\";","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"gavingoh99"},"content":" String response \u003d \" ______________________________________\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"gavingoh99"},"content":" + \" Noted. I\u0027ve \" + action + \" this task: \\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"gavingoh99"},"content":" + \" \" + task + \"\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"gavingoh99"},"content":" + \" Now you have \" + numTasks + \" tasks in the list.\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"gavingoh99"},"content":" + \" ______________________________________\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"gavingoh99"},"content":" return response;","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"gavingoh99"},"content":" * Mona acknowledges that a task has been marked or unmarked","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"gavingoh99"},"content":" * @param task the task that was marked or unmarked","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"gavingoh99"},"content":" public String showListAfterProgressChange(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"gavingoh99"},"content":" String status \u003d task.isDone ? \"done\" : \"not done\";","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"gavingoh99"},"content":" String response \u003d \" ______________________________________\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"gavingoh99"},"content":" + \" Got it! I\u0027ve marked this task as \" + status + \":\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"gavingoh99"},"content":" + \" \" + task + \"\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"gavingoh99"},"content":" + \" ______________________________________\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"gavingoh99"},"content":" return response;","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"gavingoh99"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"gavingoh99"},"content":" * Mona echoes the message when an exception is thrown","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"gavingoh99"},"content":" * @param message the message from the exception","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"gavingoh99"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"gavingoh99"},"content":" public String showError(String message) {","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"gavingoh99"},"content":" String response \u003d \" ______________________________________\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"gavingoh99"},"content":" + \" \" + message","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"gavingoh99"},"content":" + \" ______________________________________\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"gavingoh99"},"content":" return response;","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"gavingoh99":75}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"gavingoh99":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"mona.MainWindow\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"gavingoh99":19}},{"path":"src/test/java/Mona/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"class ParserTest {","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" public void testGetCommand() throws MonaException {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" assertEquals(Mona.Command.BYE, parser.getCurrentCommand(new String[]{\"bye\"}));","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" assertEquals(Mona.Command.TODO, parser.getCurrentCommand(new String[]{\"todo\"}));","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" assertEquals(Mona.Command.EVENT, parser.getCurrentCommand(new String[]{\"event\"}));","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" assertEquals(Mona.Command.DEADLINE, parser.getCurrentCommand(new String[]{\"deadline\"}));","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" assertEquals(Mona.Command.LIST, parser.getCurrentCommand(new String[]{\"list\"}));","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" assertEquals(Mona.Command.UNMARK, parser.getCurrentCommand(new String[]{\"unmark\"}));","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" assertEquals(Mona.Command.MARK, parser.getCurrentCommand(new String[]{\"mark\"}));","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"gavingoh99":19}},{"path":"src/test/java/Mona/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"package mona;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"gavingoh99"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"gavingoh99"},"content":"public class TaskListTest {","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"gavingoh99"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"gavingoh99"},"content":" public void testInsert() {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"gavingoh99"},"content":" Storage storage \u003d new Storage(\"\");","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"gavingoh99"},"content":" TaskList taskList \u003d new TaskList(storage);","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"gavingoh99"},"content":" Todo toAdd \u003d new Todo(\"first todo\");","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"gavingoh99"},"content":" Todo toAdd2 \u003d new Todo(\"second todo\");","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"gavingoh99"},"content":" taskList.addTaskTest(toAdd);","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"gavingoh99"},"content":" assertEquals(1, taskList.getNumberOfTasks());","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"gavingoh99"},"content":" taskList.addTaskTest(toAdd2);","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"gavingoh99"},"content":" assertEquals(2, taskList.getNumberOfTasks());","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"gavingoh99"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"gavingoh99"},"content":" public void testRemove() {","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"gavingoh99"},"content":" Storage storage \u003d new Storage(\"\");","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"gavingoh99"},"content":" TaskList taskList \u003d new TaskList(storage);","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":" Todo toAdd \u003d new Todo(\"first todo\");","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"gavingoh99"},"content":" Todo toAdd2 \u003d new Todo(\"second todo\");","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"gavingoh99"},"content":" taskList.addTaskTest(toAdd);","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"gavingoh99"},"content":" taskList.addTaskTest(toAdd2);","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"gavingoh99"},"content":" Task removed1 \u003d taskList.deleteTaskTest(0);","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"gavingoh99"},"content":" assertEquals(\"first todo\", removed1.description);","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"gavingoh99"},"content":" Task removed2 \u003d taskList.deleteTaskTest(0);","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"gavingoh99"},"content":" assertEquals(\"second todo\", removed2.description);","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"gavingoh99"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"gavingoh99"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"gavingoh99":32}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"gavingoh99"},"content":"todo borrow book","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"gavingoh99"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"gavingoh99"},"content":"deadline return book /by June 6th","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"gavingoh99"},"content":"event project meeting /from Aug 6th 2pm /to 4pm","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"gavingoh99"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"gavingoh99":5}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"gavingoh99"},"content":"java -classpath ../bin Mona \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":{"gavingoh99":1,"-":37}}] diff --git a/gavingoh99_ip_master/commits.json b/gavingoh99_ip_master/commits.json index 8866cb76..0a6bdf4c 100644 --- a/gavingoh99_ip_master/commits.json +++ b/gavingoh99_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"gavingoh99":[{"date":"2024-01-23","commitResults":[{"hash":"7ef83492afb404a24b43ed024d88d833f9167227","isMergeCommit":false,"messageTitle":"added features for level 1","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"e26b4b37030a074f23014d7dc7573177be8c6fe6","isMergeCommit":false,"messageTitle":"added features for level 1 corrected","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":6}}},{"hash":"063244d79100aa3c4f6f8cf8ddc380e06ea556f3","isMergeCommit":false,"messageTitle":"removed Duke template","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}},{"hash":"ce362929812cedbe3adb59efc978aa49b9b1122d","isMergeCommit":false,"messageTitle":"added features for level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":4}}},{"hash":"9070e10046460f062d5cd71e20f31816a6b6bacc","isMergeCommit":false,"messageTitle":"added features for level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":3}}}]},{"date":"2024-01-24","commitResults":[{"hash":"7a5e910f9ce8b617f6bc1f2eef4017e159e24a25","isMergeCommit":false,"messageTitle":"added features for level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":5}}},{"hash":"e8427f5a3e441aa1522257f36047bc4a0a67d6ef","isMergeCommit":false,"messageTitle":"added textuitesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"b069223218fdee9f308819495d8e3b1c625ab2ed","isMergeCommit":false,"messageTitle":"added exception and handling of errors for level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":4}}},{"hash":"fd08ee62bda3b24d30a2d9f006419b2e463f56b1","isMergeCommit":false,"messageTitle":"added delete feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}}]},{"date":"2024-01-31","commitResults":[{"hash":"05da62ab142ce51b25d9a3111c5c055319113ec0","isMergeCommit":false,"messageTitle":"feat: added logging functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":99,"deletions":3}}},{"hash":"673c884e2cfafb7992082216ec4eb69aea020920","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"fbfb1780f66c200736a859d9d37037cfb978901a","isMergeCommit":false,"messageTitle":"feat: added datetime functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":26,"deletions":13}}},{"hash":"6e315c61783427926bc764424a359ca88d8e9e39","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"5f3fccec1d80cb5a301976d3fd80ea148059343e","isMergeCommit":false,"messageTitle":"refactor: added new classes to abstract functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"f75434e7800b922a4236b77bcc866e4a807584cf","isMergeCommit":false,"messageTitle":"refactor: abstracted task list and storage functions","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":243,"deletions":181}}},{"hash":"bceff06056a684d2f9d7676aa89d9dba27bf2b30","isMergeCommit":false,"messageTitle":"refactor: abstracted parser and ui functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":42}}},{"hash":"6b9ed8ee3010328c3eecc3d2d568816a43eafe1b","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"aa43da815aee00c10a9d417de312b010e39ff9e8","isMergeCommit":false,"messageTitle":"refactor: transferred files into Mona package","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":13,"deletions":3}}},{"hash":"f9c0ef0037accfcd974aa27647767ebf129784e1","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"cec752bc7a2b1016cf9240ec5a4b869275f759fb","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1211d03cf860d2331108c16cb1949d7c6c0b6acc","isMergeCommit":false,"messageTitle":"feat: integrated gradle functionality","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":1}}},{"hash":"47277046b23cbc86179e1da03f1881a95259ba0e","isMergeCommit":false,"messageTitle":"feat: added unit testing for parser and tasklist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":0}}},{"hash":"12ac401a8367024946745e7232a5a3d9f991d031","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"80c0b2cd9fa02e363f2be7641890238de9fc19a0","isMergeCommit":false,"messageTitle":"feat: added gradle build function","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":3},"java":{"insertions":0,"deletions":2}}},{"hash":"598441b23873db37c148f36d74bb65d3a8241282","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Jar\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}},{"hash":"e0cfae229ac28bbee21fa37be10a8d25ee802313","isMergeCommit":false,"messageTitle":"docs: added javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":142,"deletions":0}}},{"hash":"e7222a9dd2436d7dedca84f30d409bba602cc3c8","isMergeCommit":false,"messageTitle":"misc: modified code to adhere to styling conventions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":87}}},{"hash":"87f3ca1b77a15e0c1865f393f750eb6d4f2c36e5","isMergeCommit":false,"messageTitle":"feat: added find feature and fixed bug regarding IOException being thrown","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":19,"deletions":3}}},{"hash":"e206cdffb15838382a537dc15824ad4abd3b04cf","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"1a2fdce7c146e806e12ace438ecade0fc41f1c41","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"59155bc9c72b45916ecce8ee92d6d1e2bd8e6fb6","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"6c1a9585aae19ce4d64130e37aa74e7a50e7c3eb","isMergeCommit":true,"messageTitle":"misc: resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2f20f82ca83f1f2a26ffb6dc7726c93936a90873","isMergeCommit":true,"messageTitle":"Merge branch \u0027Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"6025b6279e876c28d3b57046c3cc02534f6c5d88","isMergeCommit":false,"messageTitle":"feat: added checkstyle capabilities and integrated functionality with gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":12,"deletions":14}}},{"hash":"ac9689f1c6bc90662fd6c9c4384bbbe5e28eeab6","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-CheckStyle\u0027","messageBody":"","tags":["A-Checkstyle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"gavingoh99":{"java":616,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":7,"txt":13}},"authorContributionVariance":{"gavingoh99":62194.92},"authorDisplayNameMap":{"gavingoh99":"CS2103T-T16-3 GAVI..HONG"}} +{"authorDailyContributionsMap":{"gavingoh99":[{"date":"2024-01-23","commitResults":[{"hash":"7ef83492afb404a24b43ed024d88d833f9167227","isMergeCommit":false,"messageTitle":"added features for level 1","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":0}}},{"hash":"e26b4b37030a074f23014d7dc7573177be8c6fe6","isMergeCommit":false,"messageTitle":"added features for level 1 corrected","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":6}}},{"hash":"063244d79100aa3c4f6f8cf8ddc380e06ea556f3","isMergeCommit":false,"messageTitle":"removed Duke template","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":10}}},{"hash":"ce362929812cedbe3adb59efc978aa49b9b1122d","isMergeCommit":false,"messageTitle":"added features for level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":4}}},{"hash":"9070e10046460f062d5cd71e20f31816a6b6bacc","isMergeCommit":false,"messageTitle":"added features for level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":49,"deletions":3}}}]},{"date":"2024-01-24","commitResults":[{"hash":"7a5e910f9ce8b617f6bc1f2eef4017e159e24a25","isMergeCommit":false,"messageTitle":"added features for level 4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":5}}},{"hash":"e8427f5a3e441aa1522257f36047bc4a0a67d6ef","isMergeCommit":false,"messageTitle":"added textuitesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"b069223218fdee9f308819495d8e3b1c625ab2ed","isMergeCommit":false,"messageTitle":"added exception and handling of errors for level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":4}}},{"hash":"fd08ee62bda3b24d30a2d9f006419b2e463f56b1","isMergeCommit":false,"messageTitle":"added delete feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}}]},{"date":"2024-01-31","commitResults":[{"hash":"05da62ab142ce51b25d9a3111c5c055319113ec0","isMergeCommit":false,"messageTitle":"feat: added logging functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":99,"deletions":3}}},{"hash":"673c884e2cfafb7992082216ec4eb69aea020920","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"fbfb1780f66c200736a859d9d37037cfb978901a","isMergeCommit":false,"messageTitle":"feat: added datetime functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":26,"deletions":13}}},{"hash":"6e315c61783427926bc764424a359ca88d8e9e39","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"5f3fccec1d80cb5a301976d3fd80ea148059343e","isMergeCommit":false,"messageTitle":"refactor: added new classes to abstract functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"f75434e7800b922a4236b77bcc866e4a807584cf","isMergeCommit":false,"messageTitle":"refactor: abstracted task list and storage functions","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":243,"deletions":181}}},{"hash":"bceff06056a684d2f9d7676aa89d9dba27bf2b30","isMergeCommit":false,"messageTitle":"refactor: abstracted parser and ui functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":42}}},{"hash":"6b9ed8ee3010328c3eecc3d2d568816a43eafe1b","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"aa43da815aee00c10a9d417de312b010e39ff9e8","isMergeCommit":false,"messageTitle":"refactor: transferred files into Mona package","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":13,"deletions":3}}},{"hash":"f9c0ef0037accfcd974aa27647767ebf129784e1","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"cec752bc7a2b1016cf9240ec5a4b869275f759fb","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1211d03cf860d2331108c16cb1949d7c6c0b6acc","isMergeCommit":false,"messageTitle":"feat: integrated gradle functionality","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":1,"deletions":1}}},{"hash":"47277046b23cbc86179e1da03f1881a95259ba0e","isMergeCommit":false,"messageTitle":"feat: added unit testing for parser and tasklist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":0}}},{"hash":"12ac401a8367024946745e7232a5a3d9f991d031","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"80c0b2cd9fa02e363f2be7641890238de9fc19a0","isMergeCommit":false,"messageTitle":"feat: added gradle build function","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":3},"java":{"insertions":0,"deletions":2}}},{"hash":"598441b23873db37c148f36d74bb65d3a8241282","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Jar\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}},{"hash":"e0cfae229ac28bbee21fa37be10a8d25ee802313","isMergeCommit":false,"messageTitle":"docs: added javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":142,"deletions":0}}},{"hash":"e7222a9dd2436d7dedca84f30d409bba602cc3c8","isMergeCommit":false,"messageTitle":"misc: modified code to adhere to styling conventions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":87,"deletions":87}}},{"hash":"87f3ca1b77a15e0c1865f393f750eb6d4f2c36e5","isMergeCommit":false,"messageTitle":"feat: added find feature and fixed bug regarding IOException being thrown","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":19,"deletions":3}}},{"hash":"e206cdffb15838382a537dc15824ad4abd3b04cf","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"1a2fdce7c146e806e12ace438ecade0fc41f1c41","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into A-CodingStandard","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"59155bc9c72b45916ecce8ee92d6d1e2bd8e6fb6","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"6c1a9585aae19ce4d64130e37aa74e7a50e7c3eb","isMergeCommit":true,"messageTitle":"misc: resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2f20f82ca83f1f2a26ffb6dc7726c93936a90873","isMergeCommit":true,"messageTitle":"Merge branch \u0027Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"6025b6279e876c28d3b57046c3cc02534f6c5d88","isMergeCommit":false,"messageTitle":"feat: added checkstyle capabilities and integrated functionality with gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"java":{"insertions":12,"deletions":14}}},{"hash":"ac9689f1c6bc90662fd6c9c4384bbbe5e28eeab6","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-CheckStyle\u0027","messageBody":"","tags":["A-Checkstyle"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-07","commitResults":[{"hash":"5aaa19b7d87010d2e97bc3b41eef1dde7215100b","isMergeCommit":false,"messageTitle":"feat: ported cli to gui and updated ui to fit dimensions","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":15,"deletions":1},"txt":{"insertions":2,"deletions":8},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":232,"deletions":99}}},{"hash":"2961d4394d06040e9272291de394864f4d9ab7a4","isMergeCommit":true,"messageTitle":"Merge branch \u0027Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"gavingoh99":{"java":749,"md":0,"fxml":35,"sh":1,"bat":0,"gradle":21,"txt":7}},"authorContributionVariance":{"gavingoh99":63891.75},"authorDisplayNameMap":{"gavingoh99":"CS2103T-T16-3 GAVI..HONG"}} diff --git a/ibnu2651_ip_master/authorship.json b/ibnu2651_ip_master/authorship.json index 3dc091e3..81c2c150 100644 --- a/ibnu2651_ip_master/authorship.json +++ b/ibnu2651_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"# ada.Ada project template","lastModifiedDate":"2024-02-05"},{"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":"ibnu2651"},"content":"3. After that, locate the `src/main/java/ada.Ada.java` file, right-click it, and choose `Run ada.Ada.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-02-05"},{"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":{"ibnu2651":2,"-":22}},{"path":"ada.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"T,1,return","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"ibnu2651":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":"ibnu2651"},"content":" mainClass.set(\"ada.Ada\")","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" archiveBaseName \u003d \"ada\"","lastModifiedDate":"2024-02-05"},{"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":{"ibnu2651":2,"-":40}},{"path":"src/main/java/ada/Ada.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.command.Command;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.ui.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":" * The Duke program implements a chatbot that keeps track of tasks for the user.","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"public class Ada {","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" private Storage storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" private Ui ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" * Returns an instance of the program which loads the tasks from the file found at the provided filepath.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" * @param filePath The filepath of the file to load/saves the tasks from/to.","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" public Ada(String filePath) {","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" } catch (AdaException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" * Runs the program by accepting text input from the user in the command line.","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" public void run() {","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" ui.showWelcome();","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" while (!isExit) {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" } catch (AdaException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" * Main method to start the program.","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" * @param args Unused.","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" new Ada(\"ada.txt\").run();","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ibnu2651":54,"-":2}},{"path":"src/main/java/ada/AdaException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":" * Represents an exception specific to Duke.","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"public class AdaException extends Exception {","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":" * Creates an exception with the provided error message.","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" * @param message The error message of the exception.","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" public AdaException(String message) {","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" public String getMessage() {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" return \"ERROR: \" + super.getMessage();","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ibnu2651":23}},{"path":"src/main/java/ada/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.command.AddCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.command.Command;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.command.DeleteCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.command.ExitCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import ada.command.FindCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"import ada.command.ListCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"import ada.command.MarkCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"import ada.command.UnmarkCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" * Parses the user input and creates the commands requested by the user.","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"public class Parser {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" * Returns an instance of a Parser object to parse the user input.","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" public Parser() {","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" * Returns the command object after parsing through the user input.","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" * @param fullCommand The user input.","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" * @return The command object created.","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" * @throws AdaException If the user input is an invalid command or format.","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" public static Command parse(String fullCommand) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" String command \u003d fullCommand.split(\" \")[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" String[] splitCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" String[] splitDesc;","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" switch (command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" case \"list\":","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" case \"todo\":","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" splitCommand \u003d fullCommand.split(\" \",2);","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Description of a todo cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" return new AddCommand(command, splitCommand[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" splitCommand \u003d fullCommand.split(\" \",2);","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Description of a deadline cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" splitDesc \u003d splitCommand[1].split(\" /by \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" if (splitDesc.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Date/time of a deadline cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":" return new AddCommand(command, splitDesc[0], splitDesc[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" case \"event\":","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":" splitCommand \u003d fullCommand.split(\" \",2);","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"ibnu2651"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Description of a event cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"ibnu2651"},"content":" splitDesc \u003d splitCommand[1].split(\" /from \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":" if (splitDesc.length\u003d\u003d1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Start date/time of a event cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"ibnu2651"},"content":" String[] splitFrom \u003d splitDesc[1].split(\" /to \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"ibnu2651"},"content":" if (splitFrom.length\u003d\u003d1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"End date/time of a event cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"ibnu2651"},"content":" return new AddCommand(command, splitDesc[0], splitFrom[0], splitFrom[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"ibnu2651"},"content":" case \"mark\":","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"ibnu2651"},"content":" splitCommand \u003d fullCommand.split(\" \");","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"ibnu2651"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Task number of mark cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":75,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"ibnu2651"},"content":" return new MarkCommand(Integer.parseInt(splitCommand[1]));","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"ibnu2651"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"ibnu2651"},"content":" splitCommand \u003d fullCommand.split(\" \");","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"ibnu2651"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Task number of unmark cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":81,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"ibnu2651"},"content":" return new UnmarkCommand(Integer.parseInt(splitCommand[1]));","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"ibnu2651"},"content":" case \"delete\":","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"ibnu2651"},"content":" splitCommand \u003d fullCommand.split(\" \");","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"ibnu2651"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Task number of delete cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":87,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"ibnu2651"},"content":" return new DeleteCommand(Integer.parseInt(splitCommand[1]));","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"ibnu2651"},"content":" case \"find\":","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"ibnu2651"},"content":" splitCommand \u003d fullCommand.split(\" \");","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"ibnu2651"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Task number of delete cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":93,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"ibnu2651"},"content":" return new FindCommand(splitCommand[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"ibnu2651"},"content":" case \"bye\":","lastModifiedDate":"2024-02-02"},{"lineNumber":96,"author":{"gitId":"ibnu2651"},"content":" return new ExitCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"ibnu2651"},"content":" default:","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"I don\u0027t know what that means.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":99,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ibnu2651":101}},{"path":"src/main/java/ada/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.task.Deadline;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.task.Event;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.task.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import ada.task.Todo;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"import java.io.File;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" * Loads and saves the list of tasks to a file.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":"public class Storage {","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" private String filepath;","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" * Returns an instance of a Storage object that will load/save to the given filepath.","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" * @param filepath The filepath of the file to load/saves the tasks from/to.","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" public Storage(String filepath) {","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" * Returns an instance of a Storage object that will load/save to the default filepath \"./ada.txt\".","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" public Storage() {","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" this(\"./ada.txt\");","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" * Returns the list of tasks loaded from the storage file.","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" * @return The list of tasks loaded in an ArrayList.","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" * @throws AdaException If the file to load from cannot be loaded.","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" public ArrayList\u003cTask\u003e load() throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" File file \u003d new File(this.filepath);","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" Scanner fileScanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" while (fileScanner.hasNextLine()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":" String[] task \u003d line.split(\",\" );","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" Task t \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":" switch (task[0]) {","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ibnu2651"},"content":" case \"T\":","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ibnu2651"},"content":" t \u003d new Todo(task[2]);","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ibnu2651"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ibnu2651"},"content":" case \"D\":","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ibnu2651"},"content":" t \u003d new Deadline(task[2], task[3]);","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ibnu2651"},"content":" case \"E\":","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"ibnu2651"},"content":" t \u003d new Event(task[2], task[3], task[4]);","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"ibnu2651"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ibnu2651"},"content":" if (task[1].equals(\"1\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"ibnu2651"},"content":" t.mark();","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ibnu2651"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"ibnu2651"},"content":" fileScanner.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"ibnu2651"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Unable to load file\");","lastModifiedDate":"2024-02-05"},{"lineNumber":74,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"ibnu2651"},"content":" return tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"ibnu2651"},"content":" * Saves the current list of tasks to the storage file.","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"ibnu2651"},"content":" * @param tasklist The list of tasks to save.","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"ibnu2651"},"content":" * @throws AdaException If the file cannot be saved to.","lastModifiedDate":"2024-02-05"},{"lineNumber":83,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"ibnu2651"},"content":" public void save(TaskList tasklist) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":85,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"ibnu2651"},"content":" ArrayList\u003cTask\u003e tasks \u003d tasklist.getTasks();","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"ibnu2651"},"content":" File file \u003d new File(this.filepath);","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"ibnu2651"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"ibnu2651"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"ibnu2651"},"content":" System.out.println(\"created file\");","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"ibnu2651"},"content":" PrintWriter writer \u003d new PrintWriter(file);","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"ibnu2651"},"content":" for (Task t: tasks) {","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"ibnu2651"},"content":" writer.println(t.toFileString());","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"ibnu2651"},"content":" writer.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"ibnu2651"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Unable to save file\");","lastModifiedDate":"2024-02-05"},{"lineNumber":99,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ibnu2651":101}},{"path":"src/main/java/ada/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.command;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.Storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.task.Deadline;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.task.Event;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import ada.task.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"import ada.task.Todo;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"import ada.ui.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" * Represents a command to add a task.","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" private String command;","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" private String desc;","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" private String[] details;","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" * Returns a command that contains the details of the task to add.","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" * @param details Task type, description, and optional date/times of task.","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" public AddCommand(String... details) {","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" this.details \u003d new String[details.length - 2];","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" for (int i \u003d 0; i \u003c this.details.length; i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" this.details[i] \u003d details[i + 2];","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" this.command \u003d details[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" this.desc \u003d details[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" * Adds the new task created to the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" Task t \u003d null;","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" switch (this.command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" case \"todo\":","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" t \u003d new Todo(this.desc);","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" tasks.add(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" t \u003d new Deadline(this.desc, this.details[0]);","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" tasks.add(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" case \"event\":","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":" t \u003d new Event(this.desc, this.details[0], this.details[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":" tasks.add(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(t.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(\"Now you have \" + tasks.size() + \" task(s) in the list.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"ibnu2651"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"ibnu2651"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"ibnu2651":69}},{"path":"src/main/java/ada/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.command;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.Storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.ui.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" * Represents a command to be executed by the program.","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"abstract public class Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" * Executes the command.","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" * @param tasks Current TaskList of program.","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" * @param ui Ui used by the program.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" * @param storage Storage used by the program.","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" * @throws AdaException If command cannot be executed.","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" * Returns true if the command executed exits the program.","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" * @return True if program will exit.","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"ibnu2651":28}},{"path":"src/main/java/ada/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.command;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.Storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.ui.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" * Represents a command to delete a task.","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" int taskNumber;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" * Returns a command that contains the index of the task to delete.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" * @param taskNumber index of the task to delete in the list of tasks","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" public DeleteCommand(int taskNumber) {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" * Deletes the task at the index provided from the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" String t \u003d tasks.delete(this.taskNumber);","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(\"Ok, I\u0027ve removed this task:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(\"Now you have \" + tasks.size() + \" task(s) in the list.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"ibnu2651":43}},{"path":"src/main/java/ada/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.command;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.Storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.ui.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" * Represents a command to exit the program.","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" * Returns a command to exit the program.","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" public ExitCommand() {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" * Exits the program.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" ui.showBye();","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" return true;","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"ibnu2651":36}},{"path":"src/main/java/ada/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.command;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.Storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.ui.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" private String keyword;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" public FindCommand(String keyword) {","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" ArrayList\u003cString\u003e matches \u003d tasks.find(this.keyword);","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" for (String s: matches) {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(s);","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" return false;","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ibnu2651":29}},{"path":"src/main/java/ada/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.command;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.Storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.task.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import ada.ui.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" * Represents a command to print the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" * Returns a command to print the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" public ListCommand() {","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" * Prints the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" for (Task t: tasks.getTasks()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(t.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"ibnu2651":38}},{"path":"src/main/java/ada/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.command;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.Storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.ui.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" * Represents a command to mark a task as done.","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" int taskNumber;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" * Returns a command to mark a task as done.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" * @param taskNumber Index of the task to mark as done","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" public MarkCommand(int taskNumber) {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" * Marks the task at the provided index as done in the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" String t \u003d tasks.mark(this.taskNumber);","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(\"Nice, I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"ibnu2651":42}},{"path":"src/main/java/ada/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.command;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.Storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.ui.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" * Represents a command to mark a task as not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" private int taskNumber;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" * Returns a command to mark a task as not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" * @param taskNumber Index of the task to mark as not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" public UnmarkCommand(int taskNumber) {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" * Marks the task at the provided index as not done in the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" String t \u003d tasks.unmark(this.taskNumber);","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(\"Nice, I\u0027ve marked this ada.task as done:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"ibnu2651":42}},{"path":"src/main/java/ada/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.task;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" * A deadline additionally has a date for the deadline.","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" protected LocalDate by;","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" * Returns a deadline task.","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" * @param description The description of the deadline.","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" * @param by The date of the deadline.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" * @throws AdaException If the date provided is in the wrong format.","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" public Deadline(String description, String by) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" this.by \u003d LocalDate.parse(by);","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Invalid date or date format\");","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" return \"D,\" + super.toFileString() + \",\" + this.by;","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(DateTimeFormatter.ofPattern(\"d MMM yyyy\")) + \")\";","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ibnu2651":47}},{"path":"src/main/java/ada/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.task;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":" * An event additionally has two dates for the start and end of the event.","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":" protected String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" protected String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" * Returns an event task.","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" * @param description The description of the event.","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" * @param from The start of the event.","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" * @param to The end of the event.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" return \"E,\" + super.toFileString() + \",\" + this.from + \",\" + this.to;","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ibnu2651":39}},{"path":"src/main/java/ada/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.task;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":" * Represents a task to be stored in the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" * Returns a task containing its description and is marked by default as not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" * Returns if the task is done or not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" * @return \"X\" if the task is done, \" \" if not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" * Marks the task as done.","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" public void mark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" * Marks the task as not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" public void unmark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" public boolean canFind(String keyword) {","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" return this.description.contains(keyword);","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" * Returns the string format of the task for writing to the save file.","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" * @return the string format of the task.","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":" return (this.isDone ? \"1\" : \"0\") + \",\" + this.description;","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"ibnu2651"},"content":" * Returns the string format of the task for printing to the ui.","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"ibnu2651"},"content":" * @return the string format of the task.","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"ibnu2651"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"ibnu2651"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ibnu2651":65}},{"path":"src/main/java/ada/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.task;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":" * Represents a list of tasks to be stored.","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"public class TaskList {","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" * Returns a list of tasks containing the tasks provided.","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" * @param tasks The tasks to store in the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" * Returns an empty list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" public TaskList() {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" this(new ArrayList\u003cTask\u003e());","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" * Adds a task to the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" * @param task The task to add.","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" public void add(Task task) {","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" * Delets a task from the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" * @param taskNumber The index of the task to delete.","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" * @return The task deleted.","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" * @throws AdaException If the index provided is greater than the list of tasks.","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" public String delete(int taskNumber) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" if (taskNumber \u003e tasks.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"You do not have \" + taskNumber + \" tasks.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" Task t \u003d tasks.remove(taskNumber - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" return t.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" * Marks a task in the list as done.","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"ibnu2651"},"content":" * @param taskNumber The index of the task to mark as done.","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"ibnu2651"},"content":" * @return The task marked as done.","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"ibnu2651"},"content":" * @throws AdaException If the index provided is greater than the list of tasks.","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"ibnu2651"},"content":" public String mark(int taskNumber) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":" if (taskNumber \u003e tasks.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"You do not have \" + taskNumber + \" tasks.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"ibnu2651"},"content":" Task t \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ibnu2651"},"content":" t.mark();","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ibnu2651"},"content":" return t.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"ibnu2651"},"content":" * Marks a task in the list as not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"ibnu2651"},"content":" * @param taskNumber The index of the task to mark as not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"ibnu2651"},"content":" * @return The task marked as not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"ibnu2651"},"content":" * @throws AdaException If the index provided is greater than the list of tasks.","lastModifiedDate":"2024-02-05"},{"lineNumber":75,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"ibnu2651"},"content":" public String unmark(int taskNumber) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":77,"author":{"gitId":"ibnu2651"},"content":" if (taskNumber \u003e tasks.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"You do not have \" + taskNumber + \" tasks.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":79,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"ibnu2651"},"content":" Task t \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"ibnu2651"},"content":" t.unmark();","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"ibnu2651"},"content":" return t.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"ibnu2651"},"content":" public ArrayList\u003cString\u003e find(String keyword) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":87,"author":{"gitId":"ibnu2651"},"content":" ArrayList\u003cString\u003e found \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"ibnu2651"},"content":" for (Task t : this.tasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"ibnu2651"},"content":" if (t.canFind(keyword)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"ibnu2651"},"content":" found.add(t.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"ibnu2651"},"content":" return found;","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"ibnu2651"},"content":" * Returns the list of tasks in an ArrayList.","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"ibnu2651"},"content":" * @return The list of tasks in an ArrayList.","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"ibnu2651"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-02-01"},{"lineNumber":102,"author":{"gitId":"ibnu2651"},"content":" return this.tasks;","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"ibnu2651"},"content":" * Returns the number of tasks in the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"ibnu2651"},"content":" * @return The number of tasks in the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"ibnu2651"},"content":" public int size() {","lastModifiedDate":"2024-02-02"},{"lineNumber":111,"author":{"gitId":"ibnu2651"},"content":" return this.tasks.size();","lastModifiedDate":"2024-02-02"},{"lineNumber":112,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":113,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ibnu2651":113}},{"path":"src/main/java/ada/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.task;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" return \"T,\" + super.toFileString();","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ibnu2651":31}},{"path":"src/main/java/ada/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"public class Ui {","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":" private Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":" public Ui() {","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" public void showWelcome() {","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" System.out.println(","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" \"Hello! I\u0027m Ada\\n\" +","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" \"What can I do for you?\");","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" public String readCommand() {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" public void showResult(String result) {","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" System.out.println(result);","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" public void showBye() {","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" System.out.println(errorMessage);","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ibnu2651":27}},{"path":"src/test/java/ada/task/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.task;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" public void testDeadline(){","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" Deadline d \u003d new Deadline(\"description\", \"2001-10-10\");","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" fail(\"Deadline not created\");","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" public void testDeadlineInvalidDate(){","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" Deadline d \u003d new Deadline(\"description\", \"not a date\");","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" fail();","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" assertEquals(\"ERROR: Invalid date or date format\", e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" Deadline d \u003d new Deadline(\"description\", \"10 Jan 2001\");","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" fail();","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" assertEquals(\"ERROR: Invalid date or date format\", e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" Deadline d \u003d new Deadline(\"description\", \"2001/01/10\");","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" fail();","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" assertEquals(\"ERROR: Invalid date or date format\", e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" public void testToFileString(){","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" Deadline d \u003d new Deadline(\"description\", \"2001-10-10\");","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" assertEquals(\"[D][ ] description (by: 10 Oct 2001)\", d.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" fail();","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ibnu2651":48}},{"path":"src/test/java/ada/task/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.task;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"public class TaskListTest {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" public void testDeleteSuccessfully(){","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" TaskList tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" for (int i \u003d 0; i \u003c 5; i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" tasks.add(new Todo(\"desc\" + i));","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" ArrayList\u003cTask\u003e ls \u003d tasks.getTasks();","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" Task t \u003d ls.get(1);","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" tasks.delete(2);","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" assertEquals(tasks.size(), 4);","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" assertFalse(ls.contains(t));","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" fail(\"Taskl not removed from list successfully\");","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" public void testDeleteFail(){","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" TaskList tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" for (int i \u003d 0; i \u003c 5; i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" tasks.add(new Todo(\"desc\" + i));","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" tasks.delete(7);","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" fail();","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" assertEquals(\"ERROR: You do not have 7 tasks.\", e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ibnu2651":40}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ibnu2651":2}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":"java -classpath ..\\bin ada.Ada \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-05"},{"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":{"ibnu2651":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"# ada.Ada project template","lastModifiedDate":"2024-02-05"},{"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":"ibnu2651"},"content":"3. After that, locate the `src/main/java/ada.Ada.java` file, right-click it, and choose `Run ada.Ada.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-02-05"},{"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":{"ibnu2651":2,"-":22}},{"path":"adam.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"T,1,return","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"ibnu2651":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":"ibnu2651"},"content":" mainClass.set(\"ada.Ada\")","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" archiveBaseName \u003d \"ada\"","lastModifiedDate":"2024-02-05"},{"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":{"ibnu2651":2,"-":40}},{"path":"src/main/java/adam/Adam.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.command.Command;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.ui.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":" * The Duke program implements a chatbot that keeps track of tasks for the user.","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"public class Ada {","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" private Storage storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" private Ui ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" * Returns an instance of the program which loads the tasks from the file found at the provided filepath.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" * @param filePath The filepath of the file to load/saves the tasks from/to.","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" public Ada(String filePath) {","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" } catch (AdaException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" * Runs the program by accepting text input from the user in the command line.","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" public void run() {","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" ui.showWelcome();","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" while (!isExit) {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" } catch (AdaException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" ui.showError(e.getMessage());","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" * Main method to start the program.","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" * @param args Unused.","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" new Ada(\"ada.txt\").run();","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"ibnu2651":54,"-":2}},{"path":"src/main/java/adam/AdamException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":" * Represents an exception specific to Duke.","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"public class AdaException extends Exception {","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":" * Creates an exception with the provided error message.","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" * @param message The error message of the exception.","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" public AdaException(String message) {","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" public String getMessage() {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" return \"ERROR: \" + super.getMessage();","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ibnu2651":23}},{"path":"src/main/java/adam/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.command.AddCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.command.Command;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.command.DeleteCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.command.ExitCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import ada.command.FindCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"import ada.command.ListCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"import ada.command.MarkCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"import ada.command.UnmarkCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" * Parses the user input and creates the commands requested by the user.","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"public class Parser {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" * Returns an instance of a Parser object to parse the user input.","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" public Parser() {","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" * Returns the command object after parsing through the user input.","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" * @param fullCommand The user input.","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" * @return The command object created.","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" * @throws AdaException If the user input is an invalid command or format.","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" public static Command parse(String fullCommand) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" String command \u003d fullCommand.split(\" \")[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" String[] splitCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" String[] splitDesc;","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" switch (command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" case \"list\":","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" case \"todo\":","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" splitCommand \u003d fullCommand.split(\" \",2);","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Description of a todo cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" return new AddCommand(command, splitCommand[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" splitCommand \u003d fullCommand.split(\" \",2);","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Description of a deadline cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" splitDesc \u003d splitCommand[1].split(\" /by \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" if (splitDesc.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Date/time of a deadline cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":" return new AddCommand(command, splitDesc[0], splitDesc[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" case \"event\":","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":" splitCommand \u003d fullCommand.split(\" \",2);","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"ibnu2651"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Description of a event cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"ibnu2651"},"content":" splitDesc \u003d splitCommand[1].split(\" /from \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":" if (splitDesc.length\u003d\u003d1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Start date/time of a event cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"ibnu2651"},"content":" String[] splitFrom \u003d splitDesc[1].split(\" /to \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"ibnu2651"},"content":" if (splitFrom.length\u003d\u003d1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"End date/time of a event cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"ibnu2651"},"content":" return new AddCommand(command, splitDesc[0], splitFrom[0], splitFrom[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"ibnu2651"},"content":" case \"mark\":","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"ibnu2651"},"content":" splitCommand \u003d fullCommand.split(\" \");","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"ibnu2651"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Task number of mark cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":75,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"ibnu2651"},"content":" return new MarkCommand(Integer.parseInt(splitCommand[1]));","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"ibnu2651"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"ibnu2651"},"content":" splitCommand \u003d fullCommand.split(\" \");","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"ibnu2651"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Task number of unmark cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":81,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"ibnu2651"},"content":" return new UnmarkCommand(Integer.parseInt(splitCommand[1]));","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"ibnu2651"},"content":" case \"delete\":","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"ibnu2651"},"content":" splitCommand \u003d fullCommand.split(\" \");","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"ibnu2651"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Task number of delete cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":87,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"ibnu2651"},"content":" return new DeleteCommand(Integer.parseInt(splitCommand[1]));","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"ibnu2651"},"content":" case \"find\":","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"ibnu2651"},"content":" splitCommand \u003d fullCommand.split(\" \");","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"ibnu2651"},"content":" if (splitCommand.length \u003d\u003d 1) {","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Task number of delete cannot be empty.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":93,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"ibnu2651"},"content":" return new FindCommand(splitCommand[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"ibnu2651"},"content":" case \"bye\":","lastModifiedDate":"2024-02-02"},{"lineNumber":96,"author":{"gitId":"ibnu2651"},"content":" return new ExitCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"ibnu2651"},"content":" default:","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"I don\u0027t know what that means.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":99,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ibnu2651":101}},{"path":"src/main/java/adam/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.task.Deadline;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.task.Event;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.task.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import ada.task.Todo;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"import java.io.File;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" * Loads and saves the list of tasks to a file.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":"public class Storage {","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" private String filepath;","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" * Returns an instance of a Storage object that will load/save to the given filepath.","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" * @param filepath The filepath of the file to load/saves the tasks from/to.","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" public Storage(String filepath) {","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" * Returns an instance of a Storage object that will load/save to the default filepath \"./ada.txt\".","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" public Storage() {","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" this(\"./ada.txt\");","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" * Returns the list of tasks loaded from the storage file.","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" * @return The list of tasks loaded in an ArrayList.","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" * @throws AdaException If the file to load from cannot be loaded.","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" public ArrayList\u003cTask\u003e load() throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" File file \u003d new File(this.filepath);","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" Scanner fileScanner \u003d new Scanner(file);","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" while (fileScanner.hasNextLine()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":" String line \u003d fileScanner.nextLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":" String[] task \u003d line.split(\",\" );","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" Task t \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":" switch (task[0]) {","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ibnu2651"},"content":" case \"T\":","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ibnu2651"},"content":" t \u003d new Todo(task[2]);","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ibnu2651"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ibnu2651"},"content":" case \"D\":","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ibnu2651"},"content":" t \u003d new Deadline(task[2], task[3]);","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ibnu2651"},"content":" case \"E\":","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"ibnu2651"},"content":" t \u003d new Event(task[2], task[3], task[4]);","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"ibnu2651"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ibnu2651"},"content":" if (task[1].equals(\"1\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"ibnu2651"},"content":" t.mark();","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ibnu2651"},"content":" tasks.add(t);","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"ibnu2651"},"content":" fileScanner.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"ibnu2651"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Unable to load file\");","lastModifiedDate":"2024-02-05"},{"lineNumber":74,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"ibnu2651"},"content":" return tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"ibnu2651"},"content":" * Saves the current list of tasks to the storage file.","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"ibnu2651"},"content":" * @param tasklist The list of tasks to save.","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"ibnu2651"},"content":" * @throws AdaException If the file cannot be saved to.","lastModifiedDate":"2024-02-05"},{"lineNumber":83,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"ibnu2651"},"content":" public void save(TaskList tasklist) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":85,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"ibnu2651"},"content":" ArrayList\u003cTask\u003e tasks \u003d tasklist.getTasks();","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"ibnu2651"},"content":" File file \u003d new File(this.filepath);","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"ibnu2651"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"ibnu2651"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"ibnu2651"},"content":" System.out.println(\"created file\");","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"ibnu2651"},"content":" PrintWriter writer \u003d new PrintWriter(file);","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"ibnu2651"},"content":" for (Task t: tasks) {","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"ibnu2651"},"content":" writer.println(t.toFileString());","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"ibnu2651"},"content":" writer.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"ibnu2651"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Unable to save file\");","lastModifiedDate":"2024-02-05"},{"lineNumber":99,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ibnu2651":101}},{"path":"src/main/java/adam/command/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.command;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.Storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.task.Deadline;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.task.Event;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import ada.task.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"import ada.task.Todo;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"import ada.ui.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" * Represents a command to add a task.","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" private String command;","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" private String desc;","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" private String[] details;","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" * Returns a command that contains the details of the task to add.","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" * @param details Task type, description, and optional date/times of task.","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" public AddCommand(String... details) {","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" this.details \u003d new String[details.length - 2];","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" for (int i \u003d 0; i \u003c this.details.length; i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" this.details[i] \u003d details[i + 2];","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" this.command \u003d details[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" this.desc \u003d details[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" * Adds the new task created to the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" Task t \u003d null;","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" switch (this.command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" case \"todo\":","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" t \u003d new Todo(this.desc);","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" tasks.add(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" t \u003d new Deadline(this.desc, this.details[0]);","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" tasks.add(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" case \"event\":","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":" t \u003d new Event(this.desc, this.details[0], this.details[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":" tasks.add(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(t.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(\"Now you have \" + tasks.size() + \" task(s) in the list.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"ibnu2651"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"ibnu2651"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"ibnu2651":69}},{"path":"src/main/java/adam/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.command;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.Storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.ui.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" * Represents a command to be executed by the program.","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":"abstract public class Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" * Executes the command.","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" * @param tasks Current TaskList of program.","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" * @param ui Ui used by the program.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" * @param storage Storage used by the program.","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" * @throws AdaException If command cannot be executed.","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" * Returns true if the command executed exits the program.","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" * @return True if program will exit.","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"ibnu2651":28}},{"path":"src/main/java/adam/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.command;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.Storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.ui.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" * Represents a command to delete a task.","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" int taskNumber;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" * Returns a command that contains the index of the task to delete.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" * @param taskNumber index of the task to delete in the list of tasks","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" public DeleteCommand(int taskNumber) {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" * Deletes the task at the index provided from the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" String t \u003d tasks.delete(this.taskNumber);","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(\"Ok, I\u0027ve removed this task:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(\"Now you have \" + tasks.size() + \" task(s) in the list.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"ibnu2651":43}},{"path":"src/main/java/adam/command/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.command;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.Storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.ui.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" * Represents a command to exit the program.","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" * Returns a command to exit the program.","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" public ExitCommand() {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" * Exits the program.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" ui.showBye();","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" return true;","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"ibnu2651":36}},{"path":"src/main/java/adam/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.command;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.Storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.ui.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" private String keyword;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" public FindCommand(String keyword) {","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" ArrayList\u003cString\u003e matches \u003d tasks.find(this.keyword);","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" for (String s: matches) {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(s);","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" return false;","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ibnu2651":29}},{"path":"src/main/java/adam/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.command;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.Storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.task.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import ada.ui.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" * Represents a command to print the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" * Returns a command to print the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" public ListCommand() {","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" * Prints the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" for (Task t: tasks.getTasks()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(t.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"ibnu2651":38}},{"path":"src/main/java/adam/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.command;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.Storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.ui.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" * Represents a command to mark a task as done.","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" int taskNumber;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" * Returns a command to mark a task as done.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" * @param taskNumber Index of the task to mark as done","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" public MarkCommand(int taskNumber) {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" * Marks the task at the provided index as done in the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" String t \u003d tasks.mark(this.taskNumber);","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(\"Nice, I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"ibnu2651":42}},{"path":"src/main/java/adam/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.command;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"import ada.Storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import ada.task.TaskList;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import ada.ui.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" * Represents a command to mark a task as not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" private int taskNumber;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" * Returns a command to mark a task as not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" * @param taskNumber Index of the task to mark as not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" public UnmarkCommand(int taskNumber) {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" this.taskNumber \u003d taskNumber;","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" * Marks the task at the provided index as not done in the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" String t \u003d tasks.unmark(this.taskNumber);","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(\"Nice, I\u0027ve marked this ada.task as done:\");","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" ui.showResult(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"ibnu2651":42}},{"path":"src/main/java/adam/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.task;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" * A deadline additionally has a date for the deadline.","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" protected LocalDate by;","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" * Returns a deadline task.","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" * @param description The description of the deadline.","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" * @param by The date of the deadline.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" * @throws AdaException If the date provided is in the wrong format.","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" public Deadline(String description, String by) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" this.by \u003d LocalDate.parse(by);","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"Invalid date or date format\");","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" return \"D,\" + super.toFileString() + \",\" + this.by;","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.by.format(DateTimeFormatter.ofPattern(\"d MMM yyyy\")) + \")\";","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ibnu2651":47}},{"path":"src/main/java/adam/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.task;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":" * An event additionally has two dates for the start and end of the event.","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":" protected String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" protected String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" * Returns an event task.","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" * @param description The description of the event.","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" * @param from The start of the event.","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" * @param to The end of the event.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" return \"E,\" + super.toFileString() + \",\" + this.from + \",\" + this.to;","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ibnu2651":39}},{"path":"src/main/java/adam/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.task;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":" * Represents a task to be stored in the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" * Returns a task containing its description and is marked by default as not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" * Returns if the task is done or not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" * @return \"X\" if the task is done, \" \" if not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" * Marks the task as done.","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" public void mark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" * Marks the task as not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" public void unmark() {","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" public boolean canFind(String keyword) {","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" return this.description.contains(keyword);","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" * Returns the string format of the task for writing to the save file.","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" * @return the string format of the task.","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":" return (this.isDone ? \"1\" : \"0\") + \",\" + this.description;","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"ibnu2651"},"content":" * Returns the string format of the task for printing to the ui.","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"ibnu2651"},"content":" * @return the string format of the task.","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"ibnu2651"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"ibnu2651"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ibnu2651":65}},{"path":"src/main/java/adam/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.task;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import ada.AdaException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":" * Represents a list of tasks to be stored.","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":"public class TaskList {","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" * Returns a list of tasks containing the tasks provided.","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" * @param tasks The tasks to store in the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" * Returns an empty list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" public TaskList() {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" this(new ArrayList\u003cTask\u003e());","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" * Adds a task to the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" * @param task The task to add.","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" public void add(Task task) {","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" * Delets a task from the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" * @param taskNumber The index of the task to delete.","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" * @return The task deleted.","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" * @throws AdaException If the index provided is greater than the list of tasks.","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" public String delete(int taskNumber) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" if (taskNumber \u003e tasks.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"You do not have \" + taskNumber + \" tasks.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ibnu2651"},"content":" Task t \u003d tasks.remove(taskNumber - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"ibnu2651"},"content":" return t.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"ibnu2651"},"content":" * Marks a task in the list as done.","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"ibnu2651"},"content":" * @param taskNumber The index of the task to mark as done.","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"ibnu2651"},"content":" * @return The task marked as done.","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"ibnu2651"},"content":" * @throws AdaException If the index provided is greater than the list of tasks.","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"ibnu2651"},"content":" public String mark(int taskNumber) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"ibnu2651"},"content":" if (taskNumber \u003e tasks.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"You do not have \" + taskNumber + \" tasks.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"ibnu2651"},"content":" Task t \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ibnu2651"},"content":" t.mark();","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ibnu2651"},"content":" return t.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"ibnu2651"},"content":" * Marks a task in the list as not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"ibnu2651"},"content":" * @param taskNumber The index of the task to mark as not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"ibnu2651"},"content":" * @return The task marked as not done.","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"ibnu2651"},"content":" * @throws AdaException If the index provided is greater than the list of tasks.","lastModifiedDate":"2024-02-05"},{"lineNumber":75,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"ibnu2651"},"content":" public String unmark(int taskNumber) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":77,"author":{"gitId":"ibnu2651"},"content":" if (taskNumber \u003e tasks.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"ibnu2651"},"content":" throw new AdaException(\"You do not have \" + taskNumber + \" tasks.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":79,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"ibnu2651"},"content":" Task t \u003d tasks.get(taskNumber - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"ibnu2651"},"content":" t.unmark();","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"ibnu2651"},"content":" return t.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"ibnu2651"},"content":" public ArrayList\u003cString\u003e find(String keyword) throws AdaException {","lastModifiedDate":"2024-02-05"},{"lineNumber":87,"author":{"gitId":"ibnu2651"},"content":" ArrayList\u003cString\u003e found \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"ibnu2651"},"content":" for (Task t : this.tasks) {","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"ibnu2651"},"content":" if (t.canFind(keyword)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"ibnu2651"},"content":" found.add(t.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"ibnu2651"},"content":" return found;","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"ibnu2651"},"content":" * Returns the list of tasks in an ArrayList.","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"ibnu2651"},"content":" * @return The list of tasks in an ArrayList.","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"ibnu2651"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-02-01"},{"lineNumber":102,"author":{"gitId":"ibnu2651"},"content":" return this.tasks;","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"ibnu2651"},"content":" * Returns the number of tasks in the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"ibnu2651"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"ibnu2651"},"content":" * @return The number of tasks in the list.","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"ibnu2651"},"content":" public int size() {","lastModifiedDate":"2024-02-02"},{"lineNumber":111,"author":{"gitId":"ibnu2651"},"content":" return this.tasks.size();","lastModifiedDate":"2024-02-02"},{"lineNumber":112,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":113,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ibnu2651":113}},{"path":"src/main/java/adam/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.task;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" return \"T,\" + super.toFileString();","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ibnu2651":31}},{"path":"src/main/java/adam/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"public class Ui {","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":" private Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":" public Ui() {","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" public void showWelcome() {","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" System.out.println(","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" \"Hello! I\u0027m Ada\\n\" +","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" \"What can I do for you?\");","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" public String readCommand() {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" public void showResult(String result) {","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" System.out.println(result);","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" public void showBye() {","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" public void showError(String errorMessage) {","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" System.out.println(errorMessage);","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ibnu2651":27}},{"path":"src/test/java/adam/task/DeadlineTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.task;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"public class DeadlineTest {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" public void testDeadline(){","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" Deadline d \u003d new Deadline(\"description\", \"2001-10-10\");","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" fail(\"Deadline not created\");","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" public void testDeadlineInvalidDate(){","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" Deadline d \u003d new Deadline(\"description\", \"not a date\");","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" fail();","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" assertEquals(\"ERROR: Invalid date or date format\", e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":" Deadline d \u003d new Deadline(\"description\", \"10 Jan 2001\");","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" fail();","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" assertEquals(\"ERROR: Invalid date or date format\", e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" Deadline d \u003d new Deadline(\"description\", \"2001/01/10\");","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" fail();","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" assertEquals(\"ERROR: Invalid date or date format\", e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":" public void testToFileString(){","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"ibnu2651"},"content":" Deadline d \u003d new Deadline(\"description\", \"2001-10-10\");","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"ibnu2651"},"content":" assertEquals(\"[D][ ] description (by: 10 Oct 2001)\", d.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"ibnu2651"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"ibnu2651"},"content":" fail();","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ibnu2651":48}},{"path":"src/test/java/adam/task/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"package ada.task;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"ibnu2651"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"ibnu2651"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"ibnu2651"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"ibnu2651"},"content":"public class TaskListTest {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"ibnu2651"},"content":" public void testDeleteSuccessfully(){","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"ibnu2651"},"content":" TaskList tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"ibnu2651"},"content":" for (int i \u003d 0; i \u003c 5; i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"ibnu2651"},"content":" tasks.add(new Todo(\"desc\" + i));","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"ibnu2651"},"content":" ArrayList\u003cTask\u003e ls \u003d tasks.getTasks();","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":" Task t \u003d ls.get(1);","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"ibnu2651"},"content":" tasks.delete(2);","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"ibnu2651"},"content":" assertEquals(tasks.size(), 4);","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"ibnu2651"},"content":" assertFalse(ls.contains(t));","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"ibnu2651"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"ibnu2651"},"content":" fail(\"Taskl not removed from list successfully\");","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"ibnu2651"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"ibnu2651"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"ibnu2651"},"content":" public void testDeleteFail(){","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"ibnu2651"},"content":" TaskList tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"ibnu2651"},"content":" for (int i \u003d 0; i \u003c 5; i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"ibnu2651"},"content":" tasks.add(new Todo(\"desc\" + i));","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"ibnu2651"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"ibnu2651"},"content":" tasks.delete(7);","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"ibnu2651"},"content":" fail();","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"ibnu2651"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"ibnu2651"},"content":" assertEquals(\"ERROR: You do not have 7 tasks.\", e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"ibnu2651"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"ibnu2651"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"ibnu2651":40}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ibnu2651"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"ibnu2651"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ibnu2651":2}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"ibnu2651"},"content":"java -classpath ..\\bin ada.Ada \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-05"},{"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":{"ibnu2651":1,"-":20}}] diff --git a/ibnu2651_ip_master/commits.json b/ibnu2651_ip_master/commits.json index b277ec06..c299f61b 100644 --- a/ibnu2651_ip_master/commits.json +++ b/ibnu2651_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ibnu2651":[{"date":"2024-01-22","commitResults":[{"hash":"3d8ecb05f6156253050da77130b84972f737727f","isMergeCommit":false,"messageTitle":"edit Duke.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"5eda7fec57f3068705321501ea3a8e36e94f0618","isMergeCommit":false,"messageTitle":"Add echo to Duke","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}}]},{"date":"2024-01-23","commitResults":[{"hash":"a9f0a43e7ca483fa45ce90dae9703528f01ca3f6","isMergeCommit":false,"messageTitle":"Add list to Duke","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":3}}},{"hash":"2726627ab823e020ddf86914728c1c82667ec2cf","isMergeCommit":false,"messageTitle":"Add mark tasks to Duke","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":3}}},{"hash":"e0bf798737ee1b12930e7f5f678398736cc1d871","isMergeCommit":false,"messageTitle":"Add todo, deadline, and event to Duke","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":8}}},{"hash":"1a622fc36262664ea908d2986d7c18fafb7f5436","isMergeCommit":false,"messageTitle":"Add auto text ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}},{"hash":"4368193b038a4ca69198177a3e9d40b51745c853","isMergeCommit":false,"messageTitle":"Add error handling to Duke","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":42}}},{"hash":"7c72526d4b70c04357560afdfa97ab3799cff043","isMergeCommit":false,"messageTitle":"Add delete and more error handling to Duke","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":17}}}]},{"date":"2024-01-31","commitResults":[{"hash":"999850d7f304acdf4ee526dd7f207a2971a50cef","isMergeCommit":false,"messageTitle":"Add saving to Duke","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":77,"deletions":0}}},{"hash":"226f1e6ef1d1d9ed77527493119b78409aefd839","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"b6cb1055399e8254cb88a0eafc7dd7e86b19c701","isMergeCommit":false,"messageTitle":"Add date and time to deadlines in Duke","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":3},"java":{"insertions":6,"deletions":3}}},{"hash":"4682fa1cf9ee2f83390a523b47781a03473425b4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"28a79ddc105ee3401d0ade1ae884d9819bdbf2cc","isMergeCommit":false,"messageTitle":"Add parser, storage, tasklist, and ui to Duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":123,"deletions":0}}}]},{"date":"2024-02-01","commitResults":[{"hash":"bc6d7017521bae515cbe35ec12835db750a28662","isMergeCommit":false,"messageTitle":"Add more to parser, storage, tasklist, and ui","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":7}}}]},{"date":"2024-02-02","commitResults":[{"hash":"c5c3ed84fadce07796d0d0e207aa90d2a44d64e2","isMergeCommit":false,"messageTitle":"Add command classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":151,"deletions":12}}},{"hash":"a52a8570789670c8be9291e021d1f1835235b514","isMergeCommit":false,"messageTitle":"Add more OOP to Duke","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":116,"deletions":197}}},{"hash":"fb7275b3019c019bd29f43b14489c1831e2e07da","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"9992a3442edf37659835e91e794278634b034db3","isMergeCommit":false,"messageTitle":"Separate duke into packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":185,"deletions":114},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"1e953fe3a0440c8b6d4e817943776d8b28a09bd6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"3b8f15b8bbaa920ed5f552f2821a9c089805ef98","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-03","commitResults":[{"hash":"07b1127c8fd748e0ff1b4dc282a0e64c1848d0c2","isMergeCommit":false,"messageTitle":"Add gradle to duke","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":1}}},{"hash":"ea13bafc6dbb0c6f4b3fdbbd471e3b5981f9a97d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"c9cb50b639fae0913b325952412303a781d818d8","isMergeCommit":false,"messageTitle":"Add JUnit testing for deadline and tasklist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":0}}},{"hash":"ebc40b9aac595c9bd7a0fbf74b741dac5fb4ee35","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"2fba246911e61797db6ff6295d682350b44fed80","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":307,"deletions":2}}},{"hash":"d690c8a34e064696943b1bfb812fb623a7a0f14c","isMergeCommit":false,"messageTitle":"Tweak code to comply with coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":6}}},{"hash":"a7899fc083fe0be160e9fc623fc8852a715e693e","isMergeCommit":false,"messageTitle":"Add find to duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":4}}},{"hash":"f5ecb5a105de6519be6a5c13ed6a9cec658fbe3e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"b6e98ac50ec7351d9015008048768a1d2a7b53c5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"2042e9ac13ceea2c38774128491e00c36661fbf7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/command/AddCommand.java\n#\tsrc/main/java/duke/command/DeleteCommand.java\n#\tsrc/main/java/duke/command/UnmarkCommand.java\n#\tsrc/main/java/duke/task/Deadline.java\n#\tsrc/main/java/duke/task/Event.java\n#\tsrc/main/java/duke/task/Task.java\n#\tsrc/main/java/duke/task/TaskList.java\n#\tsrc/main/java/duke/task/Todo.java\n","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-05","commitResults":[{"hash":"7882583dde25a4927afd1092796632795c913b45","isMergeCommit":false,"messageTitle":"Rename duke to ada","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":0,"deletions":0}}},{"hash":"16ef574f9a3f51ba39daf71dd8466ce797455d0a","isMergeCommit":false,"messageTitle":"Refactor files to use ada","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"txt":{"insertions":0,"deletions":1},"java":{"insertions":131,"deletions":131},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"ibnu2651":{"java":1016,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":2,"txt":3}},"authorContributionVariance":{"ibnu2651":46051.992},"authorDisplayNameMap":{"ibnu2651":"CS2103T-T13-3 IBNU..ADAM"}} +{"authorDailyContributionsMap":{"ibnu2651":[{"date":"2024-01-22","commitResults":[{"hash":"3d8ecb05f6156253050da77130b84972f737727f","isMergeCommit":false,"messageTitle":"edit Duke.java","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"5eda7fec57f3068705321501ea3a8e36e94f0618","isMergeCommit":false,"messageTitle":"Add echo to Duke","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}}]},{"date":"2024-01-23","commitResults":[{"hash":"a9f0a43e7ca483fa45ce90dae9703528f01ca3f6","isMergeCommit":false,"messageTitle":"Add list to Duke","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":3}}},{"hash":"2726627ab823e020ddf86914728c1c82667ec2cf","isMergeCommit":false,"messageTitle":"Add mark tasks to Duke","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":45,"deletions":3}}},{"hash":"e0bf798737ee1b12930e7f5f678398736cc1d871","isMergeCommit":false,"messageTitle":"Add todo, deadline, and event to Duke","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":8}}},{"hash":"1a622fc36262664ea908d2986d7c18fafb7f5436","isMergeCommit":false,"messageTitle":"Add auto text ui testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0}}},{"hash":"4368193b038a4ca69198177a3e9d40b51745c853","isMergeCommit":false,"messageTitle":"Add error handling to Duke","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":42}}},{"hash":"7c72526d4b70c04357560afdfa97ab3799cff043","isMergeCommit":false,"messageTitle":"Add delete and more error handling to Duke","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":17}}}]},{"date":"2024-01-31","commitResults":[{"hash":"999850d7f304acdf4ee526dd7f207a2971a50cef","isMergeCommit":false,"messageTitle":"Add saving to Duke","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":77,"deletions":0}}},{"hash":"226f1e6ef1d1d9ed77527493119b78409aefd839","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"b6cb1055399e8254cb88a0eafc7dd7e86b19c701","isMergeCommit":false,"messageTitle":"Add date and time to deadlines in Duke","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":3},"java":{"insertions":6,"deletions":3}}},{"hash":"4682fa1cf9ee2f83390a523b47781a03473425b4","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"28a79ddc105ee3401d0ade1ae884d9819bdbf2cc","isMergeCommit":false,"messageTitle":"Add parser, storage, tasklist, and ui to Duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":123,"deletions":0}}}]},{"date":"2024-02-01","commitResults":[{"hash":"bc6d7017521bae515cbe35ec12835db750a28662","isMergeCommit":false,"messageTitle":"Add more to parser, storage, tasklist, and ui","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":7}}}]},{"date":"2024-02-02","commitResults":[{"hash":"c5c3ed84fadce07796d0d0e207aa90d2a44d64e2","isMergeCommit":false,"messageTitle":"Add command classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":151,"deletions":12}}},{"hash":"a52a8570789670c8be9291e021d1f1835235b514","isMergeCommit":false,"messageTitle":"Add more OOP to Duke","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":116,"deletions":197}}},{"hash":"fb7275b3019c019bd29f43b14489c1831e2e07da","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"9992a3442edf37659835e91e794278634b034db3","isMergeCommit":false,"messageTitle":"Separate duke into packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":185,"deletions":114},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"1e953fe3a0440c8b6d4e817943776d8b28a09bd6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"3b8f15b8bbaa920ed5f552f2821a9c089805ef98","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-03","commitResults":[{"hash":"07b1127c8fd748e0ff1b4dc282a0e64c1848d0c2","isMergeCommit":false,"messageTitle":"Add gradle to duke","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"txt":{"insertions":0,"deletions":1}}},{"hash":"ea13bafc6dbb0c6f4b3fdbbd471e3b5981f9a97d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Gradle\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"c9cb50b639fae0913b325952412303a781d818d8","isMergeCommit":false,"messageTitle":"Add JUnit testing for deadline and tasklist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":0}}},{"hash":"ebc40b9aac595c9bd7a0fbf74b741dac5fb4ee35","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"2fba246911e61797db6ff6295d682350b44fed80","isMergeCommit":false,"messageTitle":"Add javadocs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":307,"deletions":2}}},{"hash":"d690c8a34e064696943b1bfb812fb623a7a0f14c","isMergeCommit":false,"messageTitle":"Tweak code to comply with coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":6}}},{"hash":"a7899fc083fe0be160e9fc623fc8852a715e693e","isMergeCommit":false,"messageTitle":"Add find to duke","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":52,"deletions":4}}},{"hash":"f5ecb5a105de6519be6a5c13ed6a9cec658fbe3e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"b6e98ac50ec7351d9015008048768a1d2a7b53c5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"2042e9ac13ceea2c38774128491e00c36661fbf7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/command/AddCommand.java\n#\tsrc/main/java/duke/command/DeleteCommand.java\n#\tsrc/main/java/duke/command/UnmarkCommand.java\n#\tsrc/main/java/duke/task/Deadline.java\n#\tsrc/main/java/duke/task/Event.java\n#\tsrc/main/java/duke/task/Task.java\n#\tsrc/main/java/duke/task/TaskList.java\n#\tsrc/main/java/duke/task/Todo.java\n","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-05","commitResults":[{"hash":"7882583dde25a4927afd1092796632795c913b45","isMergeCommit":false,"messageTitle":"Rename duke to ada","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":0,"deletions":0}}},{"hash":"16ef574f9a3f51ba39daf71dd8466ce797455d0a","isMergeCommit":false,"messageTitle":"Refactor files to use ada","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"txt":{"insertions":0,"deletions":1},"java":{"insertions":131,"deletions":131},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}}]},{"date":"2024-02-06","commitResults":[{"hash":"c31b2c0305dd1eb27179b5c2c5a4733808e598c6","isMergeCommit":false,"messageTitle":"Rename Ada to Adam and fix some text","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":0,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"ibnu2651":{"java":1016,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":2,"txt":3}},"authorContributionVariance":{"ibnu2651":44347.535},"authorDisplayNameMap":{"ibnu2651":"CS2103T-T13-3 IBNU..ADAM"}} diff --git a/itstrueitstrueitsrealitsreal_ip_master/authorship.json b/itstrueitstrueitsrealitsreal_ip_master/authorship.json index 3eda2803..90c049c6 100644 --- a/itstrueitstrueitsrealitsreal_ip_master/authorship.json +++ b/itstrueitstrueitsrealitsreal_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":"itstrueitstrueitsrealitsreal"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-28"},{"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":"itstrueitstrueitsrealitsreal"},"content":"checkstyle {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.xerial\u0027, name: \u0027sqlite-jdbc\u0027, version: \u00273.45.0.0\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation \u0027ch.qos.logback:logback-classic:1.4.12\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027io.github.cdimascio\u0027, name: \u0027dotenv-java\u0027, version: \u00273.0.0\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" mainClass.set(\"Launcher\")","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" archiveBaseName \u003d \"naruto.jar\"","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"run {","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"checkstyle {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"-":38,"itstrueitstrueitsrealitsreal":27}},{"path":"src/main/java/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.layout.Priority;","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.paint.Color;","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * containing text from the speaker.","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static final Color BG_COLOR_USER \u003d Color.DODGERBLUE;","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static final Color BG_COLOR_NARUTO \u003d Color.GOLD;","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private Label dialog;","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DialogBox(String text, Image img, Color backgroundColor) {","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" // Set the HBox to stretch and fill its content horizontally","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" HBox.setHgrow(this, Priority.ALWAYS);","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" // Create a VBox to contain the DialogBox","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" VBox vbox \u003d new VBox(this);","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" vbox.setFillWidth(true); // Set the VBox to stretch and fill its content vertically","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" applyStyling(backgroundColor);","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private void applyStyling(Color backgroundColor) {","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" dialog.setStyle(\"-fx-background-color: \" + toHex(backgroundColor) + \"; \"","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"-fx-background-radius: 10; \"","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"-fx-padding: 10px; \"","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"-fx-effect: dropshadow(gaussian, rgba(0, 0, 0, 0.4), 10, 0, 0, 2); \"","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"-fx-background-insets: 0;\");","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private String toHex(Color color) {","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return String.format(\"#%02X%02X%02X\",","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" (int) (color.getRed() * 255),","lastModifiedDate":"2024-02-04"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" (int) (color.getGreen() * 255),","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" (int) (color.getBlue() * 255));","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private void flip() {","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-04"},{"lineNumber":76,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-04"},{"lineNumber":77,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-04"},{"lineNumber":78,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-04"},{"lineNumber":81,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new DialogBox(text, img, BG_COLOR_USER);","lastModifiedDate":"2024-02-04"},{"lineNumber":82,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static DialogBox getNarutoDialog(String text, Image img) {","lastModifiedDate":"2024-02-04"},{"lineNumber":85,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" var db \u003d new DialogBox(text, img, BG_COLOR_NARUTO);","lastModifiedDate":"2024-02-04"},{"lineNumber":86,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" db.flip();","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return db;","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":89}},{"path":"src/main/java/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Launcher {","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":10}},{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import naruto.Naruto;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The Main class represents the entry point of the Naruto chatbot.","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * It contains the main method that starts the execution of the program.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final Naruto naruto \u003d new Naruto();","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setNaruto(naruto);","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" stage.show();","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":30}},{"path":"src/main/java/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.Objects;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.animation.PauseTransition;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.util.Duration;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import naruto.Naruto;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private Naruto naruto;","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final Image userImage \u003d new Image(Objects.requireNonNull(this.getClass().getResourceAsStream(","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \"/images/user.png\")));","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final Image narutoImage \u003d new Image(Objects.requireNonNull(this.getClass().getResourceAsStream(","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \"/images/naruto.png\")));","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Initializes the main window.","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Binds the vertical scroll position of the scroll pane to the height of the dialog container.","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Adds a dialog box with a message from Naruto to the dialog container.","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public void initialize() {","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" dialogContainer.getChildren().add(DialogBox.getNarutoDialog(\"Hello! I\u0027m Naruto, and I\u0027m \"","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"training to become a ninja!\\nBelieve it!\", narutoImage));","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public void setNaruto(Naruto n) {","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" naruto \u003d n;","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Naruto\u0027s reply and","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * then appends them to","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String response \u003d naruto.getResponse(input);","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DialogBox.getNarutoDialog(response, narutoImage)","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" );","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" userInput.clear();","lastModifiedDate":"2024-02-04"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (input.trim().equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" PauseTransition pause \u003d new PauseTransition(Duration.seconds(1)); // Adjust the delay as needed","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" pause.setOnFinished(event -\u003e System.exit(0));","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" pause.play();","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":72}},{"path":"src/main/java/action/Action.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The Action interface represents an action that can be executed.","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Implementing classes should provide an implementation for the execute method.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public interface Action {","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the action.","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return A string representing the result of the execution.","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException if an I/O error occurs during the execution of the action.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() throws IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":17}},{"path":"src/main/java/action/Add.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents an action to add a task to a task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Add implements Action {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private Task task;","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs an Add action with the specified task and task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param taskList The task list to add the task to.","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Add(Task task, TaskList taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the Add action by adding the task to the task list and printing the updated task count.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return A string representing the result of the execution.","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() throws IOException {","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.taskList.add(this.task);","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" int size \u003d this.taskList.getSize();","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String plural \u003d size \u003d\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" sb.append(\"Got it! Task added:\\n \").append(task).append(\"\\nNow you have \").append(size)","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .append(\" outstanding \").append(plural).append(\".\");","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return sb.toString();","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":41}},{"path":"src/main/java/action/Delete.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents an action to delete a task from the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Delete implements Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final int idx;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a Delete action with the specified task list and index.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param taskList the task list to delete the task from","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param idx the index of the task to be deleted","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Delete(TaskList taskList, int idx) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.idx \u003d idx;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the Delete action by adding the task to the task list and printing the updated task count.","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return A string representing the result of the execution.","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() throws IOException {","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Task task \u003d this.taskList.delete(this.idx);","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" int size \u003d this.taskList.getSize();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String plural \u003d size \u003d\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new StringBuilder()","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .append(\"Got it! Task deleted:\\n\")","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .append(\" \").append(task)","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .append(\"\\n\").append(\"Now you have \")","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .append(size).append(\" \").append(plural)","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .append(\" remaining.\").toString();","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":43}},{"path":"src/main/java/action/Find.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.PrintUtil;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents an action to find tasks based on a given search string.","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Find implements Action {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final String[] s;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a Find object with the specified search string.","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param s The search strings used to find tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Find(String... s) {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.s \u003d s;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the find action by searching for tasks that match the search strings","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * and printing the results.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return A string representing the result of the execution.","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() {","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" List\u003cTask\u003e list \u003d TaskList.find(s);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return PrintUtil.printList(list);","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":35}},{"path":"src/main/java/action/Goodbye.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents an action that prints a goodbye message and exits the program.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Goodbye implements Action {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a Goodbye object.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Goodbye() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the action by printing a goodbye message and exiting the program.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return A string representing the result of the execution.","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() {","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return \"Bye bye! ヾ( ˃ᴗ˂ )◞ • *✰\";","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":22}},{"path":"src/main/java/action/Greet.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents an action to greet the user.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Implements the Action interface.","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Greet implements Action {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a Greet object.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Greet() {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the greet action by printing a greeting message.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return A string representing the result of the execution.","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() {","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return \"Hello! I\u0027m Naruto, and I\u0027m training to become a ninja!\"","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"\\nBelieve it!\";","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":24}},{"path":"src/main/java/action/HandleError.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import exception.NarutoException;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * This class represents an action to handle an error by printing the error message.","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class HandleError implements Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private NarutoException err;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new HandleError object with the specified error.","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param err the error to be handled","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public HandleError(NarutoException err) {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.err \u003d err;","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the action by printing the error message.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return A string representing the result of the execution.","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() {","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return err.getMessage();","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":28}},{"path":"src/main/java/action/List.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents an action to list all tasks in a task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class List implements Action {","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a List action with the specified task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param taskList the task list to be listed","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public List(TaskList taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the List action by printing all tasks in the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return A string representing the result of the execution.","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() {","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return \"Here are the tasks in your list:\\n\" + taskList.toString();","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":28}},{"path":"src/main/java/action/Mark.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents an action to mark a task as completed.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Implements the Action interface.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Mark implements Action {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final int i;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a Mark object with the specified task list and index.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param taskList the task list to mark the task in","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param i the index of the task to mark","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Mark(TaskList taskList, int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.i \u003d i;","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the action by marking the task as completed and printing a message.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the constructed output message","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException if there is an error in printing the message","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() throws IOException {","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" output.append(\"Great job! You marked that task off your list! Believe it! ᕕ( ᐛ )ᕗ\\n\")","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .append(\"\\n\").append(this.taskList.mark(i));","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return output.toString();","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":38}},{"path":"src/main/java/action/Unmark.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents an action to unmark a task in the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Unmark implements Action {","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private int i;","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs an Unmark object with the specified task list and task index.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param taskList the task list","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param i the index of the task to unmark","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Unmark(TaskList taskList, int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.i \u003d i;","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the unmark action by constructing and returning a message and unmarking the task in the task list.","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the constructed message","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException if there is an error executing the action","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() throws IOException {","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" StringBuilder message \u003d new StringBuilder();","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" message.append(\"You know, sometimes things don\u0027t go as planned, but that\u0027s okay! \")","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .append(\"\\nWe\u0027ll get there, one task at a time! ᕙ(⇀‸↼‶)ᕗ\\n\")","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .append(this.taskList.unmark(i));","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return message.toString();","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":38}},{"path":"src/main/java/exception/EmptyCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Exception thrown when an empty command is encountered.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class EmptyCommandException extends NarutoException {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new EmptyCommandException with the specified error message.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the error message","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" EmptyCommandException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the type of error associated with this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public NarutoException.ErrorType getErrorType() {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return ErrorType.EMPTY_COMMAND;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":26}},{"path":"src/main/java/exception/EmptyDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Exception thrown when a deadline task is created without a specified deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class EmptyDeadlineException extends NarutoException {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new EmptyDeadlineException with the specified error message.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the error message","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" EmptyDeadlineException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the type of error associated with this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public NarutoException.ErrorType getErrorType() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return ErrorType.EMPTY_DEADLINE;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":25}},{"path":"src/main/java/exception/EmptyEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Exception thrown when an event is empty.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class EmptyEventException extends NarutoException {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new EmptyEventException with the specified detail message.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the detail message","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" EmptyEventException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the error type of this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public NarutoException.ErrorType getErrorType() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return ErrorType.EMPTY_EVENT;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":25}},{"path":"src/main/java/exception/FileCorruptedException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Exception thrown when a file is found to be corrupted.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class FileCorruptedException extends NarutoException {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new FileCorruptedException with the specified detail message.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the detail message","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public FileCorruptedException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the error type associated with this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public ErrorType getErrorType() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return ErrorType.FILE_CORRUPTED;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":25}},{"path":"src/main/java/exception/InvalidActionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Exception thrown when an invalid action is performed.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class InvalidActionException extends NarutoException {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new InvalidActionException with the specified detail message.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the detail message","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" InvalidActionException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the error type associated with this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public ErrorType getErrorType() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return ErrorType.INVALID_ACTION;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":25}},{"path":"src/main/java/exception/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Exception thrown when an invalid command is encountered.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class InvalidCommandException extends NarutoException {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs an InvalidCommandException with the specified error message.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the error message","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" InvalidCommandException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the error type associated with this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public NarutoException.ErrorType getErrorType() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return ErrorType.INVALID_COMMAND;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":25}},{"path":"src/main/java/exception/InvalidDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Exception thrown when a deadline is invalid.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class InvalidDeadlineException extends NarutoException {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs an InvalidDeadlineException with the specified detail message.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the detail message","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" InvalidDeadlineException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the error type associated with this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public NarutoException.ErrorType getErrorType() {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return ErrorType.INVALID_DEADLINE;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":27}},{"path":"src/main/java/exception/InvalidEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Exception thrown when an invalid event is encountered.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class InvalidEventException extends NarutoException {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new InvalidEventException with the specified detail message.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the detail message","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" InvalidEventException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the error type associated with this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public NarutoException.ErrorType getErrorType() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return ErrorType.INVALID_EVENT;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":25}},{"path":"src/main/java/exception/InvalidIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Exception thrown when an invalid index is encountered.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class InvalidIndexException extends NarutoException {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new InvalidIndexException with the specified detail message.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the detail message","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" InvalidIndexException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the error type associated with this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public NarutoException.ErrorType getErrorType() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return ErrorType.INVALID_INDEX;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":25}},{"path":"src/main/java/exception/NarutoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * NarutoException is an abstract class that extends the Exception class.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * It represents a custom exception in the Naruto application.","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public abstract class NarutoException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Enum representing the different types of errors that can occur in the Naruto application.","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public enum ErrorType {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" EMPTY_COMMAND,","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" EMPTY_DEADLINE,","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" EMPTY_EVENT,","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" INVALID_DEADLINE,","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" INVALID_EVENT,","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" INVALID_COMMAND,","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" INVALID_INDEX,","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" FILE_CORRUPTED,","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" INVALID_ACTION","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a NarutoException with the specified error message.","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the error message","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public NarutoException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the type of error associated with this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public abstract ErrorType getErrorType();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates a NarutoException for an empty command.","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the NarutoException for an empty command","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static NarutoException createEmptyCommandException() {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new EmptyCommandException(\"Looks like you forgot to enter anything after your \"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"command! \\nEnter an input after the command next time.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates a NarutoException for an empty deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the NarutoException for an empty deadline","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static NarutoException createEmptyDeadlineException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new EmptyDeadlineException(\"Looks like your deadline is missing a description! \"","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"\\nEnter an input after the \u0027deadline\u0027 command to add a deadline.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates a NarutoException for an empty event.","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the NarutoException for an empty event","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static NarutoException createEmptyEventException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new EmptyEventException(\"Looks like your event is missing a description! \\nEnter \"","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"an input after the \u0027event\u0027 command to add an event.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates a NarutoException for an invalid deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the NarutoException for an invalid deadline","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static NarutoException createInvalidDeadlineException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new InvalidDeadlineException(\"Looks like you forgot to enter a deadline! \\nEnter a\"","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \" deadline after the command \u0027/by\u0027 to indicate when your deadline is.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates a NarutoException for an invalid event.","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the NarutoException for an invalid event","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static NarutoException createInvalidEventException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new InvalidEventException(\"Looks like your event doesn\u0027t have a valid start or \"","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"end time! \\nMake sure your input uses the \u0027/from\u0027 and \u0027/to\u0027 commands to indicate\"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"\\nthe start and end times of your event.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates a NarutoException for an invalid command.","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the NarutoException for an invalid command","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static NarutoException createInvalidCommandException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new InvalidCommandException(\"Sorry, I didn\u0027t catch that. ヾ(_ _。)\");","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates a NarutoException for an invalid index.","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the NarutoException for an invalid index","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static NarutoException createInvalidIndexException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new InvalidIndexException(\"Sorry, I couldn\u0027t find the task you indicated... 。・゚\"","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"゚・(\u003eд\u003c)・゚゚・。\");","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates a NarutoException for a corrupted file.","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the NarutoException for a corrupted file","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static NarutoException createFileCorruptedException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new FileCorruptedException(\"Oh no! Something seems to have happened to the \"","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"tasklist... I\u0027ll reset the tasks! °՞(ᗒᗣᗕ)՞°\");","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates a NarutoException for an invalid action.","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the NarutoException for an invalid action","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static NarutoException createInvalidActionException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new InvalidActionException(\"I couldn\u0027t seem to understand that... Try again!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":128}},{"path":"src/main/java/naruto/Naruto.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package naruto;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.LinkedList;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.Objects;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.Action;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.HandleError;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import exception.NarutoException;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.PrintUtil;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The Naruto class represents the main class of the Naruto application.","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * It manages the list of actions to be performed and handles exceptions.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Naruto {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static LinkedList\u003cAction\u003e actions \u003d new LinkedList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static TaskList taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" static {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" PrintUtil.print(NarutoException.createFileCorruptedException().getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a Naruto object.","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Naruto() {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Parses user input and adds the corresponding action to the list of actions.","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static void listen(String input) {","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" actions.add(Ui.parseInput(taskList, input));","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the first action in the list of actions.","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * If an IOException occurs, it handles the exception by adding a HandleError action to the list.","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static String act() {","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return Objects.requireNonNull(actions.pollFirst()).execute();","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" handleException(NarutoException.createInvalidActionException());","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return null;","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Handles the given NarutoException by adding a HandleError action to the list of actions.","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param err the NarutoException to handle.","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static void handleException(NarutoException err) {","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" actions.addLast(new HandleError(err));","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Generates Naruto\u0027s response to user input.","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String getResponse(String input) {","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Naruto.listen(input);","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return Naruto.act();","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":73}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.CsvUtil;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.DateTimeUtil;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents a task with a deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a Deadline object with the given description and deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description the description of the deadline","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param by the deadline date and time","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a Deadline object with the given marking status, description, and deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param isMarked the marking status of the deadline","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description the description of the deadline","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param by the deadline date and time","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Deadline(boolean isMarked, String description, LocalDateTime by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(isMarked, description);","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Formats the Deadline object into a CsvUtil object for CSV file storage.","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the CsvUtil object representing the Deadline","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public CsvUtil format() {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new CsvUtil(\"D\", String.valueOf(super.isMarked), super.description,","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.format(by));","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns a string representation of the Deadline object.","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return a string representation of the Deadline","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(),","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.format(by));","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Checks if the Deadline object is equal to another object.","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param o the object to compare with","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return true if the objects are equal, false otherwise","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return true;","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Deadline d \u003d (Deadline) o;","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return isMarked \u003d\u003d d.isMarked \u0026\u0026 description.equals(d.description) \u0026\u0026 d.by.equals(by);","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":75}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.CsvUtil;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.DateTimeUtil;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents an event task that has a start and end time.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Inherits from the Task class.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs an Event object with the specified description, start time, and end time.","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description the description of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param from the start time of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param to the end time of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs an Event object with the specified marked status, description, start time, and end time.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param isMarked the marked status of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description the description of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param from the start time of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param to the end time of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Event(boolean isMarked, String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(isMarked, description);","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Formats the event task into a CsvUtil object for exporting to CSV file.","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the CsvUtil object representing the formatted event task","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public CsvUtil format() {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new CsvUtil(\"E\", String.valueOf(super.isMarked), super.description,","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.format(from),","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.format(to));","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns a string representation of the event task.","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return a string representation of the event task","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(),","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.format(from),","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.format(to));","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Checks if the event task is equal to another object.","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param o the object to compare with","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return true if the event task is equal to the other object, false otherwise","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return true;","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Event e \u003d (Event) o;","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return isMarked \u003d\u003d e.isMarked \u0026\u0026 description.equals(e.description)","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u0026\u0026 e.from.equals(from) \u0026\u0026 e.to.equals(to);","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":84}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.CsvUtil;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents a task.","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" protected final String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" protected boolean isMarked;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a task with the given description.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.isMarked \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a task with the given marked status and description.","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param isMarked The marked status of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Task(boolean isMarked, String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.isMarked \u003d isMarked;","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Marks the task as completed.","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return The updated task object.","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Task mark() {","lastModifiedDate":"2024-01-21"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.isMarked \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return this;","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Marks the task as incomplete.","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return The updated task object.","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Task unmark() {","lastModifiedDate":"2024-01-21"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.isMarked \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return this;","lastModifiedDate":"2024-01-21"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Formats the task into a CSV format.","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return The formatted task as a CsvUtil object.","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public abstract CsvUtil format();","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return The string representation of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String check \u003d isMarked ? \"X\" : \" \";","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return String.format(\"[%s] %s\", check, description);","lastModifiedDate":"2024-01-21"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public boolean contains(String s) {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return this.description.contains(s);","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":73}},{"path":"src/main/java/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.CsvUtil;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents a todo task.","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new ToDo object with the given description.","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description the description of the ToDo","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new ToDo object with the given marked status and description.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param isMarked the marked status of the ToDo","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description the description of the ToDo","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public ToDo(boolean isMarked, String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(isMarked, description);","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Formats the ToDo object into a CsvUtil object.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the CsvUtil object representing the formatted ToDo","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public CsvUtil format() {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new CsvUtil(\"T\", String.valueOf(super.isMarked), super.description);","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns a string representation of the ToDo object.","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return a string representation of the ToDo object","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Checks if the ToDo object is equal to another object.","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param o the object to compare with","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return true if the ToDo object is equal to the other object, false otherwise","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return true;","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" ToDo toDo \u003d (ToDo) o;","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return isMarked \u003d\u003d toDo.isMarked \u0026\u0026 description.equals(toDo.description);","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":65}},{"path":"src/main/java/util/CsvUtil.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package util;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Deadline;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.ToDo;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The CsvUtil class represents a utility class for working with CSV data.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * It provides methods for constructing CsvUtil objects from CSV strings,","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * converting CsvUtil objects to Task objects, and converting CsvUtil objects","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * to CSV strings.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class CsvUtil {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final String event;","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final String marked;","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final String description;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final String by;","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final String from;","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final String to;","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a CsvUtil object with the specified event, marked, and description.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The \u0027by\u0027, \u0027from\u0027, and \u0027to\u0027 fields are set to null.","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param event the event type","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param marked the marked status","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description the description of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public CsvUtil(String event, String marked, String description) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.event \u003d event;","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.marked \u003d marked;","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.by \u003d null;","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.from \u003d null;","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.to \u003d null;","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a CsvUtil object with the specified event, marked, description, and by.","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The \u0027from\u0027 and \u0027to\u0027 fields are set to null.","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param event the event type","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param marked the marked status","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description the description of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param by the deadline of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public CsvUtil(String event, String marked, String description, String by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.event \u003d event;","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.marked \u003d marked;","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.from \u003d null;","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.to \u003d null;","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a CsvUtil object with the specified event, marked, description, from, and to.","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The \u0027by\u0027 field is set to null.","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param event the event type","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param marked the marked status","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description the description of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param from the start date of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param to the end date of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public CsvUtil(String event, String marked, String description, String from, String to) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.event \u003d event;","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.marked \u003d marked;","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.by \u003d null;","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a CsvUtil object by parsing the given CSV string.","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param csv the CSV string to parse","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public CsvUtil(String csv) {","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String[] vals \u003d csv.split(\",\");","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.event \u003d vals[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.marked \u003d vals[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.description \u003d vals[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.by \u003d vals[3].equals(\"null\") || vals[3].isEmpty() ? null : vals[3];","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.from \u003d vals[4].equals(\"null\") || vals[4].isEmpty() ? null : vals[4];","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.to \u003d vals[5].equals(\"null\") || vals[5].isEmpty() ? null : vals[5];","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Converts the CsvUtil object to a Task object.","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the Task object representing the CsvUtil object","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IllegalArgumentException if the \u0027marked\u0027 value is invalid or the date format is invalid","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Task toTask() {","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" boolean isMarked;","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" switch (marked) {","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"true\":","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" isMarked \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"false\":","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" isMarked \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw new IllegalArgumentException(\"Invalid \u0027marked\u0027 value: \" + marked);","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (!DateTimeUtil.isValid(by) || !DateTimeUtil.isValid(from) || !DateTimeUtil.isValid(to)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw new IllegalArgumentException(\"Invalid date format.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" switch (event) {","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"T\":","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new ToDo(isMarked, description);","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"D\":","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Deadline(isMarked, description, DateTimeUtil.parse(by));","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"E\":","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Event(isMarked, description, DateTimeUtil.parse(from),","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.format(to));","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw new IllegalArgumentException(\"Invalid \u0027event\u0027 value: \" + event);","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Converts the CsvUtil object to a CSV string.","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the CSV string representation of the CsvUtil object","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String toCsv() {","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return String.format(\"%s,%s,%s,%s,%s,%s\\n\", event, marked, description,","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" by, from, to);","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":137}},{"path":"src/main/java/util/DateTimeUtil.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package util;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The DateTimeUtil class provides utility methods for formatting and parsing date and time.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class DateTimeUtil {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static final DateTimeFormatter input \u003d DateTimeFormatter.ofPattern(\"d/MM/yyyy HHmm\");","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static final DateTimeFormatter output \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Formats the given string representation of a date and time into a LocalDateTime object.","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param s the string representation of a date and time","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the LocalDateTime object representing the formatted date and time","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static LocalDateTime format(String s) {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return LocalDateTime.parse(s, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Formats the given LocalDateTime object into a string representation of a date and time.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param d the LocalDateTime object to be formatted","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the string representation of the formatted date and time","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static String format(LocalDateTime d) {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return d.format(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Parses the given string representation of a date and time into a LocalDateTime object.","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param s the string representation of a date and time","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the LocalDateTime object representing the parsed date and time","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static LocalDateTime parse(String s) {","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return LocalDateTime.parse(s, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Checks if the given string representation of a date is valid.","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param dateStr the string representation of a date","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return true if the date is valid, false otherwise","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static boolean isValid(String dateStr) {","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (dateStr \u003d\u003d null || dateStr.isEmpty() || dateStr.equals(\"null\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" LocalDate.parse(dateStr, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return true;","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (DateTimeParseException ignored) {","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return false;","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":63}},{"path":"src/main/java/util/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package util;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import exception.NarutoException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The Parser class is responsible for parsing user input and extracting relevant information.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private Parser() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" // Private constructor to prevent instantiation of the class","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Parses the input string into an integer index.","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param input The input string to be parsed.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param taskList The TaskList object containing the tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return The parsed integer index.","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws NarutoException If the input string is not a valid index or is out of range.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" static int parseIdx(String input, TaskList taskList) throws NarutoException {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" int idx;","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" idx \u003d Integer.parseInt(input.trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw NarutoException.createInvalidIndexException();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (idx \u003e taskList.getSize() || idx \u003c\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw NarutoException.createInvalidIndexException();","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return idx;","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Parses the input string into a description.","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param input The input string to be parsed.","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return The parsed description.","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws NarutoException If the input string is empty.","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" static String parseDescription(String input) throws NarutoException {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String description \u003d input.trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw NarutoException.createEmptyCommandException();","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return description;","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Parses the input string into a deadline description and date/time.","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param input The input string to be parsed.","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return An array containing the parsed description and deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws NarutoException If the input string is empty, does not contain \"/by\", or has an invalid deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" static String[] parseDeadline(String input) throws NarutoException {","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (input.isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw NarutoException.createEmptyDeadlineException();","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (!input.contains(\"/by\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw NarutoException.createInvalidDeadlineException();","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String [] tokens \u003d input.split(\"/by\");","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String description \u003d tokens[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String by \u003d tokens[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (!DateTimeUtil.isValid(by)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw NarutoException.createInvalidDeadlineException();","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new String[] { description, by };","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Parses the input string into an event description, start date/time, and end date/time.","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param input The input string to be parsed.","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return An array containing the parsed description, start date/time, and end date/time.","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws NarutoException If the input string is empty, does not contain \"/from\" and \"/to\", or","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * has an invalid event.","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" static String[] parseEvent(String input) throws NarutoException {","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (input.isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw NarutoException.createEmptyEventException();","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (!(input.contains(\"/from\") \u0026\u0026 input.contains(\"/to\"))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw NarutoException.createInvalidEventException();","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String[] tokens \u003d input.split(\"/from\");","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String description \u003d tokens[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" tokens \u003d tokens[1].split(\"/to\");","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String from \u003d tokens[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String to \u003d tokens[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (!DateTimeUtil.isValid(from) || !DateTimeUtil.isValid(to)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw NarutoException.createInvalidDeadlineException();","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new String[] { description, from , to };","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":102}},{"path":"src/main/java/util/PrintUtil.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package util;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The PrintUtil class provides utility methods for printing formatted output.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class PrintUtil {","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Private constructor to prevent instantiation of the PrintUtil class.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private PrintUtil() {","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Prints a spacer line to separate sections of output.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static void printSpacer() {","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" System.out.println();","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" indent();","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \" - - - -\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Prints an indentation to format the output.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static void indent() {","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" System.out.print(\" \");","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Prints a string with proper indentation and spacer lines.","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param s the string to be printed","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static void print(String s) {","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" System.out.println();","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" printSpacer();","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" indent();","lastModifiedDate":"2024-01-21"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" System.out.println(s.replaceAll(\"\\n\", \"\\n \"));","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" printSpacer();","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Prints a list of tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param tasks The list of tasks to be printed.","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static String printList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (!tasks.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" sb.append(\"I found these tasks!\\n \");","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" sb.append(i + 1).append(\".\").append(tasks.get(i).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (i !\u003d tasks.size() - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" sb.append(\"\\n \");","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" sb.append(\"You don\u0027t have any tasks which match that description... (◞‸◟;)\");","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return sb.toString();","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":68}},{"path":"src/main/java/util/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package util;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import exception.NarutoException;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The Storage class is responsible for reading and writing tasks to a file.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static final String FILE_PATH \u003d \"src/logs/tasks.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a Storage object with the given list of tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param tasks The list of tasks to be stored.","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Storage(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" initStorage(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Reads from the file and initializes the list of tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param tasks The list of tasks to be initialized.","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static void initStorage(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Path filePath \u003d Paths.get(FILE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" // Create the parent directories if they do not exist","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Files.createDirectories(filePath.getParent());","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" // Create the file if it doesn\u0027t exist","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Files.createFile(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try (Scanner sc \u003d new Scanner(filePath)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" tasks.add(new CsvUtil(sc.nextLine()).toTask());","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" PrintUtil.print(NarutoException.createFileCorruptedException().getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" resetStorage();","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Resets the storage by deleting the file and creating a new one.","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static void resetStorage() throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Path filePath \u003d Paths.get(FILE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" // Delete the file if it exists","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Files.deleteIfExists(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" // Create the parent directories if they do not exist","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Files.createDirectories(filePath.getParent());","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" // Create the file","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Files.createFile(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Writes the tasks to the file.","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param tasks The list of tasks to be written.","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" protected void writeToFile(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" FileWriter fw \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" fw.write(t.format().toCsv());","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":90}},{"path":"src/main/java/util/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package util;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents a list of tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class TaskList {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a TaskList object.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException if there is an error initializing the storage.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public TaskList() throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.storage \u003d new Storage(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param t the task to be added.","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException if there is an error writing to the storage.","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public void add(Task t) throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.tasks.add(t);","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" storage.writeToFile(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param i the index of the task to be deleted.","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the deleted task.","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException if there is an error writing to the storage.","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Task delete(int i) throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Task t \u003d this.tasks.get(i - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.tasks.remove(i - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" storage.writeToFile(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return t;","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Gets the size of the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the size of the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public int getSize() {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Marks a task as done.","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param i the index of the task to be marked.","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the marked task.","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException if there is an error writing to the storage.","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Task mark(int i) throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Task t \u003d this.tasks.get(i - 1).mark();","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" storage.writeToFile(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return t;","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Marks a task as undone.","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param i the index of the task to be unmarked.","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the unmarked task.","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException if there is an error writing to the storage.","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Task unmark(int i) throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Task t \u003d this.tasks.get(i - 1).unmark();","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" storage.writeToFile(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return t;","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Checks if the task list is empty.","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return true if the task list is empty, false otherwise.","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return tasks.isEmpty();","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Finds tasks in the task list that contain all the specified strings.","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param s the strings to search for in the tasks","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return a list of tasks that contain all the specified strings","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static List\u003cTask\u003e find(String... s) {","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return tasks.stream()","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .filter(t -\u003e Arrays.stream(s).allMatch(t::contains))","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns a string representation of the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return a string representation of the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" sb.append(i + 1).append(\".\").append(this.tasks.get(i).toString());","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (i !\u003d this.tasks.size() - 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" sb.append(\"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return sb.toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":125}},{"path":"src/main/java/util/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package util;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.Action;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.Add;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.Delete;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.Find;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.Goodbye;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.HandleError;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.List;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.Mark;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.Unmark;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import exception.NarutoException;","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.ToDo;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The Ui class handles user interface related operations.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static final Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private Ui() {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Parses the user input and returns the corresponding Action object.","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param taskList The TaskList object containing the list of tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return The Action object based on the user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static Action parseInput(TaskList taskList, String s) {","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String[] tokens \u003d s.split(\" \", 2);","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String input \u003d tokens[0];","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String restOfLine \u003d tokens.length \u003d\u003d 1 ? null : tokens[1];","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" int idx;","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" assert restOfLine !\u003d null;","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" switch (input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"bye\":","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Goodbye();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"list\":","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new List(taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"mark\":","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" idx \u003d Parser.parseIdx(restOfLine, taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (NarutoException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new HandleError(e);","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Mark(taskList, idx);","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" idx \u003d Parser.parseIdx(restOfLine, taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (NarutoException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new HandleError(e);","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Unmark(taskList, idx);","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"todo\":","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" description \u003d Parser.parseDescription(restOfLine);","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (NarutoException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new HandleError(e);","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Add(new ToDo(description), taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" tokens \u003d Parser.parseDeadline(restOfLine);","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (NarutoException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new HandleError(e);","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Add(new Deadline(tokens[0], DateTimeUtil.format(tokens[1])), taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"event\":","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" tokens \u003d Parser.parseEvent(restOfLine);","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (NarutoException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new HandleError(e);","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Add(new Event(tokens[0], DateTimeUtil.format(tokens[1]),","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.format(tokens[2])), taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"delete\":","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" idx \u003d Parser.parseIdx(restOfLine, taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (NarutoException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new HandleError(e);","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Delete(taskList, idx);","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"find\":","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" tokens \u003d Parser.parseDescription(restOfLine).split(\" \");","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (NarutoException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new HandleError(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Find(tokens);","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new HandleError(NarutoException.createInvalidCommandException());","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":101}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.shape.Circle?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"comic\" wrapText\u003d\"true\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cfont\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cFont name\u003d\"Comic Sans MS Bold\" size\u003d\"13.0\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/font\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cclip\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cCircle radius\u003d\"49.5\" centerX\u003d\"49.5\" centerY\u003d\"49.5\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/clip\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003ceffect\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cjavafx.scene.effect.DropShadow color\u003d\"#000000\" spread\u003d\"0.5\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/effect\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":29}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"MainWindow\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cfont\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cFont name\u003d\"Comic Sans MS Bold\" size\u003d\"13.0\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/font\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/TextField\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cfont\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cFont name\u003d\"Comic Sans MS Bold\" size\u003d\"14.0\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/font\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/Button\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\"","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\"","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" style\u003d\"-fx-background-color: #C0C0C0;-fx-border-color: #FFFFF0;\"/\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":30}},{"path":"src/test/java/util/CsvUtilTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package util;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.ToDo;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class CsvUtilTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public void testToTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" CsvUtil c \u003d new CsvUtil(\"T,false,borrow book,null,null,null\");","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" ToDo t \u003d new ToDo(false, \"borrow book\");","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" assertEquals(c.toTask(), t);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" c \u003d new CsvUtil(\"D,false,return book,2/12/2019 1800,null,null\");","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Deadline d \u003d new Deadline(false, \"return book\",","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.parse(\"2/12/2019 1800\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" assertEquals(c.toTask(), d);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" c \u003d new CsvUtil(\"E,false,CS2103 Tutorial,null,2/02/2024 0800,2/02/2024 0900\");","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Event e \u003d new Event(false, \"CS2103 Tutorial\",","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.parse(\"2/02/2024 0800\"), DateTimeUtil.parse(\"2/02/2024 0900\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" assertEquals(c.toTask(), e);","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":28}},{"path":"src/test/java/util/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package util;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import exception.NarutoException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public void testParseDescription() {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" assertEquals(Parser.parseDescription(\" Homework\"), \"Homework\");","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (NarutoException n) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" System.out.println(n.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" assertEquals(false, true);","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":21}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"todo borrow book","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"deadline return book /by 2/12/2019 1800","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"event CS2103 Tutorial /from 2/02/2024 0800 /to 2/02/2024 0900","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"mark 1","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"delete 3","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"mark 2","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"delete 2","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"delete 1","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"bye","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":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":"itstrueitstrueitsrealitsreal"},"content":"java -classpath ..\\bin Main \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":{"-":20,"itstrueitstrueitsrealitsreal":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":"itstrueitstrueitsrealitsreal"},"content":"java -classpath ../bin Main \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":{"-":37,"itstrueitstrueitsrealitsreal":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":"itstrueitstrueitsrealitsreal"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-28"},{"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":"itstrueitstrueitsrealitsreal"},"content":"checkstyle {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.xerial\u0027, name: \u0027sqlite-jdbc\u0027, version: \u00273.45.0.0\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation \u0027ch.qos.logback:logback-classic:1.4.12\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027io.github.cdimascio\u0027, name: \u0027dotenv-java\u0027, version: \u00273.0.0\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" mainClass.set(\"Launcher\")","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" archiveBaseName \u003d \"naruto.jar\"","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"run {","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"checkstyle {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"-":38,"itstrueitstrueitsrealitsreal":27}},{"path":"src/main/java/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.layout.Priority;","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.paint.Color;","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * containing text from the speaker.","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static final Color BG_COLOR_USER \u003d Color.DODGERBLUE;","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static final Color BG_COLOR_NARUTO \u003d Color.GOLD;","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private Label dialog;","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DialogBox(String text, Image img, Color backgroundColor) {","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" // Set the HBox to stretch and fill its content horizontally","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" HBox.setHgrow(this, Priority.ALWAYS);","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" // Create a VBox to contain the DialogBox","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" VBox vbox \u003d new VBox(this);","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" vbox.setFillWidth(true); // Set the VBox to stretch and fill its content vertically","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" applyStyling(backgroundColor);","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private void applyStyling(Color backgroundColor) {","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" dialog.setStyle(\"-fx-background-color: \" + toHex(backgroundColor) + \"; \"","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"-fx-background-radius: 10; \"","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"-fx-padding: 10px; \"","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"-fx-effect: dropshadow(gaussian, rgba(0, 0, 0, 0.4), 10, 0, 0, 2); \"","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"-fx-background-insets: 0;\");","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private String toHex(Color color) {","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return String.format(\"#%02X%02X%02X\",","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" (int) (color.getRed() * 255),","lastModifiedDate":"2024-02-04"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" (int) (color.getGreen() * 255),","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" (int) (color.getBlue() * 255));","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private void flip() {","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-04"},{"lineNumber":76,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-04"},{"lineNumber":77,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-04"},{"lineNumber":78,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-04"},{"lineNumber":81,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new DialogBox(text, img, BG_COLOR_USER);","lastModifiedDate":"2024-02-04"},{"lineNumber":82,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static DialogBox getNarutoDialog(String text, Image img) {","lastModifiedDate":"2024-02-04"},{"lineNumber":85,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" var db \u003d new DialogBox(text, img, BG_COLOR_NARUTO);","lastModifiedDate":"2024-02-04"},{"lineNumber":86,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" db.flip();","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return db;","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":89}},{"path":"src/main/java/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Launcher {","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":10}},{"path":"src/main/java/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import naruto.Naruto;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The Main class represents the entry point of the Naruto chatbot.","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * It contains the main method that starts the execution of the program.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final Naruto naruto \u003d new Naruto();","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setNaruto(naruto);","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" stage.show();","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":30}},{"path":"src/main/java/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.Objects;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.animation.PauseTransition;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import javafx.util.Duration;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import naruto.Naruto;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private Naruto naruto;","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final Image userImage \u003d new Image(Objects.requireNonNull(this.getClass().getResourceAsStream(","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \"/images/user.png\")));","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final Image narutoImage \u003d new Image(Objects.requireNonNull(this.getClass().getResourceAsStream(","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \"/images/naruto.png\")));","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Initializes the main window.","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Binds the vertical scroll position of the scroll pane to the height of the dialog container.","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Adds a dialog box with a message from Naruto to the dialog container.","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public void initialize() {","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" dialogContainer.getChildren().add(DialogBox.getNarutoDialog(\"Hello! I\u0027m Naruto, and I\u0027m \"","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"training to become a ninja!\\nBelieve it!\", narutoImage));","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" scrollPane.setStyle(\"-fx-background: #C0C0C0;\");","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public void setNaruto(Naruto n) {","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" naruto \u003d n;","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Naruto\u0027s reply and","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * then appends them to","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String response \u003d naruto.getResponse(input);","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DialogBox.getNarutoDialog(response, narutoImage)","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" );","lastModifiedDate":"2024-02-04"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" userInput.clear();","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (input.trim().equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" PauseTransition pause \u003d new PauseTransition(Duration.seconds(1)); // Adjust the delay as needed","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" pause.setOnFinished(event -\u003e System.exit(0));","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" pause.play();","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":73}},{"path":"src/main/java/action/Action.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The Action interface represents an action that can be executed.","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Implementing classes should provide an implementation for the execute method.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public interface Action {","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the action.","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return A string representing the result of the execution.","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException if an I/O error occurs during the execution of the action.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() throws IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":17}},{"path":"src/main/java/action/Add.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents an action to add a task to a task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Add implements Action {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private Task task;","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs an Add action with the specified task and task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param taskList The task list to add the task to.","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Add(Task task, TaskList taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.task \u003d task;","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the Add action by adding the task to the task list and printing the updated task count.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return A string representing the result of the execution.","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() throws IOException {","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.taskList.add(this.task);","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" int size \u003d this.taskList.getSize();","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String plural \u003d size \u003d\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-22"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" sb.append(\"Got it! Task added:\\n \").append(task).append(\"\\nNow you have \").append(size)","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .append(\" outstanding \").append(plural).append(\".\");","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return sb.toString();","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":41}},{"path":"src/main/java/action/Delete.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents an action to delete a task from the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Delete implements Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final int idx;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a Delete action with the specified task list and index.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param taskList the task list to delete the task from","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param idx the index of the task to be deleted","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Delete(TaskList taskList, int idx) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.idx \u003d idx;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the Delete action by adding the task to the task list and printing the updated task count.","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return A string representing the result of the execution.","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() throws IOException {","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Task task \u003d this.taskList.delete(this.idx);","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" int size \u003d this.taskList.getSize();","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String plural \u003d size \u003d\u003d 1 ? \"task\" : \"tasks\";","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new StringBuilder()","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .append(\"Got it! Task deleted:\\n\")","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .append(\" \").append(task)","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .append(\"\\n\").append(\"Now you have \")","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .append(size).append(\" \").append(plural)","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .append(\" remaining.\").toString();","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":43}},{"path":"src/main/java/action/Find.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Task;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.PrintUtil;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.TaskList;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents an action to find tasks based on a given search string.","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Find implements Action {","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final String[] s;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a Find object with the specified search string.","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param s The search strings used to find tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Find(String... s) {","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.s \u003d s;","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the find action by searching for tasks that match the search strings","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * and printing the results.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return A string representing the result of the execution.","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() {","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" List\u003cTask\u003e list \u003d TaskList.find(s);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return PrintUtil.printList(list);","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":35}},{"path":"src/main/java/action/Goodbye.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents an action that prints a goodbye message and exits the program.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Goodbye implements Action {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a Goodbye object.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Goodbye() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the action by printing a goodbye message and exiting the program.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return A string representing the result of the execution.","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() {","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return \"Bye bye! ヾ( ˃ᴗ˂ )◞ • *✰\";","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":22}},{"path":"src/main/java/action/Greet.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents an action to greet the user.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Implements the Action interface.","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Greet implements Action {","lastModifiedDate":"2024-01-21"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a Greet object.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Greet() {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the greet action by printing a greeting message.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return A string representing the result of the execution.","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() {","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return \"Hello! I\u0027m Naruto, and I\u0027m training to become a ninja!\"","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"\\nBelieve it!\";","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":24}},{"path":"src/main/java/action/HandleError.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import exception.NarutoException;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * This class represents an action to handle an error by printing the error message.","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class HandleError implements Action {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private NarutoException err;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new HandleError object with the specified error.","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param err the error to be handled","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public HandleError(NarutoException err) {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.err \u003d err;","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the action by printing the error message.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return A string representing the result of the execution.","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() {","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return err.getMessage();","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":28}},{"path":"src/main/java/action/List.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents an action to list all tasks in a task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class List implements Action {","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a List action with the specified task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param taskList the task list to be listed","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public List(TaskList taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the List action by printing all tasks in the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return A string representing the result of the execution.","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() {","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return \"Here are the tasks in your list:\\n\" + taskList.toString();","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":28}},{"path":"src/main/java/action/Mark.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents an action to mark a task as completed.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Implements the Action interface.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Mark implements Action {","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final int i;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a Mark object with the specified task list and index.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param taskList the task list to mark the task in","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param i the index of the task to mark","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Mark(TaskList taskList, int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.i \u003d i;","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the action by marking the task as completed and printing a message.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the constructed output message","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException if there is an error in printing the message","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() throws IOException {","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" output.append(\"Great job! You marked that task off your list! Believe it! ᕕ( ᐛ )ᕗ\\n\")","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .append(\"\\n\").append(this.taskList.mark(i));","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return output.toString();","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":38}},{"path":"src/main/java/action/Unmark.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package action;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents an action to unmark a task in the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Unmark implements Action {","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private int i;","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs an Unmark object with the specified task list and task index.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param taskList the task list","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param i the index of the task to unmark","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Unmark(TaskList taskList, int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.i \u003d i;","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the unmark action by constructing and returning a message and unmarking the task in the task list.","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the constructed message","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException if there is an error executing the action","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String execute() throws IOException {","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" StringBuilder message \u003d new StringBuilder();","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" message.append(\"You know, sometimes things don\u0027t go as planned, but that\u0027s okay! \")","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .append(\"\\nWe\u0027ll get there, one task at a time! ᕙ(⇀‸↼‶)ᕗ\\n\")","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .append(this.taskList.unmark(i));","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return message.toString();","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":38}},{"path":"src/main/java/exception/EmptyCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Exception thrown when an empty command is encountered.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class EmptyCommandException extends NarutoException {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new EmptyCommandException with the specified error message.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the error message","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" EmptyCommandException(String message) {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the type of error associated with this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public NarutoException.ErrorType getErrorType() {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return ErrorType.EMPTY_COMMAND;","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":26}},{"path":"src/main/java/exception/EmptyDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Exception thrown when a deadline task is created without a specified deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class EmptyDeadlineException extends NarutoException {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new EmptyDeadlineException with the specified error message.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the error message","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" EmptyDeadlineException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the type of error associated with this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public NarutoException.ErrorType getErrorType() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return ErrorType.EMPTY_DEADLINE;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":25}},{"path":"src/main/java/exception/EmptyEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Exception thrown when an event is empty.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class EmptyEventException extends NarutoException {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new EmptyEventException with the specified detail message.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the detail message","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" EmptyEventException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the error type of this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public NarutoException.ErrorType getErrorType() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return ErrorType.EMPTY_EVENT;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":25}},{"path":"src/main/java/exception/FileCorruptedException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Exception thrown when a file is found to be corrupted.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class FileCorruptedException extends NarutoException {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new FileCorruptedException with the specified detail message.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the detail message","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public FileCorruptedException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the error type associated with this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public ErrorType getErrorType() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return ErrorType.FILE_CORRUPTED;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":25}},{"path":"src/main/java/exception/InvalidActionException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Exception thrown when an invalid action is performed.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class InvalidActionException extends NarutoException {","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new InvalidActionException with the specified detail message.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the detail message","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" InvalidActionException(String message) {","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the error type associated with this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public ErrorType getErrorType() {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return ErrorType.INVALID_ACTION;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":25}},{"path":"src/main/java/exception/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Exception thrown when an invalid command is encountered.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class InvalidCommandException extends NarutoException {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs an InvalidCommandException with the specified error message.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the error message","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" InvalidCommandException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the error type associated with this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public NarutoException.ErrorType getErrorType() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return ErrorType.INVALID_COMMAND;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":25}},{"path":"src/main/java/exception/InvalidDeadlineException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Exception thrown when a deadline is invalid.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class InvalidDeadlineException extends NarutoException {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs an InvalidDeadlineException with the specified detail message.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the detail message","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" InvalidDeadlineException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the error type associated with this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public NarutoException.ErrorType getErrorType() {","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return ErrorType.INVALID_DEADLINE;","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":27}},{"path":"src/main/java/exception/InvalidEventException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Exception thrown when an invalid event is encountered.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class InvalidEventException extends NarutoException {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new InvalidEventException with the specified detail message.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the detail message","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" InvalidEventException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the error type associated with this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public NarutoException.ErrorType getErrorType() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return ErrorType.INVALID_EVENT;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":25}},{"path":"src/main/java/exception/InvalidIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Exception thrown when an invalid index is encountered.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class InvalidIndexException extends NarutoException {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new InvalidIndexException with the specified detail message.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the detail message","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" InvalidIndexException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the error type associated with this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public NarutoException.ErrorType getErrorType() {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return ErrorType.INVALID_INDEX;","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":25}},{"path":"src/main/java/exception/NarutoException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package exception;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * NarutoException is an abstract class that extends the Exception class.","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * It represents a custom exception in the Naruto application.","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public abstract class NarutoException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Enum representing the different types of errors that can occur in the Naruto application.","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public enum ErrorType {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" EMPTY_COMMAND,","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" EMPTY_DEADLINE,","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" EMPTY_EVENT,","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" INVALID_DEADLINE,","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" INVALID_EVENT,","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" INVALID_COMMAND,","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" INVALID_INDEX,","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" FILE_CORRUPTED,","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" INVALID_ACTION","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a NarutoException with the specified error message.","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param message the error message","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public NarutoException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns the type of error associated with this exception.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the error type","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public abstract ErrorType getErrorType();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates a NarutoException for an empty command.","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the NarutoException for an empty command","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static NarutoException createEmptyCommandException() {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new EmptyCommandException(\"Looks like you forgot to enter anything after your \"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"command! \\nEnter an input after the command next time.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates a NarutoException for an empty deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the NarutoException for an empty deadline","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static NarutoException createEmptyDeadlineException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new EmptyDeadlineException(\"Looks like your deadline is missing a description! \"","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"\\nEnter an input after the \u0027deadline\u0027 command to add a deadline.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates a NarutoException for an empty event.","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the NarutoException for an empty event","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static NarutoException createEmptyEventException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new EmptyEventException(\"Looks like your event is missing a description! \\nEnter \"","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"an input after the \u0027event\u0027 command to add an event.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates a NarutoException for an invalid deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the NarutoException for an invalid deadline","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static NarutoException createInvalidDeadlineException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new InvalidDeadlineException(\"Looks like you forgot to enter a deadline! \\nEnter a\"","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \" deadline after the command \u0027/by\u0027 to indicate when your deadline is.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":79,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates a NarutoException for an invalid event.","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the NarutoException for an invalid event","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static NarutoException createInvalidEventException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":86,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new InvalidEventException(\"Looks like your event doesn\u0027t have a valid start or \"","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"end time! \\nMake sure your input uses the \u0027/from\u0027 and \u0027/to\u0027 commands to indicate\"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"\\nthe start and end times of your event.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":90,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates a NarutoException for an invalid command.","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the NarutoException for an invalid command","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static NarutoException createInvalidCommandException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new InvalidCommandException(\"Sorry, I didn\u0027t catch that. ヾ(_ _。)\");","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":99,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":100,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates a NarutoException for an invalid index.","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the NarutoException for an invalid index","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static NarutoException createInvalidIndexException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":106,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new InvalidIndexException(\"Sorry, I couldn\u0027t find the task you indicated... 。・゚\"","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"゚・(\u003eд\u003c)・゚゚・。\");","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":109,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates a NarutoException for a corrupted file.","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the NarutoException for a corrupted file","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static NarutoException createFileCorruptedException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new FileCorruptedException(\"Oh no! Something seems to have happened to the \"","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \"tasklist... I\u0027ll reset the tasks! °՞(ᗒᗣᗕ)՞°\");","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Creates a NarutoException for an invalid action.","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the NarutoException for an invalid action","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static NarutoException createInvalidActionException() {","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new InvalidActionException(\"I couldn\u0027t seem to understand that... Try again!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":128}},{"path":"src/main/java/naruto/Naruto.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package naruto;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.LinkedList;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.Objects;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.Action;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.HandleError;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import exception.NarutoException;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.PrintUtil;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.TaskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.Ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The Naruto class represents the main class of the Naruto application.","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * It manages the list of actions to be performed and handles exceptions.","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Naruto {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static LinkedList\u003cAction\u003e actions \u003d new LinkedList\u003c\u003e();","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static TaskList taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" static {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" PrintUtil.print(NarutoException.createFileCorruptedException().getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a Naruto object.","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Naruto() {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Parses user input and adds the corresponding action to the list of actions.","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static void listen(String input) {","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" actions.add(Ui.parseInput(taskList, input));","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Executes the first action in the list of actions.","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * If an IOException occurs, it handles the exception by adding a HandleError action to the list.","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static String act() {","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return Objects.requireNonNull(actions.pollFirst()).execute();","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" handleException(NarutoException.createInvalidActionException());","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return null;","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Handles the given NarutoException by adding a HandleError action to the list of actions.","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param err the NarutoException to handle.","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static void handleException(NarutoException err) {","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" actions.addLast(new HandleError(err));","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Generates Naruto\u0027s response to user input.","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String getResponse(String input) {","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Naruto.listen(input);","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return Naruto.act();","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":73}},{"path":"src/main/java/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.CsvUtil;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.DateTimeUtil;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents a task with a deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" protected LocalDateTime by;","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a Deadline object with the given description and deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description the description of the deadline","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param by the deadline date and time","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a Deadline object with the given marking status, description, and deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param isMarked the marking status of the deadline","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description the description of the deadline","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param by the deadline date and time","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Deadline(boolean isMarked, String description, LocalDateTime by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(isMarked, description);","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Formats the Deadline object into a CsvUtil object for CSV file storage.","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the CsvUtil object representing the Deadline","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public CsvUtil format() {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new CsvUtil(\"D\", String.valueOf(super.isMarked), super.description,","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.format(by));","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns a string representation of the Deadline object.","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return a string representation of the Deadline","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(),","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.format(by));","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Checks if the Deadline object is equal to another object.","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param o the object to compare with","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return true if the objects are equal, false otherwise","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return true;","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Deadline d \u003d (Deadline) o;","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return isMarked \u003d\u003d d.isMarked \u0026\u0026 description.equals(d.description) \u0026\u0026 d.by.equals(by);","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":75}},{"path":"src/main/java/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.CsvUtil;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.DateTimeUtil;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents an event task that has a start and end time.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Inherits from the Task class.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" protected LocalDateTime from;","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" protected LocalDateTime to;","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs an Event object with the specified description, start time, and end time.","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description the description of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param from the start time of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param to the end time of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs an Event object with the specified marked status, description, start time, and end time.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param isMarked the marked status of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description the description of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param from the start time of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param to the end time of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Event(boolean isMarked, String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(isMarked, description);","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Formats the event task into a CsvUtil object for exporting to CSV file.","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the CsvUtil object representing the formatted event task","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public CsvUtil format() {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new CsvUtil(\"E\", String.valueOf(super.isMarked), super.description,","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.format(from),","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.format(to));","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns a string representation of the event task.","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return a string representation of the event task","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(),","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.format(from),","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.format(to));","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Checks if the event task is equal to another object.","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param o the object to compare with","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return true if the event task is equal to the other object, false otherwise","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return true;","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Event e \u003d (Event) o;","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return isMarked \u003d\u003d e.isMarked \u0026\u0026 description.equals(e.description)","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u0026\u0026 e.from.equals(from) \u0026\u0026 e.to.equals(to);","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":84}},{"path":"src/main/java/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.CsvUtil;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents a task.","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" protected final String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" protected boolean isMarked;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a task with the given description.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Task(String description) {","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.isMarked \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a task with the given marked status and description.","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param isMarked The marked status of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Task(boolean isMarked, String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.isMarked \u003d isMarked;","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Marks the task as completed.","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return The updated task object.","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Task mark() {","lastModifiedDate":"2024-01-21"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.isMarked \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return this;","lastModifiedDate":"2024-01-21"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Marks the task as incomplete.","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return The updated task object.","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Task unmark() {","lastModifiedDate":"2024-01-21"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.isMarked \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return this;","lastModifiedDate":"2024-01-21"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Formats the task into a CSV format.","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return The formatted task as a CsvUtil object.","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public abstract CsvUtil format();","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return The string representation of the task.","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String check \u003d isMarked ? \"X\" : \" \";","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return String.format(\"[%s] %s\", check, description);","lastModifiedDate":"2024-01-21"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public boolean contains(String s) {","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return this.description.contains(s);","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":73}},{"path":"src/main/java/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package task;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import util.CsvUtil;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents a todo task.","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new ToDo object with the given description.","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description the description of the ToDo","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(description);","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a new ToDo object with the given marked status and description.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param isMarked the marked status of the ToDo","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description the description of the ToDo","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public ToDo(boolean isMarked, String description) {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" super(isMarked, description);","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Formats the ToDo object into a CsvUtil object.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the CsvUtil object representing the formatted ToDo","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public CsvUtil format() {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new CsvUtil(\"T\", String.valueOf(super.isMarked), super.description);","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns a string representation of the ToDo object.","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return a string representation of the ToDo object","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Checks if the ToDo object is equal to another object.","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param o the object to compare with","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return true if the ToDo object is equal to the other object, false otherwise","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public boolean equals(Object o) {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (this \u003d\u003d o) {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return true;","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (o \u003d\u003d null || getClass() !\u003d o.getClass()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" ToDo toDo \u003d (ToDo) o;","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return isMarked \u003d\u003d toDo.isMarked \u0026\u0026 description.equals(toDo.description);","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":65}},{"path":"src/main/java/util/CsvUtil.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package util;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Deadline;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.ToDo;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The CsvUtil class represents a utility class for working with CSV data.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * It provides methods for constructing CsvUtil objects from CSV strings,","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * converting CsvUtil objects to Task objects, and converting CsvUtil objects","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * to CSV strings.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class CsvUtil {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final String event;","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final String marked;","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final String description;","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final String by;","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final String from;","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final String to;","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a CsvUtil object with the specified event, marked, and description.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The \u0027by\u0027, \u0027from\u0027, and \u0027to\u0027 fields are set to null.","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param event the event type","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param marked the marked status","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description the description of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public CsvUtil(String event, String marked, String description) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.event \u003d event;","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.marked \u003d marked;","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.by \u003d null;","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.from \u003d null;","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.to \u003d null;","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a CsvUtil object with the specified event, marked, description, and by.","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The \u0027from\u0027 and \u0027to\u0027 fields are set to null.","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param event the event type","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param marked the marked status","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description the description of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param by the deadline of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public CsvUtil(String event, String marked, String description, String by) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.event \u003d event;","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.marked \u003d marked;","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.from \u003d null;","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.to \u003d null;","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a CsvUtil object with the specified event, marked, description, from, and to.","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The \u0027by\u0027 field is set to null.","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param event the event type","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param marked the marked status","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param description the description of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param from the start date of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param to the end date of the event","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public CsvUtil(String event, String marked, String description, String from, String to) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.event \u003d event;","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.marked \u003d marked;","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.by \u003d null;","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a CsvUtil object by parsing the given CSV string.","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param csv the CSV string to parse","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public CsvUtil(String csv) {","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String[] vals \u003d csv.split(\",\");","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.event \u003d vals[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.marked \u003d vals[1];","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.description \u003d vals[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.by \u003d vals[3].equals(\"null\") || vals[3].isEmpty() ? null : vals[3];","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.from \u003d vals[4].equals(\"null\") || vals[4].isEmpty() ? null : vals[4];","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.to \u003d vals[5].equals(\"null\") || vals[5].isEmpty() ? null : vals[5];","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Converts the CsvUtil object to a Task object.","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the Task object representing the CsvUtil object","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IllegalArgumentException if the \u0027marked\u0027 value is invalid or the date format is invalid","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Task toTask() {","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" boolean isMarked;","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" switch (marked) {","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"true\":","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" isMarked \u003d true;","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"false\":","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" isMarked \u003d false;","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" break;","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw new IllegalArgumentException(\"Invalid \u0027marked\u0027 value: \" + marked);","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (!DateTimeUtil.isValid(by) || !DateTimeUtil.isValid(from) || !DateTimeUtil.isValid(to)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw new IllegalArgumentException(\"Invalid date format.\");","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" switch (event) {","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"T\":","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new ToDo(isMarked, description);","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"D\":","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Deadline(isMarked, description, DateTimeUtil.parse(by));","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"E\":","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Event(isMarked, description, DateTimeUtil.parse(from),","lastModifiedDate":"2024-01-27"},{"lineNumber":120,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.format(to));","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw new IllegalArgumentException(\"Invalid \u0027event\u0027 value: \" + event);","lastModifiedDate":"2024-01-27"},{"lineNumber":123,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":126,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Converts the CsvUtil object to a CSV string.","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the CSV string representation of the CsvUtil object","lastModifiedDate":"2024-01-29"},{"lineNumber":131,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":132,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String toCsv() {","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return String.format(\"%s,%s,%s,%s,%s,%s\\n\", event, marked, description,","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" by, from, to);","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":137}},{"path":"src/main/java/util/DateTimeUtil.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package util;","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The DateTimeUtil class provides utility methods for formatting and parsing date and time.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class DateTimeUtil {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static final DateTimeFormatter input \u003d DateTimeFormatter.ofPattern(\"d/MM/yyyy HHmm\");","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static final DateTimeFormatter output \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Formats the given string representation of a date and time into a LocalDateTime object.","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param s the string representation of a date and time","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the LocalDateTime object representing the formatted date and time","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static LocalDateTime format(String s) {","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return LocalDateTime.parse(s, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Formats the given LocalDateTime object into a string representation of a date and time.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param d the LocalDateTime object to be formatted","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the string representation of the formatted date and time","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static String format(LocalDateTime d) {","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return d.format(input);","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Parses the given string representation of a date and time into a LocalDateTime object.","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param s the string representation of a date and time","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the LocalDateTime object representing the parsed date and time","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static LocalDateTime parse(String s) {","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return LocalDateTime.parse(s, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Checks if the given string representation of a date is valid.","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param dateStr the string representation of a date","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return true if the date is valid, false otherwise","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static boolean isValid(String dateStr) {","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (dateStr \u003d\u003d null || dateStr.isEmpty() || dateStr.equals(\"null\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return true;","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" LocalDate.parse(dateStr, input);","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return true;","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (DateTimeParseException ignored) {","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return false;","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":63}},{"path":"src/main/java/util/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package util;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import exception.NarutoException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The Parser class is responsible for parsing user input and extracting relevant information.","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private Parser() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" // Private constructor to prevent instantiation of the class","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Parses the input string into an integer index.","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param input The input string to be parsed.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param taskList The TaskList object containing the tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return The parsed integer index.","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws NarutoException If the input string is not a valid index or is out of range.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" static int parseIdx(String input, TaskList taskList) throws NarutoException {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" int idx;","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" idx \u003d Integer.parseInt(input.trim());","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw NarutoException.createInvalidIndexException();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (idx \u003e taskList.getSize() || idx \u003c\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw NarutoException.createInvalidIndexException();","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return idx;","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Parses the input string into a description.","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param input The input string to be parsed.","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return The parsed description.","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws NarutoException If the input string is empty.","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" static String parseDescription(String input) throws NarutoException {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String description \u003d input.trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw NarutoException.createEmptyCommandException();","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return description;","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Parses the input string into a deadline description and date/time.","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param input The input string to be parsed.","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return An array containing the parsed description and deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws NarutoException If the input string is empty, does not contain \"/by\", or has an invalid deadline.","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" static String[] parseDeadline(String input) throws NarutoException {","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (input.isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw NarutoException.createEmptyDeadlineException();","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (!input.contains(\"/by\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw NarutoException.createInvalidDeadlineException();","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String [] tokens \u003d input.split(\"/by\");","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String description \u003d tokens[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String by \u003d tokens[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (!DateTimeUtil.isValid(by)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw NarutoException.createInvalidDeadlineException();","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new String[] { description, by };","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Parses the input string into an event description, start date/time, and end date/time.","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param input The input string to be parsed.","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return An array containing the parsed description, start date/time, and end date/time.","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws NarutoException If the input string is empty, does not contain \"/from\" and \"/to\", or","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * has an invalid event.","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" static String[] parseEvent(String input) throws NarutoException {","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (input.isEmpty()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw NarutoException.createEmptyEventException();","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (!(input.contains(\"/from\") \u0026\u0026 input.contains(\"/to\"))) {","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw NarutoException.createInvalidEventException();","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String[] tokens \u003d input.split(\"/from\");","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String description \u003d tokens[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" tokens \u003d tokens[1].split(\"/to\");","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String from \u003d tokens[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String to \u003d tokens[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (!DateTimeUtil.isValid(from) || !DateTimeUtil.isValid(to)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" throw NarutoException.createInvalidDeadlineException();","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new String[] { description, from , to };","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":102}},{"path":"src/main/java/util/PrintUtil.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package util;","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Task;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The PrintUtil class provides utility methods for printing formatted output.","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class PrintUtil {","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Private constructor to prevent instantiation of the PrintUtil class.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private PrintUtil() {","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Prints a spacer line to separate sections of output.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static void printSpacer() {","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" System.out.println();","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" indent();","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" System.out.println(\"- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\"","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" + \" - - - -\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Prints an indentation to format the output.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static void indent() {","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" System.out.print(\" \");","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Prints a string with proper indentation and spacer lines.","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param s the string to be printed","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static void print(String s) {","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" System.out.println();","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" printSpacer();","lastModifiedDate":"2024-01-22"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" indent();","lastModifiedDate":"2024-01-21"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" System.out.println(s.replaceAll(\"\\n\", \"\\n \"));","lastModifiedDate":"2024-01-22"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" printSpacer();","lastModifiedDate":"2024-01-22"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Prints a list of tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param tasks The list of tasks to be printed.","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static String printList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (!tasks.isEmpty()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" sb.append(\"I found these tasks!\\n \");","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" sb.append(i + 1).append(\".\").append(tasks.get(i).toString());","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (i !\u003d tasks.size() - 1) {","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" sb.append(\"\\n \");","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } else {","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" sb.append(\"You don\u0027t have any tasks which match that description... (◞‸◟;)\");","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return sb.toString();","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":68}},{"path":"src/main/java/util/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package util;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import exception.NarutoException;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The Storage class is responsible for reading and writing tasks to a file.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static final String FILE_PATH \u003d \"src/logs/tasks.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a Storage object with the given list of tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param tasks The list of tasks to be stored.","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Storage(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" initStorage(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Reads from the file and initializes the list of tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param tasks The list of tasks to be initialized.","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static void initStorage(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Path filePath \u003d Paths.get(FILE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" // Create the parent directories if they do not exist","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Files.createDirectories(filePath.getParent());","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" // Create the file if it doesn\u0027t exist","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (!Files.exists(filePath)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Files.createFile(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try (Scanner sc \u003d new Scanner(filePath)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" tasks.add(new CsvUtil(sc.nextLine()).toTask());","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" PrintUtil.print(NarutoException.createFileCorruptedException().getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" resetStorage();","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Resets the storage by deleting the file and creating a new one.","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static void resetStorage() throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Path filePath \u003d Paths.get(FILE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" // Delete the file if it exists","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Files.deleteIfExists(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" // Create the parent directories if they do not exist","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Files.createDirectories(filePath.getParent());","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" // Create the file","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Files.createFile(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Writes the tasks to the file.","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param tasks The list of tasks to be written.","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException If an I/O error occurs.","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" protected void writeToFile(ArrayList\u003cTask\u003e tasks) throws IOException {","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" FileWriter fw \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" fw.write(t.format().toCsv());","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":90}},{"path":"src/main/java/util/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package util;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.List;","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Task;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Represents a list of tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class TaskList {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Constructs a TaskList object.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException if there is an error initializing the storage.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public TaskList() throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.storage \u003d new Storage(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param t the task to be added.","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException if there is an error writing to the storage.","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public void add(Task t) throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.tasks.add(t);","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" storage.writeToFile(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Deletes a task from the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param i the index of the task to be deleted.","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the deleted task.","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException if there is an error writing to the storage.","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Task delete(int i) throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Task t \u003d this.tasks.get(i - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" this.tasks.remove(i - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" storage.writeToFile(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return t;","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Gets the size of the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the size of the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public int getSize() {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return this.tasks.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Marks a task as done.","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param i the index of the task to be marked.","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the marked task.","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException if there is an error writing to the storage.","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Task mark(int i) throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Task t \u003d this.tasks.get(i - 1).mark();","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" storage.writeToFile(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return t;","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Marks a task as undone.","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param i the index of the task to be unmarked.","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return the unmarked task.","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @throws IOException if there is an error writing to the storage.","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public Task unmark(int i) throws IOException {","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Task t \u003d this.tasks.get(i - 1).unmark();","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" storage.writeToFile(tasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return t;","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Checks if the task list is empty.","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return true if the task list is empty, false otherwise.","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return tasks.isEmpty();","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":98,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Finds tasks in the task list that contain all the specified strings.","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param s the strings to search for in the tasks","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return a list of tasks that contain all the specified strings","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static List\u003cTask\u003e find(String... s) {","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return tasks.stream()","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .filter(t -\u003e Arrays.stream(s).allMatch(t::contains))","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":110,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Returns a string representation of the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":111,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":112,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return a string representation of the task list.","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" for (int i \u003d 0; i \u003c this.tasks.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" sb.append(i + 1).append(\".\").append(this.tasks.get(i).toString());","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" if (i !\u003d this.tasks.size() - 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" sb.append(\"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return sb.toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":125}},{"path":"src/main/java/util/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package util;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.Action;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.Add;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.Delete;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.Find;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.Goodbye;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.HandleError;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.List;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.Mark;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import action.Unmark;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import exception.NarutoException;","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.ToDo;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"/**","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * The Ui class handles user interface related operations.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private static final Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" private Ui() {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * Parses the user input and returns the corresponding Action object.","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @param taskList The TaskList object containing the list of tasks.","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" * @return The Action object based on the user input.","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public static Action parseInput(TaskList taskList, String s) {","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String[] tokens \u003d s.split(\" \", 2);","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String input \u003d tokens[0];","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String restOfLine \u003d tokens.length \u003d\u003d 1 ? null : tokens[1];","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" int idx;","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" assert restOfLine !\u003d null;","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" switch (input) {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"bye\":","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Goodbye();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"list\":","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new List(taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"mark\":","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" idx \u003d Parser.parseIdx(restOfLine, taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (NarutoException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new HandleError(e);","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Mark(taskList, idx);","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" idx \u003d Parser.parseIdx(restOfLine, taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (NarutoException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new HandleError(e);","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Unmark(taskList, idx);","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"todo\":","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" description \u003d Parser.parseDescription(restOfLine);","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (NarutoException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new HandleError(e);","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Add(new ToDo(description), taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" tokens \u003d Parser.parseDeadline(restOfLine);","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (NarutoException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new HandleError(e);","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Add(new Deadline(tokens[0], DateTimeUtil.format(tokens[1])), taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"event\":","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" tokens \u003d Parser.parseEvent(restOfLine);","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (NarutoException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new HandleError(e);","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Add(new Event(tokens[0], DateTimeUtil.format(tokens[1]),","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.format(tokens[2])), taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"delete\":","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" idx \u003d Parser.parseIdx(restOfLine, taskList);","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (NarutoException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new HandleError(e);","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Delete(taskList, idx);","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" case \"find\":","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":92,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" tokens \u003d Parser.parseDescription(restOfLine).split(\" \");","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (NarutoException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new HandleError(e);","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new Find(tokens);","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" return new HandleError(NarutoException.createInvalidCommandException());","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":101}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.shape.Circle?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"comic\" wrapText\u003d\"true\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cfont\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cFont name\u003d\"Comic Sans MS Bold\" size\u003d\"13.0\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/font\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cclip\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cCircle radius\u003d\"49.5\" centerX\u003d\"49.5\" centerY\u003d\"49.5\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/clip\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003ceffect\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cjavafx.scene.effect.DropShadow color\u003d\"#000000\" spread\u003d\"0.5\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/effect\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":29}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"MainWindow\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cfont\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cFont name\u003d\"Comic Sans MS Bold\" size\u003d\"13.0\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/font\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/TextField\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cfont\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cFont name\u003d\"Comic Sans MS Bold\" size\u003d\"14.0\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/font\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/Button\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\"","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefWidth\u003d\"388.0\"/\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":29}},{"path":"src/test/java/util/CsvUtilTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package util;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Deadline;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.Event;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import task.ToDo;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class CsvUtilTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public void testToTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" CsvUtil c \u003d new CsvUtil(\"T,false,borrow book,null,null,null\");","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" ToDo t \u003d new ToDo(false, \"borrow book\");","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" assertEquals(c.toTask(), t);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" c \u003d new CsvUtil(\"D,false,return book,2/12/2019 1800,null,null\");","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Deadline d \u003d new Deadline(false, \"return book\",","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.parse(\"2/12/2019 1800\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" assertEquals(c.toTask(), d);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" c \u003d new CsvUtil(\"E,false,CS2103 Tutorial,null,2/02/2024 0800,2/02/2024 0900\");","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" Event e \u003d new Event(false, \"CS2103 Tutorial\",","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" DateTimeUtil.parse(\"2/02/2024 0800\"), DateTimeUtil.parse(\"2/02/2024 0900\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" assertEquals(c.toTask(), e);","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":28}},{"path":"src/test/java/util/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"package util;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"import exception.NarutoException;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" public void testParseDescription() {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" assertEquals(Parser.parseDescription(\" Homework\"), \"Homework\");","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" } catch (NarutoException n) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" System.out.println(n.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" assertEquals(false, true);","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":21}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"todo borrow book","lastModifiedDate":"2024-01-22"},{"lineNumber":2,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"deadline return book /by 2/12/2019 1800","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"event CS2103 Tutorial /from 2/02/2024 0800 /to 2/02/2024 0900","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"mark 1","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"delete 3","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"mark 2","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"delete 2","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"delete 1","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"itstrueitstrueitsrealitsreal"},"content":"bye","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"itstrueitstrueitsrealitsreal":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":"itstrueitstrueitsrealitsreal"},"content":"java -classpath ..\\bin Main \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":{"-":20,"itstrueitstrueitsrealitsreal":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":"itstrueitstrueitsrealitsreal"},"content":"java -classpath ../bin Main \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":{"-":37,"itstrueitstrueitsrealitsreal":1}}] diff --git a/itstrueitstrueitsrealitsreal_ip_master/commits.json b/itstrueitstrueitsrealitsreal_ip_master/commits.json index 799fdd7c..b6097edb 100644 --- a/itstrueitstrueitsrealitsreal_ip_master/commits.json +++ b/itstrueitstrueitsrealitsreal_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"itstrueitstrueitsrealitsreal":[{"date":"2024-01-21","commitResults":[{"hash":"e38a66815b4b7030761640318b77caf5d34121dc","isMergeCommit":false,"messageTitle":"completed Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":10}}},{"hash":"11ca8f0f5f594b29b7b735d046fad5b4b82a860a","isMergeCommit":false,"messageTitle":"completed Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":8}}},{"hash":"31f65c4a43322dc50c0d089993d04c9f100f025e","isMergeCommit":false,"messageTitle":"reorganised project into Main, Naruto and Printutil","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":32}}},{"hash":"ddf6e5645b7ef93b9508e74552cd969330924591","isMergeCommit":false,"messageTitle":"added Action interface, created Goodbye, Greet, Echo classes","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":23}}},{"hash":"af9dd45097bf0954f82b31e32c60f0a4f0b4ac5b","isMergeCommit":false,"messageTitle":"changed echo to add, added store and list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":14}}},{"hash":"b896b8a81d07d9c17600a0756e7c65fd96a5123d","isMergeCommit":false,"messageTitle":"added task class, mark and unmark actions","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":13}}}]},{"date":"2024-01-22","commitResults":[{"hash":"c5ed5690783aa3c72abb97603aa8a8215b41f8c2","isMergeCommit":false,"messageTitle":"touched up aesthetics","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":12}}},{"hash":"d03a53e3a377787dba2f2f7a04f9d458f4d26bfb","isMergeCommit":false,"messageTitle":"added deadline, event, todo as types of tasks","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":63}}},{"hash":"0670fade859ff2e8ee15af90ec102a690b9c07c6","isMergeCommit":false,"messageTitle":"updated text-ui-text","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"ad632980476e980761ec5843e78747c18fe51579","isMergeCommit":false,"messageTitle":"changed array to arraylist in store","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":14}}}]},{"date":"2024-01-23","commitResults":[{"hash":"21cb23a75cff291e8a27175bb1ff7c2383d3444b","isMergeCommit":false,"messageTitle":"organised files into packages, updated runtest files, added exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"4eeded98fe438a6de656bdfb596f3f6cb9a7f4fe","isMergeCommit":false,"messageTitle":"added invalidindexexception and updated test input","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":343,"deletions":81}}},{"hash":"fbda5d9dc6cf3049284c61a476a13857dccbd57e","isMergeCommit":false,"messageTitle":"Level-6: added delete functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"java":{"insertions":2,"deletions":0}}},{"hash":"b9a818b2904b4ff53165b87206f59a1258312273","isMergeCommit":false,"messageTitle":"implemented delete functionality, collections and enums","messageBody":"","tags":["Level-6","A-Enums","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":9}}},{"hash":"ecc82939367eeb3975d4cb150a213cf0b0752095","isMergeCommit":false,"messageTitle":"fixed checkstyle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":30}}},{"hash":"ec97bae06807954a65c98cb8148000df139843d2","isMergeCommit":false,"messageTitle":"removed unused imports","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}}]},{"date":"2024-01-27","commitResults":[{"hash":"c089e8620f11509124608dd20dd7d32449bb39d4","isMergeCommit":false,"messageTitle":"Add store functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":361,"deletions":132}}},{"hash":"2f04027a250dab5b33436abcdf7c5b636bbe82b9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"5bc5d76c3d202375c09725bc6ab518f5755c287f","isMergeCommit":false,"messageTitle":"Remove old logs file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1}}},{"hash":"23824dd1a105dc5054d52c72f203dda61c931f3e","isMergeCommit":false,"messageTitle":"Add date functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":32},"java":{"insertions":116,"deletions":44}}},{"hash":"039048cb538b266fb4daf55a8559c61507dd480b","isMergeCommit":false,"messageTitle":"Fix bug in Store.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":10}}},{"hash":"f33dec210670894d71c5b7c9224faa05a7104dd2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"cf3992c1ea1dfab9df121d18818263aa8f342abc","isMergeCommit":false,"messageTitle":"Separate Store into Storage and TaskList","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":1},"java":{"insertions":157,"deletions":144}}},{"hash":"79686d3dae83b21a19dbd2ef307280116661c0e3","isMergeCommit":false,"messageTitle":"Add Ui","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":108}}},{"hash":"aa45f2392acf0da2c06f5eb2f92d55ec62fa59a2","isMergeCommit":false,"messageTitle":"Separate Naruto::listen() into Ui and Parser","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":97,"deletions":71}}},{"hash":"b786b127fc1956c8db2314eb01ec6a771b7bd42d","isMergeCommit":false,"messageTitle":"Touch up Action.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"b7e96e03873852433cc44a5c264c510c1ff902a1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-More-OOP\u0027","messageBody":"","tags":["A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"46704d6e3afa97340416535a477f68669e825334","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027remotes/origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4de13090e66fd4fd2efcb61559e2efe32c271cb8","isMergeCommit":false,"messageTitle":"Add Gradle support and Checkstyle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":14,"deletions":2},"java":{"insertions":5,"deletions":10}}},{"hash":"ae21b057e9a19b567e3f08d0f70ec2d64cfe672a","isMergeCommit":false,"messageTitle":"Touch up checkstyle","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":101,"deletions":106}}},{"hash":"f123ebaffe3dd7dfce427eec17c415571e1a4aff","isMergeCommit":false,"messageTitle":"Add JUnit tests for CsvUtil and Parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":0}}},{"hash":"6d2d1a3a7908162c88cc564faa5bb74abe300e71","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"22306e03e5d32b7d2769cdebd75dad4384c48f41","isMergeCommit":false,"messageTitle":"Add JAR","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"d05db3e2ffa05626759f4e0153367e5dfa472a6f","isMergeCommit":false,"messageTitle":"Add find","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":33}}}]},{"date":"2024-01-29","commitResults":[{"hash":"37a8eadda202cfe3a474fb65a34059667ae2e77f","isMergeCommit":false,"messageTitle":"Touch up checkstyle","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":7}}},{"hash":"3f0d114d13672429e89d9dd43458806edab5bf9b","isMergeCommit":false,"messageTitle":"Add JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":673,"deletions":44}}},{"hash":"b602b0a6877ec6f2e5bd4bbace0e21086948b54b","isMergeCommit":false,"messageTitle":"Update gradle.build","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":7}}},{"hash":"b0f2618d23bc5520f6a99077247d8d905363ec3b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e24caaee48917f4c922add47ed6bd3441297664a","isMergeCommit":true,"messageTitle":"Merge branch-Level-9 with master","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"429bf1429c2417b2e7b1ad132b76b04c6c006a32","isMergeCommit":false,"messageTitle":"Merge branch-Level-9 with master","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":125,"deletions":35}}}]},{"date":"2024-02-01","commitResults":[{"hash":"d4676ff88e8109e3f928aeff35a431edcfacefec","isMergeCommit":false,"messageTitle":"Fix JAR generation","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":13,"deletions":2}}}]},{"date":"2024-02-03","commitResults":[{"hash":"43f669ad48c2c8b2b50698a8addc0a2920e8ffec","isMergeCommit":false,"messageTitle":"Add search for keywords out of order using varargs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":10}}},{"hash":"48e6c6fc9dfdd4196f7b8ab8bc5cafe951fcf6f2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Varargs\u0027","messageBody":"","tags":["A-Varargs"],"fileTypesAndContributionMap":{}},{"hash":"117fa05d2c2c1ede2f7f8826950daaf78e97a379","isMergeCommit":false,"messageTitle":"Add GUI","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"java":{"insertions":181,"deletions":1}}}]},{"date":"2024-02-04","commitResults":[{"hash":"5f0b8529e3ed374c4bbd92e91b83ea5c06092efa","isMergeCommit":false,"messageTitle":"Complete styling","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":59,"deletions":0},"java":{"insertions":129,"deletions":132}}},{"hash":"5c26e2b4906c0e1e0afe8aac34b5b7b34fa7a0df","isMergeCommit":false,"messageTitle":"Complete GUI","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":93}}},{"hash":"7dac6f7fd012d2c8dbf677a4d9935a497419a2b5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}},{"hash":"f9f810a7d52292e47ad112132bf1caf9ad9fde8f","isMergeCommit":false,"messageTitle":"Fix bye command and JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":2}}},{"hash":"71e8dcf8abc358394b36d35d26d21b1b98578310","isMergeCommit":false,"messageTitle":"Fix bye message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":11}}}]}]},"authorFileTypeContributionMap":{"itstrueitstrueitsrealitsreal":{"java":1976,"md":0,"fxml":59,"sh":1,"bat":1,"gradle":27,"txt":12}},"authorContributionVariance":{"itstrueitstrueitsrealitsreal":133549.58},"authorDisplayNameMap":{"itstrueitstrueitsrealitsreal":"CS2103-F08-1 KENN..SEET"}} +{"authorDailyContributionsMap":{"itstrueitstrueitsrealitsreal":[{"date":"2024-01-21","commitResults":[{"hash":"e38a66815b4b7030761640318b77caf5d34121dc","isMergeCommit":false,"messageTitle":"completed Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":10}}},{"hash":"11ca8f0f5f594b29b7b735d046fad5b4b82a860a","isMergeCommit":false,"messageTitle":"completed Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":8}}},{"hash":"31f65c4a43322dc50c0d089993d04c9f100f025e","isMergeCommit":false,"messageTitle":"reorganised project into Main, Naruto and Printutil","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":32}}},{"hash":"ddf6e5645b7ef93b9508e74552cd969330924591","isMergeCommit":false,"messageTitle":"added Action interface, created Goodbye, Greet, Echo classes","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":23}}},{"hash":"af9dd45097bf0954f82b31e32c60f0a4f0b4ac5b","isMergeCommit":false,"messageTitle":"changed echo to add, added store and list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":14}}},{"hash":"b896b8a81d07d9c17600a0756e7c65fd96a5123d","isMergeCommit":false,"messageTitle":"added task class, mark and unmark actions","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":90,"deletions":13}}}]},{"date":"2024-01-22","commitResults":[{"hash":"c5ed5690783aa3c72abb97603aa8a8215b41f8c2","isMergeCommit":false,"messageTitle":"touched up aesthetics","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":12}}},{"hash":"d03a53e3a377787dba2f2f7a04f9d458f4d26bfb","isMergeCommit":false,"messageTitle":"added deadline, event, todo as types of tasks","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":96,"deletions":63}}},{"hash":"0670fade859ff2e8ee15af90ec102a690b9c07c6","isMergeCommit":false,"messageTitle":"updated text-ui-text","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":13,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"ad632980476e980761ec5843e78747c18fe51579","isMergeCommit":false,"messageTitle":"changed array to arraylist in store","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":14}}}]},{"date":"2024-01-23","commitResults":[{"hash":"21cb23a75cff291e8a27175bb1ff7c2383d3444b","isMergeCommit":false,"messageTitle":"organised files into packages, updated runtest files, added exceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0},"bat":{"insertions":1,"deletions":1}}},{"hash":"4eeded98fe438a6de656bdfb596f3f6cb9a7f4fe","isMergeCommit":false,"messageTitle":"added invalidindexexception and updated test input","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":343,"deletions":81}}},{"hash":"fbda5d9dc6cf3049284c61a476a13857dccbd57e","isMergeCommit":false,"messageTitle":"Level-6: added delete functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"java":{"insertions":2,"deletions":0}}},{"hash":"b9a818b2904b4ff53165b87206f59a1258312273","isMergeCommit":false,"messageTitle":"implemented delete functionality, collections and enums","messageBody":"","tags":["Level-6","A-Enums","A-Collections"],"fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":9}}},{"hash":"ecc82939367eeb3975d4cb150a213cf0b0752095","isMergeCommit":false,"messageTitle":"fixed checkstyle","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":88,"deletions":30}}},{"hash":"ec97bae06807954a65c98cb8148000df139843d2","isMergeCommit":false,"messageTitle":"removed unused imports","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}}]},{"date":"2024-01-27","commitResults":[{"hash":"c089e8620f11509124608dd20dd7d32449bb39d4","isMergeCommit":false,"messageTitle":"Add store functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":361,"deletions":132}}},{"hash":"2f04027a250dab5b33436abcdf7c5b636bbe82b9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"5bc5d76c3d202375c09725bc6ab518f5755c287f","isMergeCommit":false,"messageTitle":"Remove old logs file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1}}},{"hash":"23824dd1a105dc5054d52c72f203dda61c931f3e","isMergeCommit":false,"messageTitle":"Add date functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":32},"java":{"insertions":116,"deletions":44}}},{"hash":"039048cb538b266fb4daf55a8559c61507dd480b","isMergeCommit":false,"messageTitle":"Fix bug in Store.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":10}}},{"hash":"f33dec210670894d71c5b7c9224faa05a7104dd2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"cf3992c1ea1dfab9df121d18818263aa8f342abc","isMergeCommit":false,"messageTitle":"Separate Store into Storage and TaskList","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":1},"java":{"insertions":157,"deletions":144}}},{"hash":"79686d3dae83b21a19dbd2ef307280116661c0e3","isMergeCommit":false,"messageTitle":"Add Ui","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":108}}},{"hash":"aa45f2392acf0da2c06f5eb2f92d55ec62fa59a2","isMergeCommit":false,"messageTitle":"Separate Naruto::listen() into Ui and Parser","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":97,"deletions":71}}},{"hash":"b786b127fc1956c8db2314eb01ec6a771b7bd42d","isMergeCommit":false,"messageTitle":"Touch up Action.java","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"b7e96e03873852433cc44a5c264c510c1ff902a1","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-More-OOP\u0027","messageBody":"","tags":["A-Packages","A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"46704d6e3afa97340416535a477f68669e825334","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027remotes/origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4de13090e66fd4fd2efcb61559e2efe32c271cb8","isMergeCommit":false,"messageTitle":"Add Gradle support and Checkstyle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":14,"deletions":2},"java":{"insertions":5,"deletions":10}}},{"hash":"ae21b057e9a19b567e3f08d0f70ec2d64cfe672a","isMergeCommit":false,"messageTitle":"Touch up checkstyle","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":0},"java":{"insertions":101,"deletions":106}}},{"hash":"f123ebaffe3dd7dfce427eec17c415571e1a4aff","isMergeCommit":false,"messageTitle":"Add JUnit tests for CsvUtil and Parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":107,"deletions":0}}},{"hash":"6d2d1a3a7908162c88cc564faa5bb74abe300e71","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"22306e03e5d32b7d2769cdebd75dad4384c48f41","isMergeCommit":false,"messageTitle":"Add JAR","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"d05db3e2ffa05626759f4e0153367e5dfa472a6f","isMergeCommit":false,"messageTitle":"Add find","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":33}}}]},{"date":"2024-01-29","commitResults":[{"hash":"37a8eadda202cfe3a474fb65a34059667ae2e77f","isMergeCommit":false,"messageTitle":"Touch up checkstyle","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":7}}},{"hash":"3f0d114d13672429e89d9dd43458806edab5bf9b","isMergeCommit":false,"messageTitle":"Add JavaDoc","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":673,"deletions":44}}},{"hash":"b602b0a6877ec6f2e5bd4bbace0e21086948b54b","isMergeCommit":false,"messageTitle":"Update gradle.build","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":7}}},{"hash":"b0f2618d23bc5520f6a99077247d8d905363ec3b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e24caaee48917f4c922add47ed6bd3441297664a","isMergeCommit":true,"messageTitle":"Merge branch-Level-9 with master","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"429bf1429c2417b2e7b1ad132b76b04c6c006a32","isMergeCommit":false,"messageTitle":"Merge branch-Level-9 with master","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":125,"deletions":35}}}]},{"date":"2024-02-01","commitResults":[{"hash":"d4676ff88e8109e3f928aeff35a431edcfacefec","isMergeCommit":false,"messageTitle":"Fix JAR generation","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":13,"deletions":2}}}]},{"date":"2024-02-03","commitResults":[{"hash":"43f669ad48c2c8b2b50698a8addc0a2920e8ffec","isMergeCommit":false,"messageTitle":"Add search for keywords out of order using varargs","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":10}}},{"hash":"48e6c6fc9dfdd4196f7b8ab8bc5cafe951fcf6f2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Varargs\u0027","messageBody":"","tags":["A-Varargs"],"fileTypesAndContributionMap":{}},{"hash":"117fa05d2c2c1ede2f7f8826950daaf78e97a379","isMergeCommit":false,"messageTitle":"Add GUI","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"java":{"insertions":181,"deletions":1}}}]},{"date":"2024-02-04","commitResults":[{"hash":"5f0b8529e3ed374c4bbd92e91b83ea5c06092efa","isMergeCommit":false,"messageTitle":"Complete styling","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":59,"deletions":0},"java":{"insertions":129,"deletions":132}}},{"hash":"5c26e2b4906c0e1e0afe8aac34b5b7b34fa7a0df","isMergeCommit":false,"messageTitle":"Complete GUI","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":93}}},{"hash":"7dac6f7fd012d2c8dbf677a4d9935a497419a2b5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}},{"hash":"f9f810a7d52292e47ad112132bf1caf9ad9fde8f","isMergeCommit":false,"messageTitle":"Fix bye command and JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":2}}},{"hash":"71e8dcf8abc358394b36d35d26d21b1b98578310","isMergeCommit":false,"messageTitle":"Fix bye message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":11}}}]},{"date":"2024-02-07","commitResults":[{"hash":"85af9d19ecc59b6eb982c11a8d056fe5dac306d8","isMergeCommit":false,"messageTitle":"Fix background color and dialogBox stretch issue","messageBody":"","fileTypesAndContributionMap":{"fxml":{"insertions":4,"deletions":5},"java":{"insertions":1,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"itstrueitstrueitsrealitsreal":{"java":1977,"md":0,"fxml":58,"sh":1,"bat":1,"gradle":27,"txt":12}},"authorContributionVariance":{"itstrueitstrueitsrealitsreal":123559.95},"authorDisplayNameMap":{"itstrueitstrueitsrealitsreal":"CS2103-F08-1 KENN..SEET"}} diff --git a/jannaleong_ip_master/authorship.json b/jannaleong_ip_master/authorship.json index 8f8679af..f80685f0 100644 --- a/jannaleong_ip_master/authorship.json +++ b/jannaleong_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":"jannaleong"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-04"},{"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":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" mainClass.set(\"duke/Belle\")","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" archiveBaseName \u003d \"belle1\"","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":"checkstyle {","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"jannaleong":22,"-":40}},{"path":"src/main/data/belleList.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"T , false , abc","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"T , false , abc","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"E , false , project meeting , Mon 2pm , 4pm","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"T , false , abc","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"E , true , project meeting , Mon 2pm , 4pm","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"T , false , abc","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"D , true , swim , 6pm","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"E , false , project meeting , Mon 2pm , 4pm","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"T , false , eat ban","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"E , true , pm event project meeting , Mon 2pm , 4pm","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"T , true , prawn","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"T , false , abc","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"T , false , fgh","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"D , false , apple , 6pm","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"T , false , abc","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"D , false , corgi , 6pm","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"jannaleong":16}},{"path":"src/main/java/duke/Belle.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.command.Command;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import duke.others.BelleException;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import duke.run.Parser;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import duke.run.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import duke.run.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" * Manages tasks on a list in a chatbot form.","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"public class Belle {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" private Parser parser;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" private boolean isExit \u003d false;","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" * Constructs Belle.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" * @param filePath Specifies filepath to store data.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" public Belle(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" parser \u003d new Parser();","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" tasks \u003d new TaskList(storage.loadList());","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" ui.printError(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" public String getResponse(String input) {","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" if (isExit) {","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" System.exit(0);","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" Command com \u003d parser.parse(input);","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" isExit \u003d com.isExit();","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" return com.execute(storage, tasks, ui);","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" return e.getMessage();","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":56}},{"path":"src/main/java/duke/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" * containing text from the speaker.","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" private Label dialog;","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" private void flip() {","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" db.flip();","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" return db;","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"jannaleong":62}},{"path":"src/main/java/duke/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"public class Launcher {","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"jannaleong":13}},{"path":"src/main/java/duke/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" private Belle duke \u003d new Belle(\"src/main/data/belleList.txt\");","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" stage.show();","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"jannaleong":31}},{"path":"src/main/java/duke/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" private Belle duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaUser.png\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaDuke.png\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" * Initialises the Belle program with a greeting.","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" public void initialize() {","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" greetUser();","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" public void setDuke(Belle d) {","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" duke \u003d d;","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" );","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" userInput.clear();","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" private void greetUser() {","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-04"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" DialogBox.getDukeDialog(","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" ui.greet(),","lastModifiedDate":"2024-02-04"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" dukeImage","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" )","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" );","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"jannaleong":70}},{"path":"src/main/java/duke/command/AddTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.command;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.others.BelleException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import duke.run.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.run.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.DeadlineTask;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.EventTask;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.TodoTask;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" * Adds item to tasklist.","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"public class AddTaskCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" private String type;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" private String msg;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" * Constructs AddTaskCommand.","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" * @param type Type of command.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" * @param msg The remaining part of input string,","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" * excluding the type.","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" public AddTaskCommand(String type, String msg) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" this.msg \u003d msg;","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" public String execute(Storage s, TaskList t, Ui u) throws BelleException {","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" Task curr;","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" String printStatement;","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" if (type.equals(\"todo\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" curr \u003d new TodoTask(msg.substring(5), false);","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"You did not specify a title for this todo task\");","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" } else if (type.equals(\"deadline\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" String[] deadlinelist \u003d msg.substring(9).split(\" /by \");","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" curr \u003d new DeadlineTask(deadlinelist[0], false, deadlinelist[1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"You did not specify \"","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" + \"all the required information for deadline task.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"You did not specify \"","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" + \"all the required information for deadline task.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" String[] eventlist \u003d msg.substring(6).split(\" /from \");","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" String[] startend \u003d eventlist[1].split(\" /to \");","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" curr \u003d new EventTask(eventlist[0], false, startend[0], startend[1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"You did not \"","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" + \"specify all the required information for deadline task.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"You did not \"","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" + \"specify all the required information for deadline task.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" t.addTask(curr);","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" printStatement \u003d \"--------------------------\" + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" + \"Got it. I\u0027ve added this task:\" + \"\\n\" + curr.toString()","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"Now you have \" + t.getSize() + \" tasks in the list.\"","lastModifiedDate":"2024-02-05"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"--------------------------\";","lastModifiedDate":"2024-02-05"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" s.save(t.getList());","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" return printStatement;","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":79}},{"path":"src/main/java/duke/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.command;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.run.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import duke.run.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" * Exits the program.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" * Constructs ByeCommand.","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" public ByeCommand() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public String execute(Storage s, TaskList t, Ui u) {","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" return u.bye();","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" return true;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":27}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.command;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.others.BelleException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import duke.run.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.run.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" * Performs different functions based on type of command.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Runs the belle.belle.command to complete its","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" * specific function.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" * @param s Storage containing data of","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" * previous program.","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" * @param t Tasklist of program.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" * @param u Ui that handles user interactions.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" public abstract String execute(Storage s, TaskList t, Ui u) throws BelleException;","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" * Returns true if the program should exit","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" * after this belle.belle.command and false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" * @return Boolean value to exit program.","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":31}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.command;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.others.BelleException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import duke.run.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.run.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" * Deletes item from list.","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" private String index;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" * Constructs DeleteCommand.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" * @param index The index of item to delete.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" public DeleteCommand(String index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" public String getIndex() {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" return index;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" public String execute(Storage s, TaskList t, Ui u) throws BelleException {","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" String printStatement;","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" Task deletetask \u003d t.getTask(Integer.valueOf(index) - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" t.removeTask(Integer.parseInt(index) - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" printStatement \u003d \"--------------------------\" + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" + \"Noted. I\u0027ve removed this task:\" + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" + deletetask.toString() + \"\\n\" + \"Now you have \"","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" + t.getSize() + \" tasks in the list.\" + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" + \"--------------------------\";","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" s.save(t.getList());","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" return printStatement;","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"This is not a valid number in my task list :(\");","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":50}},{"path":"src/main/java/duke/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.command;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.run.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import duke.run.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" * Finds specific task from list based on keyword.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" private String keyword;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" * Constructs FindCommand.","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" * @param keyword Specific word that user is searching for.","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public FindCommand(String keyword) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" public String execute(Storage s, TaskList t, Ui u) {","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" int index \u003d 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" String printStatement \u003d \"--------------------------\" + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" + \"Here are the matching tasks in your list:\" + \"\\n\";","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" for (int i \u003d 0; i \u003c t.getSize(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" Task currTask \u003d t.getTask(i);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" if (currTask.getName().contains(this.keyword)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" printStatement +\u003d String.valueOf(index) + \".\" + t.getTask(i).toString() + \"\\n\";","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" index +\u003d 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" printStatement +\u003d \"--------------------------\";","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" return printStatement;","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"jannaleong":44}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.command;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.run.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import duke.run.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" * Lists out all items in the tasklist.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" * Constructs ListCommand.","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" public ListCommand() {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public String execute(Storage s, TaskList t, Ui u) {","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" int index \u003d 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" String printStatement \u003d \"--------------------------\" + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" + \"Here are the tasks in your list:\" + \"\\n\";","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" for (int i \u003d 0; i \u003c t.getSize(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" printStatement +\u003d String.valueOf(index) + \".\" + t.getTask(i).toString() + \"\\n\";","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" index +\u003d 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" printStatement +\u003d \"--------------------------\";","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" return printStatement;","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":35}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.command;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.others.BelleException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import duke.run.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.run.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" * Marks items as done.","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" private String index;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" * Constructs MarkCommand.","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" * @param index The index of item to mark as done.","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" public MarkCommand(String index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" public String execute(Storage s, TaskList t, Ui u) throws BelleException {","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" Task doingtask \u003d t.getTask(Integer.valueOf(index) - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" doingtask.setTaskDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" String printStatement \u003d \"--------------------------\" + \"\\n\"","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" + \"Nice! I have marked this task as done:\" + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" + doingtask.toString() + \"\\n\" + \"--------------------------\";","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" s.save(t.getList());","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" return printStatement;","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"This is not a valid number in my task list :(\");","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":44}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.command;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.others.BelleException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import duke.run.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.run.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" * Marks items as undone.","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" private String index;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" * Constructs UnmarkCommand.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" * @param index The index of item to mark as undone.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" public UnmarkCommand(String index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" public String execute(Storage s, TaskList t, Ui u) throws BelleException {","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" Task doingtask \u003d t.getTask(Integer.valueOf(index) - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" doingtask.setTaskUndone();","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" String printStatement \u003d \"--------------------------\" + \"\\n\"","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" + \"OK, I\u0027ve marked this task as not done yet:\" + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" + doingtask.toString() + \"\\n\" + \"--------------------------\";","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" s.save(t.getList());","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" return printStatement;","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"This is not a valid number in my task list :(\");","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":43}},{"path":"src/main/java/duke/others/BelleException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.others;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":" * Encompasses all errors in belle.","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"public class BelleException extends Exception {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" * Constructs BelleException.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" * @param msg Error message.","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" public BelleException(String msg) {","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" super(msg);","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"jannaleong":15}},{"path":"src/main/java/duke/others/DateFormatter.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.others;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" * Convert dates to more readable form.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"public class DateFormatter {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" private String date;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Constructs DateFormatter.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" * @param date to convert.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" public DateFormatter(String date) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" * Returns true if date is in valid format, else","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" * returns false.","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" * @return Boolean indicating if it is in a","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" * correct format.","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" public Boolean isValidDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" LocalDate currdate \u003d LocalDate.parse(this.date);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" return true;","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" // don\u0027t change the date in this case","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" * Returns date converted into a more","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" * readable format.","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" public String convertDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" LocalDate currdate \u003d LocalDate.parse(this.date);","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" return currdate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":47}},{"path":"src/main/java/duke/run/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.run;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.command.AddTaskCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import duke.command.ByeCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.command.Command;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import duke.command.FindCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import duke.command.ListCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import duke.command.UnmarkCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import duke.others.BelleException;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Deals with making sense of the user command.","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" * Constructs Parser.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" public Parser() {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" * Returns correct belle.belle.command based on users","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" * input.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" * @param input Users input.","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" * @return Correct belle.belle.command.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" * @throws BelleException If an invalid belle.belle.command is entered.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" public Command parse(String input) throws BelleException {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" String[] inputlist \u003d input.split(\" \");","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" if (inputlist[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" return new DeleteCommand(inputlist[1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" } else if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" return new ByeCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" } else if (inputlist[0].equals(\"mark\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" return new MarkCommand(inputlist[1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" } else if (inputlist[0].equals(\"unmark\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" return new UnmarkCommand(inputlist[1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" } else if (inputlist[0].equals(\"todo\") || inputlist[0].equals(\"deadline\") || inputlist[0].equals(\"event\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" if (inputlist[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" return new AddTaskCommand(\"todo\", input);","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" } else if (inputlist[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" return new AddTaskCommand(\"deadline\", input);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" return new AddTaskCommand(\"event\", input);","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" } else if (inputlist[0].equals(\"find\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" return new FindCommand(inputlist[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"Not a valid belle command\");","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":59}},{"path":"src/main/java/duke/run/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.run;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import duke.others.BelleException;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.DeadlineTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.EventTask;","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.TodoTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" * Deals with loading tasks from the file and saving tasks in the file.","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" private String filepath;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" * Constructs Storage.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" * @param filepath File containing storage data.","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" public Storage(String filepath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" * Returns list that was saved previously.","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" * @return ArrayList that was saved previously.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" * @throws BelleException If an invalid item in HardDisk.","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" public ArrayList\u003cTask\u003e loadList() throws BelleException {","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" ArrayList\u003cTask\u003e currList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" File f \u003d new File(filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" if (!f.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" return currList;","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" Scanner listscanner \u003d new Scanner(f);","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" while (listscanner.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" String currLine \u003d listscanner.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" String[] currTask \u003d currLine.split(\" , \");","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" if (currTask[0].equals(\"T\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" currList.add(new TodoTask(currTask[2], Boolean.valueOf(currTask[1])));","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" } else if (currTask[0].equals(\"D\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" currList.add(new DeadlineTask(currTask[2], Boolean.valueOf(currTask[1]),","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" currTask[3]));","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" } else if (currTask[0].equals(\"E\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" currList.add(new EventTask(currTask[2], Boolean.valueOf(currTask[1]),","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" currTask[3], currTask[4]));","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"Not valid item in HardDisk\");","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" return currList;","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"Sorry!! I\u0027m having trouble loading the list.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" * Saves list everytime it is updated.","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" * @throws BelleException If an invalid item that is being saved.","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" public void save(ArrayList\u003cTask\u003e currList) throws BelleException {","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" File f \u003d new File(this.filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":" if (!f.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" f.getParentFile().mkdirs();","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" f.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":" FileWriter fw \u003d new FileWriter(this.filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":" String currItem \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":" String div \u003d \" , \";","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":" for (Task i : currList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":" if (i.getType().equals(\"T\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" currItem \u003d i.getType() + div + i.getDone() + div + i.getName() + System.lineSeparator();","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":" } else if (i.getType().equals(\"D\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" DeadlineTask d \u003d (DeadlineTask) i;","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":" currItem \u003d d.getType() + div + d.getDone() + div + d.getName() + div","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"jannaleong"},"content":" + d.getDeadline() + System.lineSeparator();","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" } else if (i.getType().equals(\"E\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"jannaleong"},"content":" EventTask e \u003d (EventTask) i;","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":" currItem \u003d e.getType() + div + e.getDone() + div + e.getName()","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":" + div + e.getStart() + div + e.getEnd() + System.lineSeparator();","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"There is an invalid Item when trying to save list\");","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":" fw.write(currItem);","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"jannaleong"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"Sorry!! I\u0027m having trouble saving the list.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":104}},{"path":"src/main/java/duke/run/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.run;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" * Contains the task list e.g., it has","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" * operations to add/delete tasks in the list.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"public class TaskList {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" private ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" * Constructs TaskList.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" public TaskList(ArrayList\u003cTask\u003e l) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" this.list \u003d l;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" return this.list;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" public Task getTask(int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" return list.get(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" * Removes task at a specific index from","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" * TaskList.","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" * @param i Index of item to remove.","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" public void removeTask(int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" list.remove(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" public int getSize() {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" return list.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" * Add task to TaskList.","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" * @param t Task to add.","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" public void addTask(Task t) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" list.add(t);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":51}},{"path":"src/main/java/duke/run/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.run;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":" * Deals with interactions with the user.","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"public class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" private Scanner sc;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" * Constructs Ui.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" public Ui() {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" * Read users input.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" * @return String of users input.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" public String readInput() {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" return sc.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" * Prints welcome message.","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" public String greet() {","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" return \"--------------------------\" + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" + \"Welcome!! I\u0027m Belle \u003c3.\"","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"What can I do for you?\"","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"--------------------------\";","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" * Prints goodbye message.","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" public String bye() {","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" this.sc.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" return \"--------------------------\"","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"Till next time!! Goodbye.\";","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" public void printError(String msg) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" System.out.println(msg);","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":50}},{"path":"src/main/java/duke/tasks/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.others.DateFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":" * Represents tasks with deadline.","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" private String deadline;","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" * Constructs DeadlineTask.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" public DeadlineTask(String name, boolean done, String deadline) {","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" super(name, done);","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" DateFormatter d \u003d new DateFormatter(this.deadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" if (d.isValidDate()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" this.deadline \u003d d.convertDate();","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" public String getDeadline() {","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" return this.deadline;","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" public String getType() {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" return \"D\";","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" return \" [D]\" + super.toString() + \" (by: \" + deadline + \")\";","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"jannaleong":34}},{"path":"src/main/java/duke/tasks/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.others.DateFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":" * Represents tasks with start and end time.","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"public class EventTask extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" private String start;","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" private String end;","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Constructs EventTask.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" public EventTask(String name, boolean done, String start, String end) {","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" super(name, done);","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" DateFormatter d1 \u003d new DateFormatter(this.start);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" if (d1.isValidDate()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" this.start \u003d d1.convertDate();","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" DateFormatter d2 \u003d new DateFormatter(this.end);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" if (d2.isValidDate()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" this.end \u003d d2.convertDate();","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" public String getStart() {","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" return this.start;","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" public String getEnd() {","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" return this.end;","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" public String getType() {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" return \"E\";","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" return \" [E]\" + super.toString()","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" + \" (from: \" + this.start + \" \" + \"to: \" + end + \")\";","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"jannaleong":46}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":" * Represents tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"public class Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" private boolean isDone \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" private String name \u003d \"\";","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" * Constructs Task.","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" public Task(String name, boolean done) {","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" this.isDone \u003d done;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public String getName() {","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" return this.name;","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" public String setIsDone() {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" if (this.isDone) {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" return \"X\";","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" return \" \";","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" public void setTaskDone() {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" public void setTaskUndone() {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" * Returns Task in correct String format.","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" * @return Task in correct String format.","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" return \" [\" + setIsDone() + \"] \" + this.name;","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" public String getType() {","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" return \"general\";","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" public String getDone() {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" return Boolean.toString(this.isDone);","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"jannaleong":56}},{"path":"src/main/java/duke/tasks/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":" * Represents tasks with no deadline.","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"public class TodoTask extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" * Constructs TodoTask.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" public TodoTask(String name, boolean done) {","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" super(name, done);","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" public String getType() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" return \"T\";","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" return \" [T]\" + super.toString();","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"jannaleong":22}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"jannaleong":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.MainWindow\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"jannaleong":19}},{"path":"src/test/java/duke/DateFormatterTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import duke.others.DateFormatter;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"public class DateFormatterTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" private DateFormatter correctForm \u003d new DateFormatter(\"2019-10-15\");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" private DateFormatter incorrectForm \u003d new DateFormatter(\"2019-10-1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" public void isValidCorrectDateTest() {","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" assertEquals(true, correctForm.isValidDate());","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" public void isValidIncorrectDateTest() {","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" assertEquals(false, incorrectForm.isValidDate());","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" public void convertDateTest() {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" assertEquals(\"Oct 15 2019\", correctForm.convertDate());","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"jannaleong":30}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import duke.command.AddTaskCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import duke.command.ByeCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import duke.command.ListCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"import duke.command.UnmarkCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"import duke.others.BelleException;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"import duke.run.Parser;","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" private Parser parser \u003d new Parser();","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" public void parseDeleteTest() {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" assertEquals(true, parser.parse(\"delete 2\") instanceof DeleteCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" public void parseListTest() {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" assertEquals(true, parser.parse(\"List\") instanceof ListCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" public void parseByeTest() {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" assertEquals(true, parser.parse(\"bye\") instanceof ByeCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" public void parseMarkTest() {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" assertEquals(true, parser.parse(\"mark 2\") instanceof MarkCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" public void parseUnmarkTest() {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" assertEquals(true, parser.parse(\"unmark 2\") instanceof UnmarkCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" public void parseToDoTest() {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" assertEquals(true, parser.parse(\"todo 2\") instanceof AddTaskCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":" public void parseDeadlineTest() {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" assertEquals(true, parser.parse(\"deadline return book /by Sunday\\n\") instanceof AddTaskCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" public void parseEventTest() {","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" assertEquals(true, parser.parse(\"event project meeting /from Mon 2pm /to 4pm\") instanceof AddTaskCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"jannaleong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"jannaleong":91}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"bye","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"jannaleong":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":"jannaleong"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/duke/*.java","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":"java -classpath ../bin duke/Belle \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-31"},{"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":{"jannaleong":2,"-":36}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-04"},{"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":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" mainClass.set(\"duke/Belle\")","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" archiveBaseName \u003d \"belle1\"","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":"checkstyle {","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"jannaleong":22,"-":40}},{"path":"src/main/data/belleList.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"T , false , abc","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"T , false , abc","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"E , false , project meeting , Mon 2pm , 4pm","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"T , false , abc","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"E , true , project meeting , Mon 2pm , 4pm","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"T , false , abc","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"D , true , swim , 6pm","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"E , false , project meeting , Mon 2pm , 4pm","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"T , false , eat ban","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"E , true , pm event project meeting , Mon 2pm , 4pm","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"T , true , prawn","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"T , false , abc","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"T , false , fgh","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"D , false , apple , 6pm","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"T , false , abc","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"D , false , corgi , 6pm","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"jannaleong":16}},{"path":"src/main/java/duke/Belle.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.command.Command;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import duke.others.BelleException;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import duke.run.Parser;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import duke.run.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import duke.run.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" * Manages tasks on a list in a chatbot form.","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"public class Belle {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" private Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" private Ui ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" private Parser parser;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" private boolean isExit \u003d false;","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" * Constructs Belle.","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" * @param filePath Specifies filepath to store data.","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" public Belle(String filePath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" parser \u003d new Parser();","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" tasks \u003d new TaskList(storage.loadList());","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" ui.printError(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" tasks \u003d new TaskList(new ArrayList\u003c\u003e());","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" * Returns string response from Belle according to the","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" * specified command.","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" * @param input Users input command to Belle.","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" * @return String Belle\u0027s string response.","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" public String getResponse(String input) {","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" if (isExit) {","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" System.exit(0);","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" Command com \u003d parser.parse(input);","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" isExit \u003d com.isExit();","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" return com.execute(storage, tasks, ui);","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" return e.getMessage();","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":63}},{"path":"src/main/java/duke/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" * containing text from the speaker.","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" private Label dialog;","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" private void flip() {","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" db.flip();","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" return db;","lastModifiedDate":"2024-02-04"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-02-04"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"jannaleong":62}},{"path":"src/main/java/duke/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"public class Launcher {","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"jannaleong":13}},{"path":"src/main/java/duke/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" private Belle duke \u003d new Belle(\"src/main/data/belleList.txt\");","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" * Initiates application.","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" * @param stage Stage for application.","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" stage.show();","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"jannaleong":37}},{"path":"src/main/java/duke/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" private Belle duke;","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaUser.png\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaDuke.png\"));","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" * Initialises the Belle program with a greeting.","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" public void initialize() {","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" greetUser();","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" public void setDuke(Belle d) {","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" duke \u003d d;","lastModifiedDate":"2024-02-04"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-02-04"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2024-02-04"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-04"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-02-04"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-04"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-04"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2024-02-04"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-04"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-04"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2024-02-04"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" );","lastModifiedDate":"2024-02-04"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" userInput.clear();","lastModifiedDate":"2024-02-04"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" * Creates a dialogue box to greet the user the instant","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" * they enter the program.","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" @FXML","lastModifiedDate":"2024-02-04"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" private void greetUser() {","lastModifiedDate":"2024-02-04"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2024-02-04"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-04"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" DialogBox.getDukeDialog(","lastModifiedDate":"2024-02-04"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" ui.greet(),","lastModifiedDate":"2024-02-04"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" dukeImage","lastModifiedDate":"2024-02-04"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" )","lastModifiedDate":"2024-02-04"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" );","lastModifiedDate":"2024-02-04"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-02-04"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"jannaleong":74}},{"path":"src/main/java/duke/command/AddTaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.command;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.others.BelleException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import duke.run.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.run.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.DeadlineTask;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.EventTask;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.TodoTask;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" * Adds item to tasklist.","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"public class AddTaskCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" private String type;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" private String msg;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" * Constructs AddTaskCommand.","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" * @param type Type of command.","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" * @param msg The remaining part of input string,","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" * excluding the type.","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" public AddTaskCommand(String type, String msg) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" this.msg \u003d msg;","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" * Runs the command to add task to tasklist.","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" * @param s Storage containing data of","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" * previous program.","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" * @param t Tasklist of program.","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" * @param u Ui that handles user interactions.","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" public String execute(Storage s, TaskList t, Ui u) throws BelleException {","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" Task curr;","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" String printStatement;","lastModifiedDate":"2024-02-04"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" if (type.equals(\"todo\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" curr \u003d new TodoTask(msg.substring(5), false);","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"You did not specify a title for this todo task\");","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" } else if (type.equals(\"deadline\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" String[] deadlinelist \u003d msg.substring(9).split(\" /by \");","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" curr \u003d new DeadlineTask(deadlinelist[0], false, deadlinelist[1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"You did not specify \"","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" + \"all the required information for deadline task.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"You did not specify \"","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" + \"all the required information for deadline task.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" String[] eventlist \u003d msg.substring(6).split(\" /from \");","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" String[] startend \u003d eventlist[1].split(\" /to \");","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" curr \u003d new EventTask(eventlist[0], false, startend[0], startend[1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"You did not \"","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" + \"specify all the required information for deadline task.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"You did not \"","lastModifiedDate":"2024-02-05"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" + \"specify all the required information for deadline task.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" t.addTask(curr);","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" printStatement \u003d \"--------------------------\" + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":" + \"Got it. I\u0027ve added this task:\" + \"\\n\" + curr.toString()","lastModifiedDate":"2024-02-05"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"Now you have \" + t.getSize() + \" tasks in the list.\"","lastModifiedDate":"2024-02-05"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"--------------------------\";","lastModifiedDate":"2024-02-05"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":" s.save(t.getList());","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":" return printStatement;","lastModifiedDate":"2024-02-04"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":87}},{"path":"src/main/java/duke/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.command;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.run.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import duke.run.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" * Exits the program.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" * Constructs ByeCommand.","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" public ByeCommand() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" * Runs the command to say bye to user and exit","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" * the program.","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" * @param s Storage containing data of","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" * previous program.","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" * @param t Tasklist of program.","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" * @param u Ui that handles user interactions.","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" public String execute(Storage s, TaskList t, Ui u) {","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" return u.bye();","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" return true;","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":36}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.command;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.others.BelleException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import duke.run.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.run.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" * Performs different functions based on type of command.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Runs the command to complete its","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" * specific function.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" * @param s Storage containing data of","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" * previous program.","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" * @param t Tasklist of program.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" * @param u Ui that handles user interactions.","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" public abstract String execute(Storage s, TaskList t, Ui u) throws BelleException;","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" * Returns true if the program should exit","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" * after this belle.belle.command and false otherwise.","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" * @return Boolean value to exit program.","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" public abstract boolean isExit();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":31}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.command;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.others.BelleException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import duke.run.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.run.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" * Deletes item from list.","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" private String index;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" * Constructs DeleteCommand.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" * @param index The index of item to delete.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" public DeleteCommand(String index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" public String getIndex() {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" return index;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" public String execute(Storage s, TaskList t, Ui u) throws BelleException {","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" String printStatement;","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" Task deletetask \u003d t.getTask(Integer.valueOf(index) - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" t.removeTask(Integer.parseInt(index) - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" printStatement \u003d \"--------------------------\" + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" + \"Noted. I\u0027ve removed this task:\" + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" + deletetask.toString() + \"\\n\" + \"Now you have \"","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" + t.getSize() + \" tasks in the list.\" + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" + \"--------------------------\";","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" s.save(t.getList());","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" return printStatement;","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"This is not a valid number in my task list :(\");","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":50}},{"path":"src/main/java/duke/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.command;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.run.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import duke.run.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" * Finds specific task from list based on keyword.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" private String keyword;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" * Constructs FindCommand.","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" * @param keyword Specific word that user is searching for.","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public FindCommand(String keyword) {","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" public String execute(Storage s, TaskList t, Ui u) {","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" int index \u003d 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" String printStatement \u003d \"--------------------------\" + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" + \"Here are the matching tasks in your list:\" + \"\\n\";","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" for (int i \u003d 0; i \u003c t.getSize(); i++) {","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" Task currTask \u003d t.getTask(i);","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" if (currTask.getName().contains(this.keyword)) {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" printStatement +\u003d String.valueOf(index) + \".\" + t.getTask(i).toString() + \"\\n\";","lastModifiedDate":"2024-02-04"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" index +\u003d 1;","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" printStatement +\u003d \"--------------------------\";","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" return printStatement;","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"jannaleong":44}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.command;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.run.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import duke.run.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" * Lists out all items in the tasklist.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" * Constructs ListCommand.","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" public ListCommand() {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public String execute(Storage s, TaskList t, Ui u) {","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" int index \u003d 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" String printStatement \u003d \"--------------------------\" + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" + \"Here are the tasks in your list:\" + \"\\n\";","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" for (int i \u003d 0; i \u003c t.getSize(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" printStatement +\u003d String.valueOf(index) + \".\" + t.getTask(i).toString() + \"\\n\";","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" index +\u003d 1;","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" printStatement +\u003d \"--------------------------\";","lastModifiedDate":"2024-02-04"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" return printStatement;","lastModifiedDate":"2024-02-04"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":35}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.command;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.others.BelleException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import duke.run.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.run.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" * Marks items as done.","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" private String index;","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" * Constructs MarkCommand.","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" * @param index The index of item to mark as done.","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" public MarkCommand(String index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" public String execute(Storage s, TaskList t, Ui u) throws BelleException {","lastModifiedDate":"2024-02-04"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" Task doingtask \u003d t.getTask(Integer.valueOf(index) - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" doingtask.setTaskDone();","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" String printStatement \u003d \"--------------------------\" + \"\\n\"","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" + \"Nice! I have marked this task as done:\" + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" + doingtask.toString() + \"\\n\" + \"--------------------------\";","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" s.save(t.getList());","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" return printStatement;","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"This is not a valid number in my task list :(\");","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":44}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.command;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.others.BelleException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import duke.run.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.run.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import duke.run.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" * Marks items as undone.","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" private String index;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" * Constructs UnmarkCommand.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" * @param index The index of item to mark as undone.","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" public UnmarkCommand(String index) {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" this.index \u003d index;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" public String execute(Storage s, TaskList t, Ui u) throws BelleException {","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" Task doingtask \u003d t.getTask(Integer.valueOf(index) - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" doingtask.setTaskUndone();","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" String printStatement \u003d \"--------------------------\" + \"\\n\"","lastModifiedDate":"2024-02-04"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" + \"OK, I\u0027ve marked this task as not done yet:\" + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" + doingtask.toString() + \"\\n\" + \"--------------------------\";","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" s.save(t.getList());","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" return printStatement;","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"This is not a valid number in my task list :(\");","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" public boolean isExit() {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":43}},{"path":"src/main/java/duke/others/BelleException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.others;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":" * Encompasses all errors in belle.","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"public class BelleException extends Exception {","lastModifiedDate":"2024-01-21"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" * Constructs BelleException.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" * @param msg Error message.","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" public BelleException(String msg) {","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" super(msg);","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"jannaleong":15}},{"path":"src/main/java/duke/others/DateFormatter.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.others;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" * Convert dates to more readable form.","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"public class DateFormatter {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" private String date;","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Constructs DateFormatter.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" * @param date to convert.","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" public DateFormatter(String date) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" this.date \u003d date;","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" * Returns true if date is in valid format, else","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" * returns false.","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" * @return Boolean indicating if it is in a","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" * correct format.","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" public Boolean isValidDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" LocalDate currdate \u003d LocalDate.parse(this.date);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" return true;","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" // don\u0027t change the date in this case","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" * Returns date converted into a more","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" * readable format.","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" public String convertDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" LocalDate currdate \u003d LocalDate.parse(this.date);","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" return currdate.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":47}},{"path":"src/main/java/duke/run/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.run;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.command.AddTaskCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import duke.command.ByeCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.command.Command;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import duke.command.FindCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import duke.command.ListCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import duke.command.UnmarkCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import duke.others.BelleException;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Deals with making sense of the user command.","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"public class Parser {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" * Constructs Parser.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" public Parser() {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" * Returns correct belle.belle.command based on users","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" * input.","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" * @param input Users input.","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" * @return Correct belle.belle.command.","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" * @throws BelleException If an invalid belle.belle.command is entered.","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" public Command parse(String input) throws BelleException {","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" String[] inputlist \u003d input.split(\" \");","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" if (inputlist[0].equals(\"delete\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" return new DeleteCommand(inputlist[1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" } else if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" return new ByeCommand();","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" } else if (inputlist[0].equals(\"mark\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" return new MarkCommand(inputlist[1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" } else if (inputlist[0].equals(\"unmark\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" return new UnmarkCommand(inputlist[1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" } else if (inputlist[0].equals(\"todo\") || inputlist[0].equals(\"deadline\") || inputlist[0].equals(\"event\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" if (inputlist[0].equals(\"todo\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" return new AddTaskCommand(\"todo\", input);","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" } else if (inputlist[0].equals(\"deadline\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" return new AddTaskCommand(\"deadline\", input);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" return new AddTaskCommand(\"event\", input);","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" } else if (inputlist[0].equals(\"find\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" return new FindCommand(inputlist[1]);","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"Not a valid belle command\");","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":59}},{"path":"src/main/java/duke/run/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.run;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import duke.others.BelleException;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.DeadlineTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.EventTask;","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.TodoTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" * Deals with loading tasks from the file and saving tasks in the file.","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" private String filepath;","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" * Constructs Storage.","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" * @param filepath File containing storage data.","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" public Storage(String filepath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" * Returns list that was saved previously.","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" * @return ArrayList that was saved previously.","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" * @throws BelleException If an invalid item in HardDisk.","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" public ArrayList\u003cTask\u003e loadList() throws BelleException {","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" ArrayList\u003cTask\u003e currList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" File f \u003d new File(filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" if (!f.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" return currList;","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" Scanner listscanner \u003d new Scanner(f);","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" while (listscanner.hasNext()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" String currLine \u003d listscanner.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" String[] currTask \u003d currLine.split(\" , \");","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" if (currTask[0].equals(\"T\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" currList.add(new TodoTask(currTask[2], Boolean.valueOf(currTask[1])));","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" } else if (currTask[0].equals(\"D\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" currList.add(new DeadlineTask(currTask[2], Boolean.valueOf(currTask[1]),","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" currTask[3]));","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" } else if (currTask[0].equals(\"E\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" currList.add(new EventTask(currTask[2], Boolean.valueOf(currTask[1]),","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" currTask[3], currTask[4]));","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"Not valid item in HardDisk\");","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" return currList;","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"Sorry!! I\u0027m having trouble loading the list.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" * Saves list everytime it is updated.","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" * @throws BelleException If an invalid item that is being saved.","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" public void save(ArrayList\u003cTask\u003e currList) throws BelleException {","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":" File f \u003d new File(this.filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":" if (!f.exists()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" f.getParentFile().mkdirs();","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" f.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":" FileWriter fw \u003d new FileWriter(this.filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":" String currItem \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":" String div \u003d \" , \";","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":" for (Task i : currList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":" if (i.getType().equals(\"T\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" currItem \u003d i.getType() + div + i.getDone() + div + i.getName() + System.lineSeparator();","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":" } else if (i.getType().equals(\"D\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" DeadlineTask d \u003d (DeadlineTask) i;","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":" currItem \u003d d.getType() + div + d.getDone() + div + d.getName() + div","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"jannaleong"},"content":" + d.getDeadline() + System.lineSeparator();","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" } else if (i.getType().equals(\"E\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"jannaleong"},"content":" EventTask e \u003d (EventTask) i;","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":" currItem \u003d e.getType() + div + e.getDone() + div + e.getName()","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"jannaleong"},"content":" + div + e.getStart() + div + e.getEnd() + System.lineSeparator();","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"There is an invalid Item when trying to save list\");","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"jannaleong"},"content":" fw.write(currItem);","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"jannaleong"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"jannaleong"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"jannaleong"},"content":" throw new BelleException(\"Sorry!! I\u0027m having trouble saving the list.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":104}},{"path":"src/main/java/duke/run/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.run;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import duke.tasks.Task;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" * Contains the task list e.g., it has","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" * operations to add/delete tasks in the list.","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"public class TaskList {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" private ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" * Constructs TaskList.","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" public TaskList(ArrayList\u003cTask\u003e l) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" this.list \u003d l;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" public ArrayList\u003cTask\u003e getList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" return this.list;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" public Task getTask(int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" return list.get(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" * Removes task at a specific index from","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" * TaskList.","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" * @param i Index of item to remove.","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" public void removeTask(int i) {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" list.remove(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" public int getSize() {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" return list.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" * Add task to TaskList.","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" * @param t Task to add.","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" public void addTask(Task t) {","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" list.add(t);","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":51}},{"path":"src/main/java/duke/run/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.run;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":" * Deals with interactions with the user.","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"public class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" private Scanner sc;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" * Constructs Ui.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" public Ui() {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" this.sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" * Read users input.","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" * @return String of users input.","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" public String readInput() {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" return sc.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" * Prints welcome message.","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" public String greet() {","lastModifiedDate":"2024-02-04"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" return \"--------------------------\" + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" + \"Welcome!! I\u0027m Belle \u003c3.\"","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"What can I do for you?\"","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"--------------------------\";","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" * Prints goodbye message.","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" public String bye() {","lastModifiedDate":"2024-02-04"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" this.sc.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" return \"--------------------------\"","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" + \"\\n\" + \"Till next time!! Goodbye.\";","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" public void printError(String msg) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" System.out.println(msg);","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jannaleong":50}},{"path":"src/main/java/duke/tasks/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.others.DateFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":" * Represents tasks with deadline.","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" private String deadline;","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" * Constructs DeadlineTask.","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" public DeadlineTask(String name, boolean done, String deadline) {","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" super(name, done);","lastModifiedDate":"2024-01-21"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" DateFormatter d \u003d new DateFormatter(this.deadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" if (d.isValidDate()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" this.deadline \u003d d.convertDate();","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" public String getDeadline() {","lastModifiedDate":"2024-01-21"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" return this.deadline;","lastModifiedDate":"2024-01-21"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" public String getType() {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" return \"D\";","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" return \" [D]\" + super.toString() + \" (by: \" + deadline + \")\";","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"jannaleong":34}},{"path":"src/main/java/duke/tasks/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import duke.others.DateFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":" * Represents tasks with start and end time.","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"public class EventTask extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" private String start;","lastModifiedDate":"2024-01-21"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" private String end;","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" * Constructs EventTask.","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" public EventTask(String name, boolean done, String start, String end) {","lastModifiedDate":"2024-01-21"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" super(name, done);","lastModifiedDate":"2024-01-21"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" DateFormatter d1 \u003d new DateFormatter(this.start);","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" if (d1.isValidDate()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" this.start \u003d d1.convertDate();","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" DateFormatter d2 \u003d new DateFormatter(this.end);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" if (d2.isValidDate()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" this.end \u003d d2.convertDate();","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" public String getStart() {","lastModifiedDate":"2024-01-21"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" return this.start;","lastModifiedDate":"2024-01-21"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" public String getEnd() {","lastModifiedDate":"2024-01-21"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" return this.end;","lastModifiedDate":"2024-01-21"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" public String getType() {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" return \"E\";","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" return \" [E]\" + super.toString()","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" + \" (from: \" + this.start + \" \" + \"to: \" + end + \")\";","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"jannaleong":46}},{"path":"src/main/java/duke/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":" * Represents tasks.","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"public class Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" private boolean isDone \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" private String name \u003d \"\";","lastModifiedDate":"2024-01-20"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" * Constructs Task.","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" public Task(String name, boolean done) {","lastModifiedDate":"2024-01-20"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-20"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" this.isDone \u003d done;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public String getName() {","lastModifiedDate":"2024-01-20"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" return this.name;","lastModifiedDate":"2024-01-20"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" public String setIsDone() {","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" if (this.isDone) {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" return \"X\";","lastModifiedDate":"2024-01-20"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" } else {","lastModifiedDate":"2024-01-20"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" return \" \";","lastModifiedDate":"2024-01-20"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" public void setTaskDone() {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-20"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" public void setTaskUndone() {","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-20"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" * Returns Task in correct String format.","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" *","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" * @return Task in correct String format.","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":" return \" [\" + setIsDone() + \"] \" + this.name;","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" public String getType() {","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" return \"general\";","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" public String getDone() {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" return Boolean.toString(this.isDone);","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-20"}],"authorContributionMap":{"jannaleong":56}},{"path":"src/main/java/duke/tasks/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke.tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":" * Represents tasks with no deadline.","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"public class TodoTask extends Task {","lastModifiedDate":"2024-01-21"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":" /**","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" * Constructs TodoTask.","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" */","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" public TodoTask(String name, boolean done) {","lastModifiedDate":"2024-01-21"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" super(name, done);","lastModifiedDate":"2024-01-21"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-21"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" public String getType() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" return \"T\";","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" @Override","lastModifiedDate":"2024-01-21"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" public String toString() {","lastModifiedDate":"2024-01-21"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" return \" [T]\" + super.toString();","lastModifiedDate":"2024-01-21"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-21"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-21"}],"authorContributionMap":{"jannaleong":22}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"jannaleong":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.MainWindow\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-04"}],"authorContributionMap":{"jannaleong":19}},{"path":"src/test/java/duke/DateFormatterTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import duke.others.DateFormatter;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"public class DateFormatterTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":" private DateFormatter correctForm \u003d new DateFormatter(\"2019-10-15\");","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":" private DateFormatter incorrectForm \u003d new DateFormatter(\"2019-10-1\");","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":" public void isValidCorrectDateTest() {","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" assertEquals(true, correctForm.isValidDate());","lastModifiedDate":"2024-01-29"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" public void isValidIncorrectDateTest() {","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" assertEquals(false, incorrectForm.isValidDate());","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" public void convertDateTest() {","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":" assertEquals(\"Oct 15 2019\", correctForm.convertDate());","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"jannaleong":30}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"jannaleong"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"jannaleong"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jannaleong"},"content":"import duke.command.AddTaskCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jannaleong"},"content":"import duke.command.ByeCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jannaleong"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jannaleong"},"content":"import duke.command.ListCommand;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"jannaleong"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jannaleong"},"content":"import duke.command.UnmarkCommand;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"jannaleong"},"content":"import duke.others.BelleException;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"jannaleong"},"content":"import duke.run.Parser;","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"jannaleong"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"jannaleong"},"content":" private Parser parser \u003d new Parser();","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":20,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":21,"author":{"gitId":"jannaleong"},"content":" public void parseDeleteTest() {","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":" assertEquals(true, parser.parse(\"delete 2\") instanceof DeleteCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":24,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":25,"author":{"gitId":"jannaleong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":26,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":27,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":29,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":30,"author":{"gitId":"jannaleong"},"content":" public void parseListTest() {","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":32,"author":{"gitId":"jannaleong"},"content":" assertEquals(true, parser.parse(\"List\") instanceof ListCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":33,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":34,"author":{"gitId":"jannaleong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":35,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":36,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":38,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":39,"author":{"gitId":"jannaleong"},"content":" public void parseByeTest() {","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"jannaleong"},"content":" assertEquals(true, parser.parse(\"bye\") instanceof ByeCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":43,"author":{"gitId":"jannaleong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":44,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":48,"author":{"gitId":"jannaleong"},"content":" public void parseMarkTest() {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"jannaleong"},"content":" assertEquals(true, parser.parse(\"mark 2\") instanceof MarkCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":51,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":52,"author":{"gitId":"jannaleong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":53,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":56,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":57,"author":{"gitId":"jannaleong"},"content":" public void parseUnmarkTest() {","lastModifiedDate":"2024-01-29"},{"lineNumber":58,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":59,"author":{"gitId":"jannaleong"},"content":" assertEquals(true, parser.parse(\"unmark 2\") instanceof UnmarkCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"jannaleong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":62,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":63,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":64,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":65,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":66,"author":{"gitId":"jannaleong"},"content":" public void parseToDoTest() {","lastModifiedDate":"2024-01-29"},{"lineNumber":67,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":68,"author":{"gitId":"jannaleong"},"content":" assertEquals(true, parser.parse(\"todo 2\") instanceof AddTaskCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"jannaleong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":71,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":72,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"jannaleong"},"content":" public void parseDeadlineTest() {","lastModifiedDate":"2024-01-29"},{"lineNumber":76,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":77,"author":{"gitId":"jannaleong"},"content":" assertEquals(true, parser.parse(\"deadline return book /by Sunday\\n\") instanceof AddTaskCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":78,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"jannaleong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"jannaleong"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":83,"author":{"gitId":"jannaleong"},"content":" @Test","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"jannaleong"},"content":" public void parseEventTest() {","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"jannaleong"},"content":" try {","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"jannaleong"},"content":" assertEquals(true, parser.parse(\"event project meeting /from Mon 2pm /to 4pm\") instanceof AddTaskCommand);","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"jannaleong"},"content":" } catch (BelleException e) {","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"jannaleong"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":90,"author":{"gitId":"jannaleong"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":91,"author":{"gitId":"jannaleong"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"jannaleong":91}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jannaleong"},"content":"bye","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"jannaleong":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":"jannaleong"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/duke/*.java","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"jannaleong"},"content":"java -classpath ../bin duke/Belle \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-31"},{"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":{"jannaleong":2,"-":36}}] diff --git a/jannaleong_ip_master/commits.json b/jannaleong_ip_master/commits.json index f562a8c4..e68dcdbd 100644 --- a/jannaleong_ip_master/commits.json +++ b/jannaleong_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jannaleong":[{"date":"2024-01-20","commitResults":[{"hash":"b56b8d6f0fffea4714f632750ccc2a0b0f11f5a2","isMergeCommit":false,"messageTitle":"added skeleton greeting (level 0)","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"b628cf9e2e061099bb6841c98047885b0bff0c78","isMergeCommit":false,"messageTitle":"mimics user and exits when user inputs bye","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"aa2a2b5ee6f815224d3b4b50fc3f2891451fa4b1","isMergeCommit":false,"messageTitle":"adds inputs to list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"35516ec89c5c473c5c5345eef46d453eb70fa6c3","isMergeCommit":false,"messageTitle":"correction to task level 2 to be able to take in a phrase instead of only words","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"cb192dc49a7d8fa04fbd3bbd67c9c7686f6f9a35","isMergeCommit":false,"messageTitle":"added task class, can mark and unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":4}}}]},{"date":"2024-01-21","commitResults":[{"hash":"c4057a503659f61a3acaaabc78a81c15fcc0def0","isMergeCommit":false,"messageTitle":"added subclasses of task and edited duke to exhibit polymorphism","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":9}}},{"hash":"006a1cf7866ddfad92ae58149983df0f9bb5af44","isMergeCommit":false,"messageTitle":"handle exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":108,"deletions":77}}},{"hash":"e29f82e53b377f5078dee05c1714f982ba277731","isMergeCommit":false,"messageTitle":"added delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"e03c5a2941972394cdf8b39a554362a138ebb8b0","isMergeCommit":false,"messageTitle":"using automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1}}}]},{"date":"2024-01-25","commitResults":[{"hash":"0981ede5e1e1cade4acce32c1b1f5515993f9fa7","isMergeCommit":false,"messageTitle":"extracted out code into respective methods to make it neater. also added some more catch statements to catch more exceptions.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":88}}},{"hash":"38e7908184ce3c8dd11dbc42ea1e8c32ffcc0f98","isMergeCommit":false,"messageTitle":"made some methods in Duke.java private","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":5}}}]},{"date":"2024-01-28","commitResults":[{"hash":"8badf4f199f451fd2ed28b2e54f8b1f0ace1c24b","isMergeCommit":false,"messageTitle":"Add HardDisk.java to save the data from running Duke and reload previous data","messageBody":"Duke has an additional functionality of allowing data to be saved and reloaded.\n\nHardDisk has a loadList and save function that allows data to be reloaded\nand saved respectively.\n\nFunctions is seperated from the rest of the code within the harddisk class\nas they have a common link in which they both utilise stored data\n","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":123,"deletions":5}}},{"hash":"f8e7661e57f0f40cf48c7d1a1e4f3f461a199fb9","isMergeCommit":false,"messageTitle":"Add DateFormatter.java to convert dates in the format yyyy-mm-dd into a more readable form","messageBody":"This will make the dates more readable for the user.\n\nThe DateFormatter class is used in the constructors of EventTask and DeadlineTask to\nconvert the dates.\n\nThis is so a more readable date is displayed to the user.\n","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":44,"deletions":0}}},{"hash":"8530b69c1a6e7422589b2eed0473257808e8f42a","isMergeCommit":false,"messageTitle":"Restructure files to have more OOP","messageBody":"Everything exists in one file which is messy. Need to seperate file into Ui, Storage, Parser,\nTaskList so it is neater.\n\nSeperate code into these different classes. Also seperate commands into classes\nthat inherit from 1 abstract command class.\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":6},"java":{"insertions":361,"deletions":194}}},{"hash":"ca15a64bd7f7896b0dd9b49216cf375bb97b0b0c","isMergeCommit":false,"messageTitle":"Restructure files to place in suitable packages","messageBody":"Without packages, files are messy and classes are hard to find.\n\nSeparated into packages command, run, tasks, and others.\n\nWith packages workflow is neater.\n","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":95,"deletions":18}}},{"hash":"3e0a597e1bd9d3a1f9e9089e0859b09b5e7047dc","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":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"3f61622a9bb73c3144b69516bd03987019790328","isMergeCommit":false,"messageTitle":"Add Junit test cases for DateFormatter and Parser classes.","messageBody":"This automates testing to make testing faster.\n\nAdd Junit tests in the src/java/test folder for greater convenience.\n","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":112,"deletions":0}}},{"hash":"ad2dbe81346da7bb52ea8be2f6e918c7f517aec3","isMergeCommit":false,"messageTitle":"Build jar application","messageBody":"Allow users to conveniently download the app and use.\n\nChange the build.gradle file to set main class as Belle.java.\n","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"558f9edfe74e7435707ff63d033f47ac8dbd5c60","isMergeCommit":false,"messageTitle":"Add javadocs to public methods.","messageBody":"Able to easily read the functionality of each method.\n\nAdded javadocs only to public methods which are not overriding methods\nor getters and setters.\n\nThis reduces redundant work.\n","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":128,"deletions":15}}},{"hash":"9a89a96778ee1dff2470ec1285404580999e1ab0","isMergeCommit":false,"messageTitle":"Edit files to fit coding standard.","messageBody":"Without standardising, hard to work in a group with different coding styles.\n\nFollow style guide specified by course.\n","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":49,"deletions":40}}},{"hash":"09495fa2b0eeccbb5323476deda59b893fe05b3e","isMergeCommit":false,"messageTitle":"Add FindCommand class that allows user to find tasks by keyword.","messageBody":"This enables users to find specific tasks faster.\n\nCreate a FindCommand class that can print the correct task.\n\nThis class maintains OOP principles.\n","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":39,"deletions":0}}},{"hash":"9f804fcfb303eeea62d30731f715618bfa263df7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"* branch-A-CodingStandard:\n Edit files to fit coding standard.\n\n# Conflicts:\n#\tsrc/main/java/run/TaskList.java\n","fileTypesAndContributionMap":{}},{"hash":"8e7faa03e4b8df7524c0d33a11591c111bb7f09d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"* branch-Level-9:\n Add FindCommand class that allows user to find tasks by keyword.\n\n# Conflicts:\n#\tsrc/main/data/belleList.txt\n","fileTypesAndContributionMap":{}},{"hash":"d3ccf9a66bd43e72205652c9e395f3a233ad248e","isMergeCommit":false,"messageTitle":"Add missing import statement for command.FindCommand.","messageBody":"Does not function without FindCommand Import.\n","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2},"java":{"insertions":1,"deletions":0}}}]},{"date":"2024-01-31","commitResults":[{"hash":"b1cb0b8523fa3d786de79b1711f8fbdedc34490a","isMergeCommit":false,"messageTitle":"Clean up code : exception handling.","messageBody":"Standardise code to only catch BelleException.\n\nThere are inconsistencies across the files where some files catch both IOExceptions and BelleExceptions\nand others only catch BelleException. It is messy and hard to keep track of.\n","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":53,"deletions":60}}},{"hash":"9a7957add663e23bb9a17588eacce2b49350720c","isMergeCommit":false,"messageTitle":"Refactor files","messageBody":"Belle.java is not assigned in a package.\n\nPlace Belle.java in package duke.\n\nIt is a requirement for classes to be in a package.\n","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"txt":{"insertions":5,"deletions":6},"java":{"insertions":93,"deletions":97},"sh":{"insertions":2,"deletions":2}}},{"hash":"21cdf813b997fbc0198c8ac9adb13e0a63edb5a6","isMergeCommit":false,"messageTitle":"Add more javadocs.","messageBody":"Only some methods and classes have javadocs.\n\nAdd more javadocs so code will be clearer.\n","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":145,"deletions":30}}}]},{"date":"2024-02-04","commitResults":[{"hash":"5702427223aa246e2dcd255c53a2089b7772998d","isMergeCommit":false,"messageTitle":"Add GUI to project","messageBody":"Gui version of the project has the same functionalities as the text-based ui.\n\nText-based ui can be difficult for the user to use as the output may be small.\nFurthermore, text is in a single colour which is not exciting to the user.\n\nGui provides a more user-friendly platform for users to interact\nwith the program.\n\nLet\u0027s apply Gui using a simpler method using JavaFx and gradle.\n","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":20,"deletions":0},"txt":{"insertions":5,"deletions":2},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":270,"deletions":63}}}]},{"date":"2024-02-05","commitResults":[{"hash":"b87e3b0bc54c95b3f334fe666632345f9cc5053f","isMergeCommit":false,"messageTitle":"Revised code with checkstyle","messageBody":"Code does not follow the coding standard strictly.\n\nWould lead to inconsistencies in code if the project were\nto be done with different members.\n\nLet\u0027s apply checkstyle to raise the violations in coding standard.\n\nUsing this method, violations are raised efficiently and are fixed.\n","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":115,"deletions":160}}}]}]},"authorFileTypeContributionMap":{"jannaleong":{"java":1190,"md":0,"fxml":35,"sh":2,"bat":0,"gradle":22,"txt":17}},"authorContributionVariance":{"jannaleong":56882.36},"authorDisplayNameMap":{"jannaleong":"CS2103T-W10-2 LEON..ANNA"}} +{"authorDailyContributionsMap":{"jannaleong":[{"date":"2024-01-20","commitResults":[{"hash":"b56b8d6f0fffea4714f632750ccc2a0b0f11f5a2","isMergeCommit":false,"messageTitle":"added skeleton greeting (level 0)","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":6}}},{"hash":"b628cf9e2e061099bb6841c98047885b0bff0c78","isMergeCommit":false,"messageTitle":"mimics user and exits when user inputs bye","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}},{"hash":"aa2a2b5ee6f815224d3b4b50fc3f2891451fa4b1","isMergeCommit":false,"messageTitle":"adds inputs to list","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":1}}},{"hash":"35516ec89c5c473c5c5345eef46d453eb70fa6c3","isMergeCommit":false,"messageTitle":"correction to task level 2 to be able to take in a phrase instead of only words","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"cb192dc49a7d8fa04fbd3bbd67c9c7686f6f9a35","isMergeCommit":false,"messageTitle":"added task class, can mark and unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":4}}}]},{"date":"2024-01-21","commitResults":[{"hash":"c4057a503659f61a3acaaabc78a81c15fcc0def0","isMergeCommit":false,"messageTitle":"added subclasses of task and edited duke to exhibit polymorphism","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":92,"deletions":9}}},{"hash":"006a1cf7866ddfad92ae58149983df0f9bb5af44","isMergeCommit":false,"messageTitle":"handle exceptions","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":108,"deletions":77}}},{"hash":"e29f82e53b377f5078dee05c1714f982ba277731","isMergeCommit":false,"messageTitle":"added delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"e03c5a2941972394cdf8b39a554362a138ebb8b0","isMergeCommit":false,"messageTitle":"using automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1}}}]},{"date":"2024-01-25","commitResults":[{"hash":"0981ede5e1e1cade4acce32c1b1f5515993f9fa7","isMergeCommit":false,"messageTitle":"extracted out code into respective methods to make it neater. also added some more catch statements to catch more exceptions.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":88}}},{"hash":"38e7908184ce3c8dd11dbc42ea1e8c32ffcc0f98","isMergeCommit":false,"messageTitle":"made some methods in Duke.java private","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":5}}}]},{"date":"2024-01-28","commitResults":[{"hash":"8badf4f199f451fd2ed28b2e54f8b1f0ace1c24b","isMergeCommit":false,"messageTitle":"Add HardDisk.java to save the data from running Duke and reload previous data","messageBody":"Duke has an additional functionality of allowing data to be saved and reloaded.\n\nHardDisk has a loadList and save function that allows data to be reloaded\nand saved respectively.\n\nFunctions is seperated from the rest of the code within the harddisk class\nas they have a common link in which they both utilise stored data\n","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":123,"deletions":5}}},{"hash":"f8e7661e57f0f40cf48c7d1a1e4f3f461a199fb9","isMergeCommit":false,"messageTitle":"Add DateFormatter.java to convert dates in the format yyyy-mm-dd into a more readable form","messageBody":"This will make the dates more readable for the user.\n\nThe DateFormatter class is used in the constructors of EventTask and DeadlineTask to\nconvert the dates.\n\nThis is so a more readable date is displayed to the user.\n","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":44,"deletions":0}}},{"hash":"8530b69c1a6e7422589b2eed0473257808e8f42a","isMergeCommit":false,"messageTitle":"Restructure files to have more OOP","messageBody":"Everything exists in one file which is messy. Need to seperate file into Ui, Storage, Parser,\nTaskList so it is neater.\n\nSeperate code into these different classes. Also seperate commands into classes\nthat inherit from 1 abstract command class.\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":6},"java":{"insertions":361,"deletions":194}}},{"hash":"ca15a64bd7f7896b0dd9b49216cf375bb97b0b0c","isMergeCommit":false,"messageTitle":"Restructure files to place in suitable packages","messageBody":"Without packages, files are messy and classes are hard to find.\n\nSeparated into packages command, run, tasks, and others.\n\nWith packages workflow is neater.\n","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":1},"java":{"insertions":95,"deletions":18}}},{"hash":"3e0a597e1bd9d3a1f9e9089e0859b09b5e7047dc","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":{}}]},{"date":"2024-01-29","commitResults":[{"hash":"3f61622a9bb73c3144b69516bd03987019790328","isMergeCommit":false,"messageTitle":"Add Junit test cases for DateFormatter and Parser classes.","messageBody":"This automates testing to make testing faster.\n\nAdd Junit tests in the src/java/test folder for greater convenience.\n","tags":["A-JUnit"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":112,"deletions":0}}},{"hash":"ad2dbe81346da7bb52ea8be2f6e918c7f517aec3","isMergeCommit":false,"messageTitle":"Build jar application","messageBody":"Allow users to conveniently download the app and use.\n\nChange the build.gradle file to set main class as Belle.java.\n","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"558f9edfe74e7435707ff63d033f47ac8dbd5c60","isMergeCommit":false,"messageTitle":"Add javadocs to public methods.","messageBody":"Able to easily read the functionality of each method.\n\nAdded javadocs only to public methods which are not overriding methods\nor getters and setters.\n\nThis reduces redundant work.\n","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":128,"deletions":15}}},{"hash":"9a89a96778ee1dff2470ec1285404580999e1ab0","isMergeCommit":false,"messageTitle":"Edit files to fit coding standard.","messageBody":"Without standardising, hard to work in a group with different coding styles.\n\nFollow style guide specified by course.\n","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":49,"deletions":40}}},{"hash":"09495fa2b0eeccbb5323476deda59b893fe05b3e","isMergeCommit":false,"messageTitle":"Add FindCommand class that allows user to find tasks by keyword.","messageBody":"This enables users to find specific tasks faster.\n\nCreate a FindCommand class that can print the correct task.\n\nThis class maintains OOP principles.\n","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":1},"java":{"insertions":39,"deletions":0}}},{"hash":"9f804fcfb303eeea62d30731f715618bfa263df7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"* branch-A-CodingStandard:\n Edit files to fit coding standard.\n\n# Conflicts:\n#\tsrc/main/java/run/TaskList.java\n","fileTypesAndContributionMap":{}},{"hash":"8e7faa03e4b8df7524c0d33a11591c111bb7f09d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"* branch-Level-9:\n Add FindCommand class that allows user to find tasks by keyword.\n\n# Conflicts:\n#\tsrc/main/data/belleList.txt\n","fileTypesAndContributionMap":{}},{"hash":"d3ccf9a66bd43e72205652c9e395f3a233ad248e","isMergeCommit":false,"messageTitle":"Add missing import statement for command.FindCommand.","messageBody":"Does not function without FindCommand Import.\n","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":2},"java":{"insertions":1,"deletions":0}}}]},{"date":"2024-01-31","commitResults":[{"hash":"b1cb0b8523fa3d786de79b1711f8fbdedc34490a","isMergeCommit":false,"messageTitle":"Clean up code : exception handling.","messageBody":"Standardise code to only catch BelleException.\n\nThere are inconsistencies across the files where some files catch both IOExceptions and BelleExceptions\nand others only catch BelleException. It is messy and hard to keep track of.\n","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":2},"java":{"insertions":53,"deletions":60}}},{"hash":"9a7957add663e23bb9a17588eacce2b49350720c","isMergeCommit":false,"messageTitle":"Refactor files","messageBody":"Belle.java is not assigned in a package.\n\nPlace Belle.java in package duke.\n\nIt is a requirement for classes to be in a package.\n","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"txt":{"insertions":5,"deletions":6},"java":{"insertions":93,"deletions":97},"sh":{"insertions":2,"deletions":2}}},{"hash":"21cdf813b997fbc0198c8ac9adb13e0a63edb5a6","isMergeCommit":false,"messageTitle":"Add more javadocs.","messageBody":"Only some methods and classes have javadocs.\n\nAdd more javadocs so code will be clearer.\n","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":145,"deletions":30}}}]},{"date":"2024-02-04","commitResults":[{"hash":"5702427223aa246e2dcd255c53a2089b7772998d","isMergeCommit":false,"messageTitle":"Add GUI to project","messageBody":"Gui version of the project has the same functionalities as the text-based ui.\n\nText-based ui can be difficult for the user to use as the output may be small.\nFurthermore, text is in a single colour which is not exciting to the user.\n\nGui provides a more user-friendly platform for users to interact\nwith the program.\n\nLet\u0027s apply Gui using a simpler method using JavaFx and gradle.\n","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":20,"deletions":0},"txt":{"insertions":5,"deletions":2},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":270,"deletions":63}}}]},{"date":"2024-02-05","commitResults":[{"hash":"b87e3b0bc54c95b3f334fe666632345f9cc5053f","isMergeCommit":false,"messageTitle":"Revised code with checkstyle","messageBody":"Code does not follow the coding standard strictly.\n\nWould lead to inconsistencies in code if the project were\nto be done with different members.\n\nLet\u0027s apply checkstyle to raise the violations in coding standard.\n\nUsing this method, violations are raised efficiently and are fixed.\n","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":115,"deletions":160}}}]},{"date":"2024-02-07","commitResults":[{"hash":"2a5d1f8cf67f2e6f38282873bb45e8ae62c3fe34","isMergeCommit":false,"messageTitle":"Add javadocs for main.java file","messageBody":"Start method in main.java file does not have javadocs\nto provide a clear explanation of its purpose.\n\nThis causes confusion on the methods functionality.\n\nJavadocs would allow other coders and users to understand\nthe code clearly.\n\nLet\u0027s write javadocs for the start method.\n","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"c49e1eecc193b03ec4de576aca9e4d8bf914e87f","isMergeCommit":false,"messageTitle":"Add javadocs for mainwindow.java file","messageBody":"Greetuser method does not have javadocs\nto provide a clear explanation of its purpose.\n\nThis causes confusion on the methods functionality.\n\nJavadocs would allow other coders and users to understand\nthe code clearly.\n\nLet\u0027s write javadocs for the greetuser method.\n","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}},{"hash":"159336b7c4b6fc64243cfa033c6ee1130ee7ac8f","isMergeCommit":false,"messageTitle":"Add javadocs for Belle.java file","messageBody":" Getresponse method does not have javadocs\nto provide a clear explanation of its purpose.\n\nThis causes confusion on the methods functionality.\n\nJavadocs would allow other coders and users to understand\nthe code clearly.\n\nLet\u0027s write javadocs for the getresponse method.\n","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"e4d10c51563b988eea4e262eea09ee32f0470214","isMergeCommit":false,"messageTitle":"Add javadocs for addtodo.java file","messageBody":"Execute method does not have javadocs\nto provide a clear explanation of its purpose.\n\nThis causes confusion on the methods functionality.\n\nJavadocs would allow other coders and users to understand\nthe code clearly.\n\nLet\u0027s write javadocs for the execute method.\n","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":1}}},{"hash":"7f2f9b80c2904c30d2921187deaf3954fb883bc9","isMergeCommit":false,"messageTitle":"Add javadocs for byecommand.java file","messageBody":"execute method does not have javadocs\nto provide a clear explanation of its purpose.\n\nThis causes confusion on the methods functionality.\n\nJavadocs would allow other coders and users to understand\nthe code clearly.\n\nLet\u0027s write javadocs for the execute method.\n","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"jannaleong":{"java":1224,"md":0,"fxml":35,"sh":2,"bat":0,"gradle":22,"txt":17}},"authorContributionVariance":{"jannaleong":53310.445},"authorDisplayNameMap":{"jannaleong":"CS2103T-W10-2 LEON..ANNA"}} diff --git a/jieqiboh_ip_master/authorship.json b/jieqiboh_ip_master/authorship.json index e9f4b052..473da1ef 100644 --- a/jieqiboh_ip_master/authorship.json +++ b/jieqiboh_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":"jieqiboh"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"checkstyle {","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" mainClass.set(\"duke.Launcher\")","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" archiveBaseName \u003d \"steve\"","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"jieqiboh":22,"-":40}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"D | 1 | return book | Sunday","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"T | 1 | hi","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"T | 0 | hi","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"E | 1 | long project meeting | 01 May 2000 00:01 | 01 May 2020 10:00","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"T | 0 | buy bread","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"T | 0 | buy bread","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"jieqiboh":6}},{"path":"data/duketest.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"E | 0 | project meeting | 01 October 2023 00:00 | 01 December 2024 23:59","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"E | 1 | long project meeting | 01 May 2000 00:01 | 01 May 2020 10:00","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"D | 0 | return book | 01 May 2020 10:00","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"D | 0 | do homework | no idea :-p","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"E | 0 | project meeting 2 | Mon 2pm | 5pm","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"D | 0 | return book | today","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jieqiboh":6}},{"path":"duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"E | 0 | project meeting | 01 October 2023 00:00 | 01 December 2024 23:59","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"E | 1 | long project meeting | 01 May 2000 00:01 | 01 May 2020 10:00","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"D | 0 | return book | 01 May 2020 10:00","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"D | 0 | do homework | no idea :-p","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"E | 0 | project meeting 2 | Mon 2pm | 5pm","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"D | 0 | return book | today","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jieqiboh":6}},{"path":"src/main/java/duke/Dates.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" * Dates class handles validation and formatting of strings in input and database format.","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"public class Dates {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" // Looks for pattern \"dd/MM/yyyy HHmm\", used for input purposes","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" static final Pattern DATE_INPUT_PATTERN \u003d Pattern.compile(\"^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[0-2])/\"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" + \"(\\\\d{4}) (\\\\d{4}$)\");","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" // Looks for pattern \"dd Month yyyy HH:mm\", used for storing in db and output purposes","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" static final Pattern DATE_DB_PATTERN \u003d Pattern.compile(\"\\\\d{1,2} \"","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" + \"(January|February|March|April|May|June|July|August|September|October|November|December)\"","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" + \" \\\\d{4} \\\\d{2}:\\\\d{2}\");","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" // Used for parsing datetime string in input format, to a datetime object","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" static final DateTimeFormatter DATE_INPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" // Used for parsing a datetime string in db format, to a datetime object","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" static final DateTimeFormatter DATE_DB_FORMATTER \u003d DateTimeFormatter.ofPattern(\"dd MMMM yyyy HH:mm\");","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" * Validates an input string and returns true if it matches.","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" * @param date is the date in \"dd/MM/yyyy HHmm\" format.","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" * @return boolean if it matches.","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidInputDate(String date) {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" Matcher matcher \u003d Dates.DATE_INPUT_PATTERN.matcher(date);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" return matcher.matches();","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" * Checks that the db string date matches the db date pattern.","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" * @param date is the date in \"dd Month yyyy HH:mm\" format.","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" * @return True if the date String matches the pattern.","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidDbDate(String date) {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" Matcher matcher \u003d DATE_DB_PATTERN.matcher(date);","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" return matcher.matches();","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" * Creates a datetime object, using the input string formatter.","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" * @param date which is a string that has a valid input pattern.","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" * @return LocalDateTime class based on the date String.","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" public static LocalDateTime inputStr2DateTime(String date) {","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" return LocalDateTime.parse(date, DATE_INPUT_FORMATTER);","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Could not parse date\" + e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" return null;","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" * Creates a datetime object, using the db string formatter.","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" * @param date which is a string that has a valid db pattern.","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" * @return LocalDateTime class based on the date String.","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" public static LocalDateTime dbStr2DateTime(String date) {","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" return LocalDateTime.parse(date, DATE_DB_FORMATTER);","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Could not parse date\" + e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" return null;","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" * Converts a datetime object to its database string representation.","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" * @param datetime object","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" * @return String representation for database dates.","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" public static String dateTime2DbStr(LocalDateTime datetime) {","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" return datetime.format(Dates.DATE_DB_FORMATTER);","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Failed to format datetime: \" + e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" return null;","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"jieqiboh":95}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":" * Deadline is a type of task with a by field that denotes by when it has to be completed.","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" protected String by;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" * Default constructor, isDone set to false.","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" * @param description of Deadline","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" * @param by is the end of the deadline","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" * Overloaded constructor, isDone can be set.","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" * @param description of Deadline","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" * @param isDone sets the completion status of Deadline","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" * @param by is the end of the deadline","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" public Deadline(String description, Boolean isDone, String by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" * Overloaded constructor.","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" * @param description of Deadline","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" * @param by is the end of the deadline","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" super(description);","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" this.by \u003d Dates.dateTime2DbStr(by);","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" * Converts the database representation of Deadline to a Deadline Task.","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" * @param dbDeadline the string rep of Deadline in the database.","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" * @return Task the Deadline Task object","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" public static Deadline db2Deadline(String dbDeadline) {","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" // D | 0 | return book | June 6th","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" String[] params \u003d dbDeadline.split(\" \\\\| \");","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" Boolean isDone \u003d params[1].equals(\"1\") ? true : false; // if \"1\", means isDone","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d params[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" String by \u003d params[3];","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" return new Deadline(desc, isDone, by);","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" * Converts a Deadline Task to the database representation of Deadline.","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" * @param deadlineTask the Deadline Task object","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" * @return Task the string rep of Deadline in the database","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" public static String deadline2Db(Deadline deadlineTask) {","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" // D | 0 | return book | June 6th","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" String done \u003d deadlineTask.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d deadlineTask.description;","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" String by \u003d deadlineTask.by;","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" return \"D\" + \" | \" + done + \" | \" + desc + \" | \" + by;","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" String dbDeadline \u003d \"D | 0 | return book | June 6th\";","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" Deadline deadlineTask \u003d Deadline.db2Deadline(dbDeadline);","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" deadlineTask.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" System.out.println(deadlineTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" System.out.println(Deadline.deadline2Db(deadlineTask));","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" // Test creating a deadline with valid date","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d \"Buy Bread\";","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" String validInputDate1 \u003d \"15/01/2023 1430\";","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" if (Dates.isValidInputDate(validInputDate1)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" LocalDateTime validDate1 \u003d Dates.inputStr2DateTime(validInputDate1);","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" Deadline d \u003d new Deadline(desc, validDate1); // Create date object","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" d.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" System.out.println(Deadline.deadline2Db(d));","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jieqiboh":97}},{"path":"src/main/java/duke/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.shape.Circle;","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" * containing text from the speaker.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" @FXML","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" private Label dialog;","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" @FXML","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" final Circle clip \u003d new Circle(50, 50, 50);","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" displayPicture.setClip(clip);","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" private void flip() {","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" db.flip();","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" return db;","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"jieqiboh":64}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.io.OutputStream;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import java.io.PrintStream;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import java.util.List;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" * Duke is a simple task manager app","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" * The class does the initial setup for components for the main application","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" // public static final String DB_PATH \u003d \"../data/duke.txt\"; // uncommment for runtest.sh","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" public static final String DB_PATH \u003d \"data/duke.txt\";","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" private Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" private TaskList myTasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" private Ui ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" private Parser parser;","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" * Initialises a Duke instance, and loads tasks and components before starting up the app","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" public Duke() {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" storage \u003d new Storage(DB_PATH);","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" myTasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" parser \u003d new Parser(new Scanner(System.in), this.myTasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" myTasks \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" * Given a user input string, invokes the parser and returns the output in the UI.","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" String getResponse(String input) {","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" // Create a StringBuilder to hold the output","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" StringBuilder outputBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" // Create a PrintStream that writes to the StringBuilder","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" PrintStream ps \u003d new PrintStream(new OutputStream() {","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" public void write(int b) {","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" outputBuilder.append((char) b);","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" });","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" // Save the original System.out","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" PrintStream prev \u003d System.out;","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" // Set the System.out to the custom PrintStream","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" System.setOut(ps);","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" // process the user input","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" this.parser.processCmd(input);","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" this.save();","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" } finally {","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" // Restore the original System.out","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" System.setOut(prev);","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" // Return the captured output","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" return outputBuilder.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" * Saves the current tasklist to the hard drive.","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" private void save() {","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" List\u003cString\u003e lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" for (Task t : this.myTasks.taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" String stringTask \u003d TaskList.task2Db(t);","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" lines.add(stringTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" this.storage.writeLinesToFile(lines);","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" * Starts up the bot and sets up the Parser and UI.","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" public void run() {","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" String greeting \u003d \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" + \" Hello! I\u0027m steve\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" + \" What can I do for you?\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" + \"____________________________________________________________\";","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" String goodbye \u003d \" Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" + \"____________________________________________________________\";","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" ui.greet();","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" Scanner scanner \u003d new Scanner(System.in); // Create a Scanner object","lastModifiedDate":"2024-01-22"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" String line \u003d scanner.nextLine(); // Get first input","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" while (this.parser.processCmd(line)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" line \u003d scanner.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" // save the tasks from myTasks to duke.Storage","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" this.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" new Duke().run();","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jieqiboh":107,"-":2}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":" * Constructs Exceptions that are specific to the Duke bot.","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" // unknown command","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" // todo - no description","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" // event - no description, no from, no to","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" // deadline - no description, no by","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" * An Exception for when an unknown command is given to the bot.","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" public static class UnknownCommandException extends DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" public UnknownCommandException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" super(\"Unknown command. Please enter a valid command :3\");","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" * An Exception for when the arguments given to the find command are invalid.","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" public static class FindParamsException extends DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" public FindParamsException() {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" super(\"A string keyword is expected for a find command :3\");","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" * An Exception for when the arguments given to the mark command are invalid.","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" public static class MarkParamsException extends DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" public MarkParamsException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" super(\"An integer argument is expected for a mark or unmark command :3\");","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" * An Exception for when the arguments given to the delete command are invalid.","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" public static class DeleteParamsException extends DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" public DeleteParamsException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" super(\"An integer argument is expected for a delete command.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" * An Exception for when the arguments given to the todo command are invalid or missing.","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" public static class TodoDescriptionMissingException extends DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" public TodoDescriptionMissingException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" super(\"The description for a todo task cannot be empty :3\");","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" * An Exception for when the arguments given to the event command are invalid or missing.","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" public static class EventDetailsMissingException extends DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" public EventDetailsMissingException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" super(\"An event task must have a description, a \u0027from\u0027 time, and a \u0027to\u0027 time :3\");","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" * An Exception for when the arguments given to the deadline command are invalid or missing.","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" public static class DeadlineDetailsMissingException extends DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" public DeadlineDetailsMissingException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" super(\"A deadline task must have a description and a \u0027by\u0027 time :3\");","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" * An Exception for getTask where index is wrong, or the entry is not of type T, E, D.","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" public static class TaskNotFoundException extends DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" public TaskNotFoundException() {","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" super(\"Could not find task!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jieqiboh":87}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":" * Event class represents a task with a time range.","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" protected String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" protected String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" * Default constructor, isDone set to false.","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" * @param description of Event","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" * @param from is the start time of event","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" * @param to is the end time of event","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" * Overloaded constructor, isDone can be set.","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" * @param description of Event","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" * @param isDone completion status of Event","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" * @param from is the start time of event","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" * @param to is the end time of event","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" public Event(String description, Boolean isDone, String from, String to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" * Overloaded constructor.","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" * @param description of Event","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" * @param from is the start time of event","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" * @param to is the end time of event","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" super(description);","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" this.from \u003d Dates.dateTime2DbStr(from);","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" this.to \u003d Dates.dateTime2DbStr(to);","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" * Converts the database representation of Event to a Event Task.","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" * @param dbEvent the string rep of Event in the database","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" * @return Task the Event Task object","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" public static Event db2Event(String dbEvent) {","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" // E | 0 | project meeting | Aug 6th 2 | 4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" String[] params \u003d dbEvent.split(\" \\\\| \");","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" Boolean isDone \u003d params[1].equals(\"1\") ? true : false; // if \"1\", means isDone","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d params[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" String from \u003d params[3];","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" String to \u003d params[4];","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" return new Event(desc, isDone, from, to);","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" * Converts a Event Task to the database representation of Event.","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" * @param eventTask the Event Task object","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" * @return Task the string rep of Event in the database","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" public static String event2Db(Event eventTask) {","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" // E | 0 | project meeting | Aug 6th 2 | 4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" String done \u003d eventTask.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d eventTask.description;","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" String from \u003d eventTask.from;","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" String to \u003d eventTask.to;","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" return \"E\" + \" | \" + done + \" | \" + desc + \" | \" + from + \" | \" + to;","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" String dbEvent \u003d \"E | 0 | project meeting | Aug 6th 2 | 4pm\";","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" Event eventTask \u003d Event.db2Event(dbEvent);","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" eventTask.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" System.out.println(eventTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" System.out.println(Event.event2Db(eventTask));","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" // Test creating an event with valid date","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d \"Buy Bread\";","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" String validFromDate1 \u003d \"15/01/2023 1430\";","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" String validToDate1 \u003d \"17/01/2023 2359\";","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" if (Dates.isValidInputDate(validFromDate1) \u0026\u0026 Dates.isValidInputDate(validToDate1)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" LocalDateTime validFromDateObj1 \u003d Dates.inputStr2DateTime(validFromDate1);","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" LocalDateTime validToDateObj1 \u003d Dates.inputStr2DateTime(validToDate1);","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" Event e \u003d new Event(desc, validFromDateObj1, validToDateObj1); // Create date object","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" e.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" System.out.println(Event.event2Db(e));","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jieqiboh":108}},{"path":"src/main/java/duke/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"public class Launcher {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"jieqiboh":12}},{"path":"src/main/java/duke/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" private final Duke duke \u003d new Duke();","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" stage.setTitle(\"steve\");","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" stage.show();","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"jieqiboh":32}},{"path":"src/main/java/duke/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" public static final String USERIMGPATH \u003d \"/images/user.png\";","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" public static final String STEVEIMGPATH \u003d \"/images/steve.png\";","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" @FXML","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" @FXML","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" @FXML","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" @FXML","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" private Duke duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(USERIMGPATH));","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(STEVEIMGPATH));","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" @FXML","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" public void initialize() {","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" duke \u003d d;","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" @FXML","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" );","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" userInput.clear();","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"jieqiboh":54}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" * Takes in and processes user input according to the available bot command.","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class Parser {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" private TaskList myTasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" public Parser(Scanner scanner, TaskList myTasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" this.myTasks \u003d myTasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" * Processes a single command.","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" * @param command taken in by scanner","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" * @return boolean that denotes whether to continue processing","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" public boolean processCmd(String command) {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" String cmd \u003d command.split(\" \")[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" String params \u003d command.substring(cmd.length()).trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" switch (cmd) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" case \"bye\":","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Goodbye!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" // Fallthrough","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" case \"list\":","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" myTasks.printTasks();","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" case \"find\":","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" if (params.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.FindParamsException();","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" String keyword \u003d params.trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" myTasks.findTasks(keyword);","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" case \"mark\":","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" if (params.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.MarkParamsException();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" int num \u003d Integer.valueOf(params);","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" myTasks.markTask(num);","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" Task t \u003d myTasks.getTask(num);","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" System.out.println(t);","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" if (params.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.MarkParamsException();","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" num \u003d Integer.valueOf(params);","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" myTasks.unmarkTask(num);","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" t \u003d myTasks.getTask(num);","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" System.out.println(t);","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" case \"delete\":","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" if (params.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.DeleteParamsException();","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" num \u003d Integer.valueOf(params);","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" Task toDelete \u003d myTasks.getTask(num);","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" myTasks.deleteTask(num);","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" System.out.println(toDelete);","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Now you have \" + myTasks.size() + \" tasks in the list\");","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" case \"todo\":","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" if (params.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.TodoDescriptionMissingException();","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d params;","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" Task newTask \u003d new Todo(desc);","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" myTasks.addTask(newTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" System.out.println(newTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Now you have \" + myTasks.size() + \" tasks in the list\");","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" if (!params.contains(\"/by\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.DeadlineDetailsMissingException();","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" desc \u003d params.split(\"/by\")[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" String by \u003d params.split(\"/by\")[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" // Check if by is in valid date format","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" if (Dates.isValidInputDate(by)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" LocalDateTime dateObj \u003d Dates.inputStr2DateTime(by);","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" newTask \u003d new Deadline(desc, dateObj); // Create date object","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" newTask \u003d new Deadline(desc, by);","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" myTasks.addTask(newTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" System.out.println(newTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Now you have \" + myTasks.size() + \" tasks in the list\");","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" case \"event\":","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" if (!params.contains(\"/from\") || !params.contains(\"/to\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.EventDetailsMissingException();","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":" desc \u003d params.split(\"/from\")[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" String from \u003d params.split(\"/from\")[1].split(\"/to\")[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":" String to \u003d params.split(\"/to\")[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" if (Dates.isValidInputDate(from) \u0026\u0026 Dates.isValidInputDate(to)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" LocalDateTime dateObjFrom \u003d Dates.inputStr2DateTime(from);","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":" LocalDateTime dateObjTo \u003d Dates.inputStr2DateTime(to);","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" newTask \u003d new Event(desc, dateObjFrom, dateObjTo); // Create date object","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":" newTask \u003d new Event(desc, from, to);","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":" myTasks.addTask(newTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":" System.out.println(newTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Now you have \" + myTasks.size() + \" tasks in the list\");","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" case \"clear\": // Clears the tasklist","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":" myTasks.taskList.clear();","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Got it. I\u0027ve cleared the database.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"jieqiboh"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"jieqiboh"},"content":" default:","lastModifiedDate":"2024-01-28"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.UnknownCommandException();","lastModifiedDate":"2024-01-28"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"DukeException: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"jieqiboh"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"jieqiboh"},"content":" System.out.println(e);","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"An unexpected error occurred.\");","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":147,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"jieqiboh":147}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import java.util.List;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import java.util.Objects;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" * Used by the TaskList class, and handles reading, writing and deleting from lines in the file.","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" private String filepath;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" * Carries out operations like reading and writing to a specified database file.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" * @param filepath","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" public Storage(String filepath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" File file \u003d new File(this.filepath); // Used for read and write operations to the file","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" file.createNewFile(); // creates a new file if needed","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Failed to create database file: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" * Reads all lines of the file into a List of strings.","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" * @return List/\u003cString/\u003e that contains all lines of the file","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" public List\u003cString\u003e readLinesFromFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" return Files.readAllLines(Paths.get(this.filepath));","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Failed to read lines from file: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" return null;","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" * Given a list of strings, writes to a file.","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" * @param stringTaskList {@code List\u003cString\u003e} that is a list of tasks in their string database representation","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" public void writeLinesToFile(List\u003cString\u003e stringTaskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" File file \u003d new File(this.filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" FileWriter fw \u003d new FileWriter(this.filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" for (String x : stringTaskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" fw.write(x + \"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Failed to write to file: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" * Returns a List of strings of tasks in db representation.","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" * @return List/\u003cString/\u003e of tasks in db representation","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" public List\u003cString\u003e load() {","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" List\u003cString\u003e stringTasksList \u003d this.readLinesFromFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" return stringTasksList;","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" * Deletes the contents of the database file.","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" public void clearFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" Files.write(Paths.get(filepath), new byte[0]);","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" String filePath \u003d \"data/duketest.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" Storage fileHandler \u003d new Storage(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" // Clear and init data/duke.txt","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" fileHandler.clearFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" List\u003cString\u003e input \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" input.add(\"E | 0 | project meeting | 01 October 2023 00:00 | 01 December 2024 23:59\");","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" input.add(\"E | 1 | long project meeting | 01 May 2000 00:01 | 01 May 2020 10:00\");","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" input.add(\"D | 0 | return book | 01 May 2020 10:00\");","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" input.add(\"D | 0 | do homework | no idea :-p\");","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" input.add(\"E | 0 | project meeting 2 | Mon 2pm | 5pm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" input.add(\"D | 0 | return book | today\");","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" fileHandler.writeLinesToFile(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" List\u003cString\u003e output \u003d fileHandler.readLinesFromFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" for (String s : output) {","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" System.out.println(s);","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" System.out.println(Objects.equals(input, output));","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jieqiboh":115}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":" * Task class contains a description, and a boolean marking its status of completion.","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" * The default Task constructor","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" * @param description of the task","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" * Class constructor specifying completion status","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" * @param description of the task","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" * @param isDone denoting task completion status","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" public Task(String description, Boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" * Gets status icon denoting task completion.","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" * @return String \"X\" if complete, else \"\"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" * Marks task as complete.","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" * Marks task as incomplete.","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + description;","lastModifiedDate":"2024-01-23"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jieqiboh":55}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import java.util.List;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" * Contains a list of Task objects, and handles operations like getting, updating and deleting them.","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class TaskList {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" public ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" // duke.Todo representation - 0 means not done, 1 means done","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" // T | done? | desc","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" // duke.Deadline representation","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" // D | done? | desc | by","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" // duke.Event representation","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" // E | done? | desc | from | to","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" public TaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" * Initialises the TaskList, given a list of strings of tasks in their database representations.","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" public TaskList(List\u003cString\u003e stringTasksList) throws DukeException.UnknownCommandException {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" assert taskList !\u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" for (String s : stringTasksList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" this.taskList.add(db2Task(s));","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" * Gives users a way to find a task by searching for a keyword.","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" * @param keyword to search for in description, is case-sensitive","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" public void findTasks(String keyword) {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" int num \u003d 0;","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" if (t.description.contains(keyword)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" System.out.println((num + 1) + \". \" + t);","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" num++;","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" * Adds a task to the current taskList.","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" * @param task to be added","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" // Based on task type, extract traits","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" assert task !\u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" * Gets a task from the current taskList.","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" * @param index of task to get","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" public Task getTask(int index) throws DukeException.TaskNotFoundException {","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" // Check if the index is within the valid range","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" if (index \u003e\u003d 1 \u0026\u0026 index \u003c\u003d taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" return taskList.get(index - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.TaskNotFoundException();","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" * Deletes a task from the duke.TaskList, given its index.","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" * @param index of task to delete","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" public void deleteTask(int index) throws DukeException.TaskNotFoundException {","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" if (index \u003c 1 || index \u003e taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.TaskNotFoundException();","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" taskList.remove(index - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" * markTask marks a task as completed by line number.","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" * @param index of task to mark","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" public void markTask(int index) throws DukeException.TaskNotFoundException {","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" if (index \u003c 1 || index \u003e taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.TaskNotFoundException();","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" Task t \u003d this.getTask(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" t.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" * unmarkTask unmarks a task as completed by line number.","lastModifiedDate":"2024-02-06"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" * @param index of the task to unmark","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" public void unmarkTask(int index) throws DukeException.TaskNotFoundException {","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" if (index \u003c 1 || index \u003e taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.TaskNotFoundException();","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":" Task t \u003d this.getTask(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" t.unmarkAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" * Prints out the contents of the tasklist.","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":" public void printTasks() {","lastModifiedDate":"2024-01-27"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":" System.out.println((i + 1) + \". \" + this.taskList.get(i));","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":" * Gets number of tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":" * @return int number of tasks","lastModifiedDate":"2024-01-28"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":" public int size() {","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" return this.taskList.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":134,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":136,"author":{"gitId":"jieqiboh"},"content":" * Converts the database representation of a Task to the Task object.","lastModifiedDate":"2024-02-06"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":" * @param dbTask the string rep of the duke.Task in the database","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"jieqiboh"},"content":" * @return Task the duke.Task object","lastModifiedDate":"2024-02-06"},{"lineNumber":140,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":141,"author":{"gitId":"jieqiboh"},"content":" public static Task db2Task(String dbTask) throws DukeException.UnknownCommandException {","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"jieqiboh"},"content":" String[] params \u003d dbTask.split(\" \\\\| \");","lastModifiedDate":"2024-01-27"},{"lineNumber":143,"author":{"gitId":"jieqiboh"},"content":" String type \u003d params[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":144,"author":{"gitId":"jieqiboh"},"content":" switch (type) {","lastModifiedDate":"2024-01-27"},{"lineNumber":145,"author":{"gitId":"jieqiboh"},"content":" case \"T\": // To do","lastModifiedDate":"2024-01-27"},{"lineNumber":146,"author":{"gitId":"jieqiboh"},"content":" Todo todoTask \u003d Todo.db2Todo(dbTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":147,"author":{"gitId":"jieqiboh"},"content":" return todoTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":148,"author":{"gitId":"jieqiboh"},"content":" case \"D\": // duke.Deadline","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"jieqiboh"},"content":" Deadline deadlineTask \u003d Deadline.db2Deadline(dbTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":150,"author":{"gitId":"jieqiboh"},"content":" return deadlineTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":151,"author":{"gitId":"jieqiboh"},"content":" case \"E\": // duke.Event","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"jieqiboh"},"content":" Event eventTask \u003d Event.db2Event(dbTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":153,"author":{"gitId":"jieqiboh"},"content":" return eventTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":154,"author":{"gitId":"jieqiboh"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":155,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Failed to convert string to task!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":156,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.UnknownCommandException();","lastModifiedDate":"2024-01-28"},{"lineNumber":157,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":158,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":159,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":160,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":161,"author":{"gitId":"jieqiboh"},"content":" * Converts a Task to their database representation.","lastModifiedDate":"2024-02-06"},{"lineNumber":162,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":163,"author":{"gitId":"jieqiboh"},"content":" * @param task the Task object","lastModifiedDate":"2024-02-06"},{"lineNumber":164,"author":{"gitId":"jieqiboh"},"content":" * @return String the string rep of duke.Task in the database","lastModifiedDate":"2024-01-28"},{"lineNumber":165,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":166,"author":{"gitId":"jieqiboh"},"content":" public static String task2Db(Task task) {","lastModifiedDate":"2024-01-27"},{"lineNumber":167,"author":{"gitId":"jieqiboh"},"content":" // Based on task type, extract traits","lastModifiedDate":"2024-01-27"},{"lineNumber":168,"author":{"gitId":"jieqiboh"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2024-01-27"},{"lineNumber":169,"author":{"gitId":"jieqiboh"},"content":" Todo todoTask \u003d (Todo) task;","lastModifiedDate":"2024-01-27"},{"lineNumber":170,"author":{"gitId":"jieqiboh"},"content":" return Todo.todo2Db(todoTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":171,"author":{"gitId":"jieqiboh"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2024-01-27"},{"lineNumber":172,"author":{"gitId":"jieqiboh"},"content":" Deadline deadlineTask \u003d (Deadline) task;","lastModifiedDate":"2024-01-27"},{"lineNumber":173,"author":{"gitId":"jieqiboh"},"content":" return Deadline.deadline2Db(deadlineTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":174,"author":{"gitId":"jieqiboh"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-27"},{"lineNumber":175,"author":{"gitId":"jieqiboh"},"content":" Event eventTask \u003d (Event) task;","lastModifiedDate":"2024-01-27"},{"lineNumber":176,"author":{"gitId":"jieqiboh"},"content":" return Event.event2Db(eventTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":177,"author":{"gitId":"jieqiboh"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":178,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Failed to add task: \" + task);","lastModifiedDate":"2024-01-28"},{"lineNumber":179,"author":{"gitId":"jieqiboh"},"content":" return null;","lastModifiedDate":"2024-01-27"},{"lineNumber":180,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":181,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":182,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jieqiboh":182}},{"path":"src/main/java/duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":" * Task that has a description only.","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" * Default constructor, isDone set to false.","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" * @param description of Todo","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" public Todo(String description, Boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" * Converts the database representation of Todo to a Todo Task","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" * @param dbTodo the string rep of Todo in the database","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" * @return Task the todo Task object","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" public static Todo db2Todo(String dbTodo) {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" // T | 0 | Buy Bread","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" String[] params \u003d dbTodo.split(\" \\\\| \");","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" Boolean isDone \u003d params[1].equals(\"1\") ? true : false; // if \"1\", means isDone","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d params[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" return new Todo(desc, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" * Converts the a Todo Task to the database representation of Todo.","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" * @param todoTask is the todo Task object","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" * @return Task the string rep of Todo in the database","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" public static String todo2Db(Todo todoTask) {","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" // T | 0 | Buy Bread","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" String done \u003d todoTask.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d todoTask.description;","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" return \"T\" + \" | \" + done + \" | \" + desc;","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" String dbTodo \u003d \"T | 0 | Buy Bread\";","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" Todo todoTask \u003d Todo.db2Todo(dbTodo);","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" todoTask.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" System.out.println(todoTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" System.out.println(Todo.todo2Db(todoTask));","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jieqiboh":57}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":" * Deals with interactions from the user","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"public class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" private static String border \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" * Prints a greeting for the user upon bot startup","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" public void greet() {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" String logo \u003d","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" \" _ \\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" + \" ___| |_ _____ _____ \\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" + \"/ __| __/ _ \\\\ \\\\ / / _ \\\\\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" + \"\\\\__ \\\\ || __/\\\\ V / __/\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" + \"|___/\\\\__\\\\___| \\\\_/ \\\\___|\\n\";","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" System.out.println(border);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"What\u0027s up! I\u0027m steve\");","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"What do you want to do?\");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" System.out.println(border);","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Failed to read tasks file!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" ui.greet();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jieqiboh":33}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"jieqiboh":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.MainWindow\"\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"600.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"jieqiboh":19}},{"path":"src/test/java/duke/DatesTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"public class DatesTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" public void testIsValidInputDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" String invalidInputDate1 \u003d \"01/13/2023 1200\";","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" String invalidInputDate2 \u003d \"01/13/2023 2401\";","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" String validInputDate1 \u003d \"15/01/2023 1430\";","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" String validInputDate2 \u003d \"01/01/2025 2330\";","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" assertEquals(true, Dates.isValidInputDate(validInputDate1));","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" assertEquals(true, Dates.isValidInputDate(validInputDate2));","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" assertEquals(false, Dates.isValidInputDate(invalidInputDate1));","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" assertEquals(false, Dates.isValidInputDate(invalidInputDate2));","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" public void testConvMethods() {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" String validInputDate1 \u003d \"15/01/2023 1430\";","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" String validInputDate2 \u003d \"01/01/2025 2330\";","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" // Convert valid date strings to LocalDateTime objects","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" LocalDateTime validDate1 \u003d Dates.inputStr2DateTime(validInputDate1);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" LocalDateTime validDate2 \u003d Dates.inputStr2DateTime(validInputDate2);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" // Convert LocalDateTime objects to string for storage in database file","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" String validDate1Str \u003d Dates.dateTime2DbStr(validDate1);","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" String validDate2Str \u003d Dates.dateTime2DbStr(validDate2);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" // return the db string format when printing","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"15 January 2023 14:30\", validDate1Str);","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"01 January 2025 23:30\", validDate2Str);","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jieqiboh":42}},{"path":"src/test/java/duke/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import java.util.List;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"public class StorageTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" private String filePath \u003d \"data/duketest.txt\";","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" private Storage testStorage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" public void testReadWriteLines() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" List\u003cString\u003e input \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" input.add(\"E | 0 | project meeting | 01 October 2023 00:00 | 01 December 2024 23:59\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" input.add(\"E | 1 | long project meeting | 01 May 2000 00:01 | 01 May 2020 10:00\");","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" input.add(\"D | 0 | return book | 01 May 2020 10:00\");","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" input.add(\"D | 0 | do homework | no idea :-p\");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" input.add(\"E | 0 | project meeting 2 | Mon 2pm | 5pm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" input.add(\"D | 0 | return book | today\");","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" testStorage.writeLinesToFile(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" List\u003cString\u003e output \u003d testStorage.readLinesFromFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" assertEquals(input, output);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jieqiboh":30}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"public class TaskListTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" private final TaskList testTasks \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" public void testGetTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" // get task that doesn\u0027t exist","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" testTasks.getTask(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" // get task that exists","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Todo(\"buy bread\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" String todoDesc \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" todoDesc \u003d testTasks.getTask(1).description;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException.TaskNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"buy bread\", todoDesc);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" public void testMarkTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Deadline(\"return book\", \"Mon 4pm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" // mark task that doesn\u0027t exist","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" testTasks.markTask(5);","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException.TaskNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" // mark task that exists","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" testTasks.markTask(1);","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException.TaskNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" // verify task marked","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" Task t \u003d testTasks.getTask(1);","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"return book\", t.description);","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" assertEquals(true, t.isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException.TaskNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" public void testUnmarkTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Deadline(\"return book\", \"Mon 4pm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" // unmark task that doesn\u0027t exist","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" testTasks.unmarkTask(5);","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException.TaskNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" // unmark task that exists","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" testTasks.unmarkTask(1);","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException.TaskNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" // verify task unmarked","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" Task t \u003d testTasks.getTask(1);","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"return book\", t.description);","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" assertEquals(false, t.isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException.TaskNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" public void testDeleteTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Deadline(\"return book\", \"Mon 4pm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" // delete existing task","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" testTasks.deleteTask(1);","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException.TaskNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" // delete task that doesn\u0027t exist","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" testTasks.deleteTask(-1);","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" public void testAddTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" assertEquals(0, testTasks.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" Todo t \u003d new Todo(\"Buy bread\");","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(t);","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":" assertEquals(1, testTasks.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":" public void testFindTasks() {","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Todo(\"Buy Bread\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Todo(\"Borrow book\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Deadline(\"Return Bread\", \"tomorrow\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Todo(\"eat bread\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Event(\"Bread discussion\", \"Mon 4pm\", \"5pm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":" testTasks.findTasks(\"Bread\");","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jieqiboh":126}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"clear","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"todo return book","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"todo","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"event project meeting 2 /from Mon 2pm","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"event project meeting 3 /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"deadline return book","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"mark 5","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"unmark 5","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"unmark","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"mark","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"delete 1","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"delete 2","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"hi","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jieqiboh":25}},{"path":"text-ui-test/input2.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"clear","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"event project meeting /from 01/10/2023 0000 /to 01/12/2024 2359","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"event long project meeting /from 01/05/2000 0001 /to 01/05/2020 1000","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"deadline return book /by 01/05/2020 1000","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"list","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"event project meeting 2 /from Mon 2pm /to 5pm","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"deadline return book /by today","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"mark 2","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"mark 5","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"list","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"unmark 5","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"find meeting","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"list","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"bye","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"jieqiboh":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":"jieqiboh"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/duke/*.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":"jieqiboh"},"content":"java -classpath ../bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-28"},{"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":{"jieqiboh":2,"-":36}},{"path":"text-ui-test/runtest2.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"then","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":" mkdir ../bin","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"fi","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"# delete output from previous run","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"if [ -e \"./ACTUAL2.TXT\" ]","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"then","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" rm ACTUAL2.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"fi","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/duke/*.java","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"then","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" exit 1","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"fi","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"java -classpath ../bin duke.Duke \u003c input2.txt \u003e ACTUAL2.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"# convert to UNIX format","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"cp EXPECTED2.TXT EXPECTED-UNIX2.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"dos2unix ACTUAL2.TXT EXPECTED-UNIX2.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"# compare the output to the expected output","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"diff ACTUAL2.TXT EXPECTED-UNIX2.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"then","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" exit 0","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"else","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" exit 1","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"fi","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"jieqiboh":38}}] +[{"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":"jieqiboh"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"checkstyle {","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" mainClass.set(\"duke.Launcher\")","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" archiveBaseName \u003d \"steve\"","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"jieqiboh":22,"-":40}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"D | 1 | return book | Sunday","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"T | 1 | hi","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"T | 0 | hi","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"E | 1 | long project meeting | 01 May 2000 00:01 | 01 May 2020 10:00","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"T | 0 | buy bread","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"T | 0 | buy bread","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"jieqiboh":6}},{"path":"data/duketest.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"E | 0 | project meeting | 01 October 2023 00:00 | 01 December 2024 23:59","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"E | 1 | long project meeting | 01 May 2000 00:01 | 01 May 2020 10:00","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"D | 0 | return book | 01 May 2020 10:00","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"D | 0 | do homework | no idea :-p","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"E | 0 | project meeting 2 | Mon 2pm | 5pm","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"D | 0 | return book | today","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jieqiboh":6}},{"path":"duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"E | 0 | project meeting | 01 October 2023 00:00 | 01 December 2024 23:59","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"E | 1 | long project meeting | 01 May 2000 00:01 | 01 May 2020 10:00","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"D | 0 | return book | 01 May 2020 10:00","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"D | 0 | do homework | no idea :-p","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"E | 0 | project meeting 2 | Mon 2pm | 5pm","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"D | 0 | return book | today","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jieqiboh":6}},{"path":"src/main/java/duke/Dates.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" * Dates class handles validation and formatting of strings in input and database format.","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"public class Dates {","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" // Looks for pattern \"dd/MM/yyyy HHmm\", used for input purposes","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" static final Pattern DATE_INPUT_PATTERN \u003d Pattern.compile(\"^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[0-2])/\"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" + \"(\\\\d{4}) (\\\\d{4}$)\");","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" // Looks for pattern \"dd Month yyyy HH:mm\", used for storing in db and output purposes","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" static final Pattern DATE_DB_PATTERN \u003d Pattern.compile(\"\\\\d{1,2} \"","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" + \"(January|February|March|April|May|June|July|August|September|October|November|December)\"","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" + \" \\\\d{4} \\\\d{2}:\\\\d{2}\");","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" // Used for parsing datetime string in input format, to a datetime object","lastModifiedDate":"2024-01-27"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" static final DateTimeFormatter DATE_INPUT_FORMATTER \u003d DateTimeFormatter.ofPattern(\"d/M/yyyy HHmm\");","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" // Used for parsing a datetime string in db format, to a datetime object","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" static final DateTimeFormatter DATE_DB_FORMATTER \u003d DateTimeFormatter.ofPattern(\"dd MMMM yyyy HH:mm\");","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" * Validates an input string and returns true if it matches.","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" * @param date is the date in \"dd/MM/yyyy HHmm\" format.","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" * @return boolean if it matches.","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidInputDate(String date) {","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" Matcher matcher \u003d Dates.DATE_INPUT_PATTERN.matcher(date);","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" return matcher.matches();","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" * Checks that the db string date matches the db date pattern.","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" * @param date is the date in \"dd Month yyyy HH:mm\" format.","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" * @return True if the date String matches the pattern.","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" public static boolean isValidDbDate(String date) {","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" Matcher matcher \u003d DATE_DB_PATTERN.matcher(date);","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" return matcher.matches();","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" * Creates a datetime object, using the input string formatter.","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" * @param date which is a string that has a valid input pattern.","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" * @return LocalDateTime class based on the date String.","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" public static LocalDateTime inputStr2DateTime(String date) {","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" return LocalDateTime.parse(date, DATE_INPUT_FORMATTER);","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Could not parse date\" + e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" return null;","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" * Creates a datetime object, using the db string formatter.","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" * @param date which is a string that has a valid db pattern.","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" * @return LocalDateTime class based on the date String.","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" public static LocalDateTime dbStr2DateTime(String date) {","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" return LocalDateTime.parse(date, DATE_DB_FORMATTER);","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Could not parse date\" + e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" return null;","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" * Converts a datetime object to its database string representation.","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" * @param datetime object","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" * @return String representation for database dates.","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" public static String dateTime2DbStr(LocalDateTime datetime) {","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" return datetime.format(Dates.DATE_DB_FORMATTER);","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Failed to format datetime: \" + e.getMessage());","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" return null;","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"jieqiboh":95}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":" * Deadline is a type of task with a by field that denotes by when it has to be completed.","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" protected String by;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" * Default constructor, isDone set to false.","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" * @param description of Deadline","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" * @param by is the end of the deadline","lastModifiedDate":"2024-01-27"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" * Overloaded constructor, isDone can be set.","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" * @param description of Deadline","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" * @param isDone sets the completion status of Deadline","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" * @param by is the end of the deadline","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" public Deadline(String description, Boolean isDone, String by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" * Overloaded constructor.","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" * @param description of Deadline","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" * @param by is the end of the deadline","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" super(description);","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" this.by \u003d Dates.dateTime2DbStr(by);","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" * Constructor used to clone a Deadline object","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" public Deadline(Deadline deadline) {","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" super(deadline);","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" this.by \u003d deadline.by;","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" * Converts the database representation of Deadline to a Deadline Task.","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" * @param dbDeadline the string rep of Deadline in the database.","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" * @return Task the Deadline Task object","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" public static Deadline db2Deadline(String dbDeadline) {","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" // D | 0 | return book | June 6th","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" String[] params \u003d dbDeadline.split(\" \\\\| \");","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" Boolean isDone \u003d params[1].equals(\"1\") ? true : false; // if \"1\", means isDone","lastModifiedDate":"2024-01-27"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d params[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" String by \u003d params[3];","lastModifiedDate":"2024-01-27"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" return new Deadline(desc, isDone, by);","lastModifiedDate":"2024-01-27"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" * Converts a Deadline Task to the database representation of Deadline.","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" * @param deadlineTask the Deadline Task object","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" * @return Task the string rep of Deadline in the database","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" public static String deadline2Db(Deadline deadlineTask) {","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" // D | 0 | return book | June 6th","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" String done \u003d deadlineTask.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d deadlineTask.description;","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" String by \u003d deadlineTask.by;","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" return \"D\" + \" | \" + done + \" | \" + desc + \" | \" + by;","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" String dbDeadline \u003d \"D | 0 | return book | June 6th\";","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" Deadline deadlineTask \u003d Deadline.db2Deadline(dbDeadline);","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" deadlineTask.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" System.out.println(deadlineTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" System.out.println(Deadline.deadline2Db(deadlineTask));","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" // Test creating a deadline with valid date","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d \"Buy Bread\";","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" String validInputDate1 \u003d \"15/01/2023 1430\";","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" if (Dates.isValidInputDate(validInputDate1)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" LocalDateTime validDate1 \u003d Dates.inputStr2DateTime(validInputDate1);","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" Deadline d \u003d new Deadline(desc, validDate1); // Create date object","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" d.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" System.out.println(Deadline.deadline2Db(d));","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jieqiboh":105}},{"path":"src/main/java/duke/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.shape.Circle;","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" * containing text from the speaker.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" @FXML","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" private Label dialog;","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" @FXML","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" final Circle clip \u003d new Circle(50, 50, 50);","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" displayPicture.setClip(clip);","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" private void flip() {","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" db.flip();","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" return db;","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"jieqiboh":64}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.io.OutputStream;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import java.io.PrintStream;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import java.util.List;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" * Duke is a simple task manager app","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" * The class does the initial setup for components for the main application","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" // public static final String DB_PATH \u003d \"../data/duke.txt\"; // uncommment for runtest.sh","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" public static final String DB_PATH \u003d \"data/duke.txt\";","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" private Storage storage;","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" private TaskList myTasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" private Ui ui;","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" private Parser parser;","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" * Initialises a Duke instance, and loads tasks and components before starting up the app","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" public Duke() {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" storage \u003d new Storage(DB_PATH);","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" myTasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" parser \u003d new Parser(new Scanner(System.in), this.myTasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" myTasks \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" * Given a user input string, invokes the parser and returns the output in the UI.","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" String getResponse(String input) {","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" // Create a StringBuilder to hold the output","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" StringBuilder outputBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" // Create a PrintStream that writes to the StringBuilder","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" PrintStream ps \u003d new PrintStream(new OutputStream() {","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" public void write(int b) {","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" outputBuilder.append((char) b);","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" });","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" // Save the original System.out","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" PrintStream prev \u003d System.out;","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" // Set the System.out to the custom PrintStream","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" System.setOut(ps);","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" // process the user input","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" this.parser.processCmd(input);","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" this.save();","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" } finally {","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" // Restore the original System.out","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" System.setOut(prev);","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" // Return the captured output","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" return outputBuilder.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" * Saves the current tasklist to the hard drive.","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" private void save() {","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" List\u003cString\u003e lines \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" for (Task t : this.myTasks.taskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" String stringTask \u003d TaskList.task2Db(t);","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" lines.add(stringTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" this.storage.writeLinesToFile(lines);","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" * Starts up the bot and sets up the Parser and UI.","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" public void run() {","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" String greeting \u003d \"____________________________________________________________\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" + \" Hello! I\u0027m steve\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" + \" What can I do for you?\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" + \"____________________________________________________________\";","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" String goodbye \u003d \" Bye. Hope to see you again soon!\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" + \"____________________________________________________________\";","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" ui.greet();","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" Scanner scanner \u003d new Scanner(System.in); // Create a Scanner object","lastModifiedDate":"2024-01-22"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" String line \u003d scanner.nextLine(); // Get first input","lastModifiedDate":"2024-01-23"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" while (this.parser.processCmd(line)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" line \u003d scanner.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" // save the tasks from myTasks to duke.Storage","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" this.save();","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" new Duke().run();","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"jieqiboh":107,"-":2}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":" * Constructs Exceptions that are specific to the Duke bot.","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" // unknown command","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" // todo - no description","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" // event - no description, no from, no to","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" // deadline - no description, no by","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" super(message);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" * An Exception for when an unknown command is given to the bot.","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" public static class UnknownCommandException extends DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" public UnknownCommandException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" super(\"Unknown command. Please enter a valid command :3\");","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" * An Exception for when the arguments given to the find command are invalid.","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" public static class FindParamsException extends DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" public FindParamsException() {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" super(\"A string keyword is expected for a find command :3\");","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" * An Exception for when the arguments given to the mark command are invalid.","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" public static class MarkParamsException extends DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" public MarkParamsException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" super(\"An integer argument is expected for a mark or unmark command :3\");","lastModifiedDate":"2024-01-23"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" * An Exception for when the arguments given to the delete command are invalid.","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" public static class DeleteParamsException extends DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" public DeleteParamsException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" super(\"An integer argument is expected for a delete command.\");","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" * An Exception for when the arguments given to the todo command are invalid or missing.","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" public static class TodoDescriptionMissingException extends DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" public TodoDescriptionMissingException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" super(\"The description for a todo task cannot be empty :3\");","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" * An Exception for when the arguments given to the event command are invalid or missing.","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" public static class EventDetailsMissingException extends DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" public EventDetailsMissingException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" super(\"An event task must have a description, a \u0027from\u0027 time, and a \u0027to\u0027 time :3\");","lastModifiedDate":"2024-01-23"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" * An Exception for when the arguments given to the deadline command are invalid or missing.","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" public static class DeadlineDetailsMissingException extends DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" public DeadlineDetailsMissingException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" super(\"A deadline task must have a description and a \u0027by\u0027 time :3\");","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" * An Exception for getTask where index is wrong, or the entry is not of type T, E, D.","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" public static class TaskNotFoundException extends DukeException {","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" public TaskNotFoundException() {","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" super(\"Could not find task!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jieqiboh":87}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":" * Event class represents a task with a time range.","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" protected String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" protected String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" * Default constructor, isDone set to false.","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" * @param description of Event","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" * @param from is the start time of event","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" * @param to is the end time of event","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" * Overloaded constructor, isDone can be set.","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" * @param description of Event","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" * @param isDone completion status of Event","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" * @param from is the start time of event","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" * @param to is the end time of event","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" public Event(String description, Boolean isDone, String from, String to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" * Overloaded constructor.","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" * @param description of Event","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" * @param from is the start time of event","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" * @param to is the end time of event","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" public Event(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" super(description);","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" this.from \u003d Dates.dateTime2DbStr(from);","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" this.to \u003d Dates.dateTime2DbStr(to);","lastModifiedDate":"2024-01-27"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" * Constructor used to clone an Event object","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" public Event(Event event) {","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" super(event);","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" this.from \u003d event.from;","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" this.to \u003d event.to;","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" * Converts the database representation of Event to a Event Task.","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" * @param dbEvent the string rep of Event in the database","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" * @return Task the Event Task object","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" public static Event db2Event(String dbEvent) {","lastModifiedDate":"2024-01-27"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" // E | 0 | project meeting | Aug 6th 2 | 4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" String[] params \u003d dbEvent.split(\" \\\\| \");","lastModifiedDate":"2024-01-27"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" Boolean isDone \u003d params[1].equals(\"1\") ? true : false; // if \"1\", means isDone","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d params[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" String from \u003d params[3];","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" String to \u003d params[4];","lastModifiedDate":"2024-01-27"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" return new Event(desc, isDone, from, to);","lastModifiedDate":"2024-01-27"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" * Converts a Event Task to the database representation of Event.","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" * @param eventTask the Event Task object","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" * @return Task the string rep of Event in the database","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" public static String event2Db(Event eventTask) {","lastModifiedDate":"2024-01-27"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" // E | 0 | project meeting | Aug 6th 2 | 4pm","lastModifiedDate":"2024-01-27"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" String done \u003d eventTask.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-27"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d eventTask.description;","lastModifiedDate":"2024-01-27"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" String from \u003d eventTask.from;","lastModifiedDate":"2024-01-27"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" String to \u003d eventTask.to;","lastModifiedDate":"2024-01-27"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" return \"E\" + \" | \" + done + \" | \" + desc + \" | \" + from + \" | \" + to;","lastModifiedDate":"2024-01-27"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-27"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" String dbEvent \u003d \"E | 0 | project meeting | Aug 6th 2 | 4pm\";","lastModifiedDate":"2024-01-27"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" Event eventTask \u003d Event.db2Event(dbEvent);","lastModifiedDate":"2024-01-27"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" eventTask.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" System.out.println(eventTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" System.out.println(Event.event2Db(eventTask));","lastModifiedDate":"2024-01-27"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" // Test creating an event with valid date","lastModifiedDate":"2024-01-27"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d \"Buy Bread\";","lastModifiedDate":"2024-01-27"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" String validFromDate1 \u003d \"15/01/2023 1430\";","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" String validToDate1 \u003d \"17/01/2023 2359\";","lastModifiedDate":"2024-01-27"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" if (Dates.isValidInputDate(validFromDate1) \u0026\u0026 Dates.isValidInputDate(validToDate1)) {","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" LocalDateTime validFromDateObj1 \u003d Dates.inputStr2DateTime(validFromDate1);","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" LocalDateTime validToDateObj1 \u003d Dates.inputStr2DateTime(validToDate1);","lastModifiedDate":"2024-01-27"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" Event e \u003d new Event(desc, validFromDateObj1, validToDateObj1); // Create date object","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":" e.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" System.out.println(Event.event2Db(e));","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jieqiboh":117}},{"path":"src/main/java/duke/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"public class Launcher {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"jieqiboh":12}},{"path":"src/main/java/duke/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" private final Duke duke \u003d new Duke();","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" stage.setTitle(\"steve\");","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" stage.show();","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"jieqiboh":32}},{"path":"src/main/java/duke/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" public static final String USERIMGPATH \u003d \"/images/user.png\";","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" public static final String STEVEIMGPATH \u003d \"/images/steve.png\";","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" @FXML","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" @FXML","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" @FXML","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" @FXML","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" private Duke duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(USERIMGPATH));","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(STEVEIMGPATH));","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" @FXML","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" public void initialize() {","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" duke \u003d d;","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" @FXML","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" );","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" userInput.clear();","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"jieqiboh":54}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import java.util.*;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" * Takes in and processes user input according to the available bot command.","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class Parser {","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" private TaskList myTasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" public Parser(Scanner scanner, TaskList myTasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" this.myTasks \u003d myTasks;","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" * Processes a single command.","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" * @param command taken in by scanner","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" * @return boolean that denotes whether to continue processing","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" public boolean processCmd(String command) {","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" String cmd \u003d command.split(\" \")[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" String params \u003d command.substring(cmd.length()).trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" switch (cmd) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" case \"bye\":","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Goodbye!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" return false;","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" // Fallthrough","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" case \"list\":","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" parseList();","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" case \"find\":","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" parseFind(params);","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" case \"mark\":","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" parseMark(params);","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" parseUnmark(params);","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" case \"delete\":","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" parseDelete(params);","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" case \"todo\":","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" parseTodo(params);","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" parseDeadline(params);","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" case \"event\":","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" parseEvent(params);","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" case \"undo\":","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" parseUndo();","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" default:","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.UnknownCommandException();","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"DukeException: \" + e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" System.out.println(e);","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"An unexpected error occurred.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" return true;","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" private void parseList() {","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" myTasks.printTasks();","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" private void parseUndo() {","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" myTasks.undo();","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" private void parseFind(String params) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" if (params.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.FindParamsException();","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" String keyword \u003d params.trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" myTasks.findTasks(keyword);","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" private void parseMark(String params) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" if (params.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.MarkParamsException();","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" int num \u003d Integer.valueOf(params);","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" myTasks.markTask(num);","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" Task t \u003d myTasks.getTask(num);","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" System.out.println(t);","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" private void parseUnmark(String params) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" if (params.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.MarkParamsException();","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" int num \u003d Integer.valueOf(params);","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" myTasks.unmarkTask(num);","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" Task t \u003d myTasks.getTask(num);","lastModifiedDate":"2024-02-07"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" System.out.println(t);","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" private void parseDelete(String params) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" if (params.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.DeleteParamsException();","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":" int num \u003d Integer.valueOf(params);","lastModifiedDate":"2024-02-07"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" Task toDelete \u003d myTasks.getTask(num);","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":" myTasks.deleteTask(num);","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" System.out.println(toDelete);","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":" private void parseTodo(String params) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" Todo newTask;","lastModifiedDate":"2024-02-07"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":" if (params.length() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.TodoDescriptionMissingException();","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d params;","lastModifiedDate":"2024-01-28"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":" newTask \u003d new Todo(desc);","lastModifiedDate":"2024-02-07"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":" myTasks.addTask(newTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":" System.out.println(newTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Now you have \" + myTasks.size() + \" tasks in the list\");","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":136,"author":{"gitId":"jieqiboh"},"content":" private void parseDeadline(String params) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":" Deadline newTask;","lastModifiedDate":"2024-02-07"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":" if (!params.contains(\"/by\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":139,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.DeadlineDetailsMissingException();","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d params.split(\"/by\")[0].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":143,"author":{"gitId":"jieqiboh"},"content":" String by \u003d params.split(\"/by\")[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":144,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":145,"author":{"gitId":"jieqiboh"},"content":" // Check if by is in valid date format","lastModifiedDate":"2024-01-28"},{"lineNumber":146,"author":{"gitId":"jieqiboh"},"content":" if (Dates.isValidInputDate(by)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":147,"author":{"gitId":"jieqiboh"},"content":" LocalDateTime dateObj \u003d Dates.inputStr2DateTime(by);","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"jieqiboh"},"content":" newTask \u003d new Deadline(desc, dateObj); // Create date object","lastModifiedDate":"2024-01-28"},{"lineNumber":149,"author":{"gitId":"jieqiboh"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":150,"author":{"gitId":"jieqiboh"},"content":" newTask \u003d new Deadline(desc, by);","lastModifiedDate":"2024-01-28"},{"lineNumber":151,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":152,"author":{"gitId":"jieqiboh"},"content":" myTasks.addTask(newTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":153,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":154,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":155,"author":{"gitId":"jieqiboh"},"content":" System.out.println(newTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":156,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Now you have \" + myTasks.size() + \" tasks in the list\");","lastModifiedDate":"2024-01-28"},{"lineNumber":157,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":158,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":159,"author":{"gitId":"jieqiboh"},"content":" private void parseEvent(String params) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":160,"author":{"gitId":"jieqiboh"},"content":" Event newTask;","lastModifiedDate":"2024-02-07"},{"lineNumber":161,"author":{"gitId":"jieqiboh"},"content":" if (!params.contains(\"/from\") || !params.contains(\"/to\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":162,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.EventDetailsMissingException();","lastModifiedDate":"2024-01-28"},{"lineNumber":163,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":164,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":165,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d params.split(\"/from\")[0];","lastModifiedDate":"2024-02-07"},{"lineNumber":166,"author":{"gitId":"jieqiboh"},"content":" String from \u003d params.split(\"/from\")[1].split(\"/to\")[0].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":167,"author":{"gitId":"jieqiboh"},"content":" String to \u003d params.split(\"/to\")[1].trim();","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":169,"author":{"gitId":"jieqiboh"},"content":" if (Dates.isValidInputDate(from) \u0026\u0026 Dates.isValidInputDate(to)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":170,"author":{"gitId":"jieqiboh"},"content":" LocalDateTime dateObjFrom \u003d Dates.inputStr2DateTime(from);","lastModifiedDate":"2024-01-28"},{"lineNumber":171,"author":{"gitId":"jieqiboh"},"content":" LocalDateTime dateObjTo \u003d Dates.inputStr2DateTime(to);","lastModifiedDate":"2024-01-28"},{"lineNumber":172,"author":{"gitId":"jieqiboh"},"content":" newTask \u003d new Event(desc, dateObjFrom, dateObjTo); // Create date object","lastModifiedDate":"2024-01-28"},{"lineNumber":173,"author":{"gitId":"jieqiboh"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":174,"author":{"gitId":"jieqiboh"},"content":" newTask \u003d new Event(desc, from, to);","lastModifiedDate":"2024-01-28"},{"lineNumber":175,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":176,"author":{"gitId":"jieqiboh"},"content":" myTasks.addTask(newTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":177,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":178,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":179,"author":{"gitId":"jieqiboh"},"content":" System.out.println(newTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":180,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Now you have \" + myTasks.size() + \" tasks in the list\");","lastModifiedDate":"2024-01-28"},{"lineNumber":181,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":182,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":183,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"jieqiboh":183}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.io.File;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"import java.util.List;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"import java.util.Objects;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" * Used by the TaskList class, and handles reading, writing and deleting from lines in the file.","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"public class Storage {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" private String filepath;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" * Carries out operations like reading and writing to a specified database file.","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" * @param filepath","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" public Storage(String filepath) {","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" this.filepath \u003d filepath;","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" File file \u003d new File(this.filepath); // Used for read and write operations to the file","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" file.createNewFile(); // creates a new file if needed","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Failed to create database file: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" * Reads all lines of the file into a List of strings.","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" * @return List/\u003cString/\u003e that contains all lines of the file","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" public List\u003cString\u003e readLinesFromFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" return Files.readAllLines(Paths.get(this.filepath));","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Failed to read lines from file: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" return null;","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" * Given a list of strings, writes to a file.","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" * @param stringTaskList {@code List\u003cString\u003e} that is a list of tasks in their string database representation","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" public void writeLinesToFile(List\u003cString\u003e stringTaskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" File file \u003d new File(this.filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" FileWriter fw \u003d new FileWriter(this.filepath);","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" for (String x : stringTaskList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" fw.write(x + \"\\n\");","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" fw.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Failed to write to file: \" + e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" * Returns a List of strings of tasks in db representation.","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" * @return List/\u003cString/\u003e of tasks in db representation","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" public List\u003cString\u003e load() {","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" List\u003cString\u003e stringTasksList \u003d this.readLinesFromFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" return stringTasksList;","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" * Deletes the contents of the database file.","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" public void clearFile() {","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" Files.write(Paths.get(filepath), new byte[0]);","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" String filePath \u003d \"data/duketest.txt\";","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" Storage fileHandler \u003d new Storage(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" // Clear and init data/duke.txt","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" fileHandler.clearFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" List\u003cString\u003e input \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" input.add(\"E | 0 | project meeting | 01 October 2023 00:00 | 01 December 2024 23:59\");","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" input.add(\"E | 1 | long project meeting | 01 May 2000 00:01 | 01 May 2020 10:00\");","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" input.add(\"D | 0 | return book | 01 May 2020 10:00\");","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" input.add(\"D | 0 | do homework | no idea :-p\");","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" input.add(\"E | 0 | project meeting 2 | Mon 2pm | 5pm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" input.add(\"D | 0 | return book | today\");","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" fileHandler.writeLinesToFile(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" List\u003cString\u003e output \u003d fileHandler.readLinesFromFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" for (String s : output) {","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" System.out.println(s);","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" System.out.println(Objects.equals(input, output));","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jieqiboh":115}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":" * Task class contains a description, and a boolean marking its status of completion.","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" * The default Task constructor","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" * @param description of the task","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" * Class constructor specifying completion status","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" * @param description of the task","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" * @param isDone denoting task completion status","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" public Task(String description, Boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" * Constructor used to clone a task object","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" * @param task","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" public Task(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" this.description \u003d task.description;","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" this.isDone \u003d task.isDone;","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" * Gets status icon denoting task completion.","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" * @return String \"X\" if complete, else \"\"","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-23"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-23"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" * Marks task as complete.","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" * Marks task as incomplete.","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2024-01-23"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + description;","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jieqiboh":64}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import java.util.List;","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" * Contains a list of Task objects, and handles operations like getting, updating and deleting them.","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"public class TaskList {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" public ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" public ArrayList\u003cTask\u003e prevTaskList; // contains the taskList before mutation","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" private Task prevTask; // contains the task involved in the previous operation","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" private MutateOps prevOp; // contains the previous operation that mutated taskList","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" * Enum of operations that can mutate taskList","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" private enum MutateOps {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" MARK,","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" UNMARK,","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" ADD,","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" DELETE","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" // duke.Todo representation - 0 means not done, 1 means done","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" // T | done? | desc","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" // duke.Deadline representation","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" // D | done? | desc | by","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" // duke.Event representation","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" // E | done? | desc | from | to","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" public TaskList() {","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" * Initialises the TaskList, given a list of strings of tasks in their database representations.","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" public TaskList(List\u003cString\u003e stringTasksList) throws DukeException.UnknownCommandException {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" assert taskList !\u003d null;","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" for (String s : stringTasksList) {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" this.taskList.add(db2Task(s));","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" * Gives users a way to find a task by searching for a keyword.","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" * @param keyword to search for in description, is case-sensitive","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" public void findTasks(String keyword) {","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" int num \u003d 0;","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" Task t \u003d this.taskList.get(i);","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" if (t.description.contains(keyword)) {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":" System.out.println((num + 1) + \". \" + t);","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" num++;","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" * Gets a task from the current taskList.","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" * @param index of task to get","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":" public Task getTask(int index) throws DukeException.TaskNotFoundException {","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" // Check if the index is within the valid range","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" if (index \u003e\u003d 1 \u0026\u0026 index \u003c\u003d taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" return taskList.get(index - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.TaskNotFoundException();","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" * Adds a task to the current taskList.","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" * @param task to be added","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" // Based on task type, extract traits","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" assert task !\u003d null;","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" // update prevTaskList","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" prevTaskList \u003d cloneTaskList(taskList);","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":" taskList.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" * Deletes a task from the duke.TaskList, given its index.","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" * @param index of task to delete","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" public void deleteTask(int index) throws DukeException.TaskNotFoundException {","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" if (index \u003c 1 || index \u003e taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.TaskNotFoundException();","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" // update prevTaskList","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" prevTaskList \u003d cloneTaskList(taskList);","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" taskList.remove(index - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" * markTask marks a task as completed by line number.","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":" * @param index of task to mark","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":" public void markTask(int index) throws DukeException.TaskNotFoundException {","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" if (index \u003c 1 || index \u003e taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.TaskNotFoundException();","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" // update prevTaskList","lastModifiedDate":"2024-02-07"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" prevTaskList \u003d cloneTaskList(taskList);","lastModifiedDate":"2024-02-07"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" Task t \u003d this.getTask(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":" t.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":" * unmarkTask unmarks a task as completed by line number.","lastModifiedDate":"2024-02-06"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":" * @param index of the task to unmark","lastModifiedDate":"2024-01-28"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" public void unmarkTask(int index) throws DukeException.TaskNotFoundException {","lastModifiedDate":"2024-01-28"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":" if (index \u003c 1 || index \u003e taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.TaskNotFoundException();","lastModifiedDate":"2024-01-28"},{"lineNumber":135,"author":{"gitId":"jieqiboh"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"jieqiboh"},"content":" // update prevTaskList","lastModifiedDate":"2024-02-07"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":" prevTaskList \u003d cloneTaskList(taskList);","lastModifiedDate":"2024-02-07"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":139,"author":{"gitId":"jieqiboh"},"content":" Task t \u003d this.getTask(index);","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"jieqiboh"},"content":" t.unmarkAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":141,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":142,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":144,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":145,"author":{"gitId":"jieqiboh"},"content":" * Reverts taskList to prevTaskList","lastModifiedDate":"2024-02-07"},{"lineNumber":146,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":147,"author":{"gitId":"jieqiboh"},"content":" public void undo() {","lastModifiedDate":"2024-02-07"},{"lineNumber":148,"author":{"gitId":"jieqiboh"},"content":" if (prevTaskList \u003d\u003d null) {","lastModifiedDate":"2024-02-07"},{"lineNumber":149,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Undo unsuccessful, no previous actions to undo!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":150,"author":{"gitId":"jieqiboh"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":151,"author":{"gitId":"jieqiboh"},"content":" ArrayList\u003cTask\u003e tmpTaskList \u003d cloneTaskList(taskList);","lastModifiedDate":"2024-02-07"},{"lineNumber":152,"author":{"gitId":"jieqiboh"},"content":" taskList \u003d prevTaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":153,"author":{"gitId":"jieqiboh"},"content":" prevTaskList \u003d tmpTaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":154,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Undo Successful!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":155,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":156,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":157,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":158,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":159,"author":{"gitId":"jieqiboh"},"content":" * Prints out the contents of the tasklist.","lastModifiedDate":"2024-02-06"},{"lineNumber":160,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":161,"author":{"gitId":"jieqiboh"},"content":" public void printTasks() {","lastModifiedDate":"2024-01-27"},{"lineNumber":162,"author":{"gitId":"jieqiboh"},"content":" for (int i \u003d 0; i \u003c this.taskList.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":163,"author":{"gitId":"jieqiboh"},"content":" System.out.println((i + 1) + \". \" + this.taskList.get(i));","lastModifiedDate":"2024-01-28"},{"lineNumber":164,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":165,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":166,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":167,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"jieqiboh"},"content":" * Gets number of tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":169,"author":{"gitId":"jieqiboh"},"content":" * @return int number of tasks","lastModifiedDate":"2024-01-28"},{"lineNumber":170,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":171,"author":{"gitId":"jieqiboh"},"content":" public int size() {","lastModifiedDate":"2024-01-27"},{"lineNumber":172,"author":{"gitId":"jieqiboh"},"content":" return this.taskList.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":173,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":174,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":175,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":176,"author":{"gitId":"jieqiboh"},"content":" * Converts the database representation of a Task to the Task object.","lastModifiedDate":"2024-02-06"},{"lineNumber":177,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":178,"author":{"gitId":"jieqiboh"},"content":" * @param dbTask the string rep of the duke.Task in the database","lastModifiedDate":"2024-01-28"},{"lineNumber":179,"author":{"gitId":"jieqiboh"},"content":" * @return Task the duke.Task object","lastModifiedDate":"2024-02-06"},{"lineNumber":180,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":181,"author":{"gitId":"jieqiboh"},"content":" public static Task db2Task(String dbTask) throws DukeException.UnknownCommandException {","lastModifiedDate":"2024-01-28"},{"lineNumber":182,"author":{"gitId":"jieqiboh"},"content":" String[] params \u003d dbTask.split(\" \\\\| \");","lastModifiedDate":"2024-01-27"},{"lineNumber":183,"author":{"gitId":"jieqiboh"},"content":" String type \u003d params[0];","lastModifiedDate":"2024-01-27"},{"lineNumber":184,"author":{"gitId":"jieqiboh"},"content":" switch (type) {","lastModifiedDate":"2024-01-27"},{"lineNumber":185,"author":{"gitId":"jieqiboh"},"content":" case \"T\": // To do","lastModifiedDate":"2024-01-27"},{"lineNumber":186,"author":{"gitId":"jieqiboh"},"content":" Todo todoTask \u003d Todo.db2Todo(dbTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":187,"author":{"gitId":"jieqiboh"},"content":" return todoTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":188,"author":{"gitId":"jieqiboh"},"content":" case \"D\": // duke.Deadline","lastModifiedDate":"2024-01-28"},{"lineNumber":189,"author":{"gitId":"jieqiboh"},"content":" Deadline deadlineTask \u003d Deadline.db2Deadline(dbTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":190,"author":{"gitId":"jieqiboh"},"content":" return deadlineTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":191,"author":{"gitId":"jieqiboh"},"content":" case \"E\": // duke.Event","lastModifiedDate":"2024-01-28"},{"lineNumber":192,"author":{"gitId":"jieqiboh"},"content":" Event eventTask \u003d Event.db2Event(dbTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":193,"author":{"gitId":"jieqiboh"},"content":" return eventTask;","lastModifiedDate":"2024-01-27"},{"lineNumber":194,"author":{"gitId":"jieqiboh"},"content":" default:","lastModifiedDate":"2024-01-27"},{"lineNumber":195,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Failed to convert string to task!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":196,"author":{"gitId":"jieqiboh"},"content":" throw new DukeException.UnknownCommandException();","lastModifiedDate":"2024-01-28"},{"lineNumber":197,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":198,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":199,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":200,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":201,"author":{"gitId":"jieqiboh"},"content":" * Converts a Task to their database representation.","lastModifiedDate":"2024-02-06"},{"lineNumber":202,"author":{"gitId":"jieqiboh"},"content":" *","lastModifiedDate":"2024-01-27"},{"lineNumber":203,"author":{"gitId":"jieqiboh"},"content":" * @param task the Task object","lastModifiedDate":"2024-02-06"},{"lineNumber":204,"author":{"gitId":"jieqiboh"},"content":" * @return String the string rep of duke.Task in the database","lastModifiedDate":"2024-01-28"},{"lineNumber":205,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":206,"author":{"gitId":"jieqiboh"},"content":" public static String task2Db(Task task) {","lastModifiedDate":"2024-01-27"},{"lineNumber":207,"author":{"gitId":"jieqiboh"},"content":" // Based on task type, extract traits","lastModifiedDate":"2024-01-27"},{"lineNumber":208,"author":{"gitId":"jieqiboh"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2024-01-27"},{"lineNumber":209,"author":{"gitId":"jieqiboh"},"content":" Todo todoTask \u003d (Todo) task;","lastModifiedDate":"2024-01-27"},{"lineNumber":210,"author":{"gitId":"jieqiboh"},"content":" return Todo.todo2Db(todoTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":211,"author":{"gitId":"jieqiboh"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2024-01-27"},{"lineNumber":212,"author":{"gitId":"jieqiboh"},"content":" Deadline deadlineTask \u003d (Deadline) task;","lastModifiedDate":"2024-01-27"},{"lineNumber":213,"author":{"gitId":"jieqiboh"},"content":" return Deadline.deadline2Db(deadlineTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":214,"author":{"gitId":"jieqiboh"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-27"},{"lineNumber":215,"author":{"gitId":"jieqiboh"},"content":" Event eventTask \u003d (Event) task;","lastModifiedDate":"2024-01-27"},{"lineNumber":216,"author":{"gitId":"jieqiboh"},"content":" return Event.event2Db(eventTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":217,"author":{"gitId":"jieqiboh"},"content":" } else {","lastModifiedDate":"2024-01-27"},{"lineNumber":218,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Failed to add task: \" + task);","lastModifiedDate":"2024-01-28"},{"lineNumber":219,"author":{"gitId":"jieqiboh"},"content":" return null;","lastModifiedDate":"2024-01-27"},{"lineNumber":220,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":221,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":222,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":223,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":224,"author":{"gitId":"jieqiboh"},"content":" * Clones taskList, for saving the previous state in case of an undo","lastModifiedDate":"2024-02-07"},{"lineNumber":225,"author":{"gitId":"jieqiboh"},"content":" * @param taskList to deep copy","lastModifiedDate":"2024-02-07"},{"lineNumber":226,"author":{"gitId":"jieqiboh"},"content":" * @return A deep copy of the task list","lastModifiedDate":"2024-02-07"},{"lineNumber":227,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":228,"author":{"gitId":"jieqiboh"},"content":" private ArrayList\u003cTask\u003e cloneTaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-02-07"},{"lineNumber":229,"author":{"gitId":"jieqiboh"},"content":" ArrayList\u003cTask\u003e newPrevTaskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-07"},{"lineNumber":230,"author":{"gitId":"jieqiboh"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-02-07"},{"lineNumber":231,"author":{"gitId":"jieqiboh"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2024-02-07"},{"lineNumber":232,"author":{"gitId":"jieqiboh"},"content":" Todo todoTask \u003d (Todo) task;","lastModifiedDate":"2024-02-07"},{"lineNumber":233,"author":{"gitId":"jieqiboh"},"content":" newPrevTaskList.add(new Todo(todoTask));","lastModifiedDate":"2024-02-07"},{"lineNumber":234,"author":{"gitId":"jieqiboh"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2024-02-07"},{"lineNumber":235,"author":{"gitId":"jieqiboh"},"content":" Deadline deadlineTask \u003d (Deadline) task;","lastModifiedDate":"2024-02-07"},{"lineNumber":236,"author":{"gitId":"jieqiboh"},"content":" newPrevTaskList.add(new Deadline(deadlineTask));","lastModifiedDate":"2024-02-07"},{"lineNumber":237,"author":{"gitId":"jieqiboh"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-02-07"},{"lineNumber":238,"author":{"gitId":"jieqiboh"},"content":" Event eventTask \u003d (Event) task;","lastModifiedDate":"2024-02-07"},{"lineNumber":239,"author":{"gitId":"jieqiboh"},"content":" newPrevTaskList.add(new Event(eventTask));","lastModifiedDate":"2024-02-07"},{"lineNumber":240,"author":{"gitId":"jieqiboh"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":241,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Failed to add task: \" + task);","lastModifiedDate":"2024-02-07"},{"lineNumber":242,"author":{"gitId":"jieqiboh"},"content":" return null;","lastModifiedDate":"2024-02-07"},{"lineNumber":243,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":244,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":245,"author":{"gitId":"jieqiboh"},"content":" return newPrevTaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":246,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":247,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jieqiboh":247}},{"path":"src/main/java/duke/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":" * Task that has a description only.","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" * Default constructor, isDone set to false.","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" * @param description of Todo","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" public Todo(String description, Boolean isDone) {","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" super(description, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" * Constructor used to clone a Todo object","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" * @param todo","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" public Todo(Todo todo) {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" super(todo);","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" * Converts the database representation of Todo to a Todo Task","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" * @param dbTodo the string rep of Todo in the database","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" * @return Task the todo Task object","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" public static Todo db2Todo(String dbTodo) {","lastModifiedDate":"2024-01-27"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" // T | 0 | Buy Bread","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":" String[] params \u003d dbTodo.split(\" \\\\| \");","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" Boolean isDone \u003d params[1].equals(\"1\") ? true : false; // if \"1\", means isDone","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d params[2];","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" return new Todo(desc, isDone);","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":" * Converts the a Todo Task to the database representation of Todo.","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" * @param todoTask is the todo Task object","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" * @return Task the string rep of Todo in the database","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-27"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" public static String todo2Db(Todo todoTask) {","lastModifiedDate":"2024-01-27"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" // T | 0 | Buy Bread","lastModifiedDate":"2024-01-27"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" String done \u003d todoTask.isDone ? \"1\" : \"0\";","lastModifiedDate":"2024-01-27"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" String desc \u003d todoTask.description;","lastModifiedDate":"2024-01-27"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" return \"T\" + \" | \" + done + \" | \" + desc;","lastModifiedDate":"2024-01-27"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-27"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" String dbTodo \u003d \"T | 0 | Buy Bread\";","lastModifiedDate":"2024-01-27"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" Todo todoTask \u003d Todo.db2Todo(dbTodo);","lastModifiedDate":"2024-01-27"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":" todoTask.markAsDone();","lastModifiedDate":"2024-01-27"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" System.out.println(todoTask);","lastModifiedDate":"2024-01-27"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" System.out.println(Todo.todo2Db(todoTask));","lastModifiedDate":"2024-01-27"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jieqiboh":67}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"/**","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":" * Deals with interactions from the user","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"public class Ui {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":" private static String border \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" * Prints a greeting for the user upon bot startup","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" public void greet() {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" String logo \u003d","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" \" _ \\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" + \" ___| |_ _____ _____ \\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" + \"/ __| __/ _ \\\\ \\\\ / / _ \\\\\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" + \"\\\\__ \\\\ || __/\\\\ V / __/\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" + \"|___/\\\\__\\\\___| \\\\_/ \\\\___|\\n\";","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" System.out.println(border);","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"What\u0027s up! I\u0027m steve\");","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"What do you want to do?\");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" System.out.println(border);","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" System.out.println(\"Failed to read tasks file!\");","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" ui.greet();","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jieqiboh":33}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"jieqiboh":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.MainWindow\"\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"600.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"jieqiboh":19}},{"path":"src/test/java/duke/DatesTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"public class DatesTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" public void testIsValidInputDate() {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" String invalidInputDate1 \u003d \"01/13/2023 1200\";","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" String invalidInputDate2 \u003d \"01/13/2023 2401\";","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" String validInputDate1 \u003d \"15/01/2023 1430\";","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" String validInputDate2 \u003d \"01/01/2025 2330\";","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" assertEquals(true, Dates.isValidInputDate(validInputDate1));","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" assertEquals(true, Dates.isValidInputDate(validInputDate2));","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" assertEquals(false, Dates.isValidInputDate(invalidInputDate1));","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" assertEquals(false, Dates.isValidInputDate(invalidInputDate2));","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" public void testConvMethods() {","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" String validInputDate1 \u003d \"15/01/2023 1430\";","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" String validInputDate2 \u003d \"01/01/2025 2330\";","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" // Convert valid date strings to LocalDateTime objects","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":" LocalDateTime validDate1 \u003d Dates.inputStr2DateTime(validInputDate1);","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" LocalDateTime validDate2 \u003d Dates.inputStr2DateTime(validInputDate2);","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" // Convert LocalDateTime objects to string for storage in database file","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":" String validDate1Str \u003d Dates.dateTime2DbStr(validDate1);","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" String validDate2Str \u003d Dates.dateTime2DbStr(validDate2);","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" // return the db string format when printing","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"15 January 2023 14:30\", validDate1Str);","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"01 January 2025 23:30\", validDate2Str);","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jieqiboh":42}},{"path":"src/test/java/duke/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import java.util.List;","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"public class StorageTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" private String filePath \u003d \"data/duketest.txt\";","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" private Storage testStorage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" public void testReadWriteLines() {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" List\u003cString\u003e input \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" input.add(\"E | 0 | project meeting | 01 October 2023 00:00 | 01 December 2024 23:59\");","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" input.add(\"E | 1 | long project meeting | 01 May 2000 00:01 | 01 May 2020 10:00\");","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":" input.add(\"D | 0 | return book | 01 May 2020 10:00\");","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" input.add(\"D | 0 | do homework | no idea :-p\");","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" input.add(\"E | 0 | project meeting 2 | Mon 2pm | 5pm\");","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" input.add(\"D | 0 | return book | today\");","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" testStorage.writeLinesToFile(input);","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" List\u003cString\u003e output \u003d testStorage.readLinesFromFile();","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" assertEquals(input, output);","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jieqiboh":30}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"package duke;","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"public class TaskListTest {","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":" private final TaskList testTasks \u003d new TaskList();","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" public void testGetTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":" // get task that doesn\u0027t exist","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":" testTasks.getTask(0);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":" // get task that exists","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Todo(\"buy bread\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":" String todoDesc \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":" todoDesc \u003d testTasks.getTask(1).description;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException.TaskNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"buy bread\", todoDesc);","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" public void testMarkTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Deadline(\"return book\", \"Mon 4pm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" // mark task that doesn\u0027t exist","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":" testTasks.markTask(5);","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException.TaskNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"jieqiboh"},"content":" // mark task that exists","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"jieqiboh"},"content":" testTasks.markTask(1);","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException.TaskNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":47,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":48,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":49,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"jieqiboh"},"content":" // verify task marked","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"jieqiboh"},"content":" Task t \u003d testTasks.getTask(1);","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"return book\", t.description);","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"jieqiboh"},"content":" assertEquals(true, t.isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException.TaskNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"jieqiboh"},"content":" public void testUnmarkTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Deadline(\"return book\", \"Mon 4pm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"jieqiboh"},"content":" // unmark task that doesn\u0027t exist","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"jieqiboh"},"content":" testTasks.unmarkTask(5);","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException.TaskNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"jieqiboh"},"content":" // unmark task that exists","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"jieqiboh"},"content":" testTasks.unmarkTask(1);","lastModifiedDate":"2024-01-28"},{"lineNumber":74,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException.TaskNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":75,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":77,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":78,"author":{"gitId":"jieqiboh"},"content":" // verify task unmarked","lastModifiedDate":"2024-01-28"},{"lineNumber":79,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"jieqiboh"},"content":" Task t \u003d testTasks.getTask(1);","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"return book\", t.description);","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"jieqiboh"},"content":" assertEquals(false, t.isDone);","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException.TaskNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":85,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":86,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":87,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":88,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":89,"author":{"gitId":"jieqiboh"},"content":" public void testDeleteTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":90,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Deadline(\"return book\", \"Mon 4pm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":91,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"jieqiboh"},"content":" // delete existing task","lastModifiedDate":"2024-01-28"},{"lineNumber":93,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":94,"author":{"gitId":"jieqiboh"},"content":" testTasks.deleteTask(1);","lastModifiedDate":"2024-01-28"},{"lineNumber":95,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException.TaskNotFoundException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":96,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":97,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":98,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":99,"author":{"gitId":"jieqiboh"},"content":" // delete task that doesn\u0027t exist","lastModifiedDate":"2024-01-28"},{"lineNumber":100,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":101,"author":{"gitId":"jieqiboh"},"content":" testTasks.deleteTask(-1);","lastModifiedDate":"2024-01-28"},{"lineNumber":102,"author":{"gitId":"jieqiboh"},"content":" fail();","lastModifiedDate":"2024-01-28"},{"lineNumber":103,"author":{"gitId":"jieqiboh"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":104,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":105,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":106,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":107,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":108,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"jieqiboh"},"content":" public void testAddTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":110,"author":{"gitId":"jieqiboh"},"content":" assertEquals(0, testTasks.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":111,"author":{"gitId":"jieqiboh"},"content":" Todo t \u003d new Todo(\"Buy bread\");","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(t);","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"jieqiboh"},"content":" assertEquals(1, testTasks.size());","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-01-28"},{"lineNumber":117,"author":{"gitId":"jieqiboh"},"content":" public void testFindTasks() {","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Todo(\"Buy Bread\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Todo(\"Borrow book\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Deadline(\"Return Bread\", \"tomorrow\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Todo(\"eat bread\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":122,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Event(\"Bread discussion\", \"Mon 4pm\", \"5pm\"));","lastModifiedDate":"2024-01-28"},{"lineNumber":123,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":124,"author":{"gitId":"jieqiboh"},"content":" testTasks.findTasks(\"Bread\");","lastModifiedDate":"2024-01-28"},{"lineNumber":125,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":126,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":127,"author":{"gitId":"jieqiboh"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":128,"author":{"gitId":"jieqiboh"},"content":" public void testUndo() {","lastModifiedDate":"2024-02-07"},{"lineNumber":129,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Todo(\"Buy Bread\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":130,"author":{"gitId":"jieqiboh"},"content":" testTasks.undo();","lastModifiedDate":"2024-02-07"},{"lineNumber":131,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":132,"author":{"gitId":"jieqiboh"},"content":" assertEquals(0, testTasks.size());","lastModifiedDate":"2024-02-07"},{"lineNumber":133,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":134,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Deadline(\"Return Bread\", \"tomorrow\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":135,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Todo(\"eat bread\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":136,"author":{"gitId":"jieqiboh"},"content":" testTasks.addTask(new Event(\"Bread discussion\", \"Mon 4pm\", \"5pm\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":137,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":138,"author":{"gitId":"jieqiboh"},"content":" // delete existing task","lastModifiedDate":"2024-02-07"},{"lineNumber":139,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":140,"author":{"gitId":"jieqiboh"},"content":" testTasks.deleteTask(1);","lastModifiedDate":"2024-02-07"},{"lineNumber":141,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException.TaskNotFoundException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":142,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":143,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":144,"author":{"gitId":"jieqiboh"},"content":" testTasks.undo();","lastModifiedDate":"2024-02-07"},{"lineNumber":145,"author":{"gitId":"jieqiboh"},"content":" assertEquals(3, testTasks.size());","lastModifiedDate":"2024-02-07"},{"lineNumber":146,"author":{"gitId":"jieqiboh"},"content":" testTasks.undo();","lastModifiedDate":"2024-02-07"},{"lineNumber":147,"author":{"gitId":"jieqiboh"},"content":" assertEquals(2, testTasks.size());","lastModifiedDate":"2024-02-07"},{"lineNumber":148,"author":{"gitId":"jieqiboh"},"content":" testTasks.undo();","lastModifiedDate":"2024-02-07"},{"lineNumber":149,"author":{"gitId":"jieqiboh"},"content":" assertEquals(3, testTasks.size());","lastModifiedDate":"2024-02-07"},{"lineNumber":150,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":151,"author":{"gitId":"jieqiboh"},"content":" // mark and undo marking","lastModifiedDate":"2024-02-07"},{"lineNumber":152,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":153,"author":{"gitId":"jieqiboh"},"content":" testTasks.markTask(1);","lastModifiedDate":"2024-02-07"},{"lineNumber":154,"author":{"gitId":"jieqiboh"},"content":" Task t \u003d testTasks.getTask(1);","lastModifiedDate":"2024-02-07"},{"lineNumber":155,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Return Bread\", t.description);","lastModifiedDate":"2024-02-07"},{"lineNumber":156,"author":{"gitId":"jieqiboh"},"content":" assertEquals(true, t.isDone);","lastModifiedDate":"2024-02-07"},{"lineNumber":157,"author":{"gitId":"jieqiboh"},"content":" testTasks.undo();","lastModifiedDate":"2024-02-07"},{"lineNumber":158,"author":{"gitId":"jieqiboh"},"content":" t \u003d testTasks.getTask(1);","lastModifiedDate":"2024-02-07"},{"lineNumber":159,"author":{"gitId":"jieqiboh"},"content":" assertEquals(false, t.isDone);","lastModifiedDate":"2024-02-07"},{"lineNumber":160,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException.TaskNotFoundException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":161,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":162,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":163,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":164,"author":{"gitId":"jieqiboh"},"content":" // unmark and undo unmarking","lastModifiedDate":"2024-02-07"},{"lineNumber":165,"author":{"gitId":"jieqiboh"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":166,"author":{"gitId":"jieqiboh"},"content":" testTasks.markTask(2);","lastModifiedDate":"2024-02-07"},{"lineNumber":167,"author":{"gitId":"jieqiboh"},"content":" testTasks.unmarkTask(2);","lastModifiedDate":"2024-02-07"},{"lineNumber":168,"author":{"gitId":"jieqiboh"},"content":" Task t \u003d testTasks.getTask(2);","lastModifiedDate":"2024-02-07"},{"lineNumber":169,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"eat bread\", t.description);","lastModifiedDate":"2024-02-07"},{"lineNumber":170,"author":{"gitId":"jieqiboh"},"content":" assertEquals(false, t.isDone);","lastModifiedDate":"2024-02-07"},{"lineNumber":171,"author":{"gitId":"jieqiboh"},"content":" testTasks.undo();","lastModifiedDate":"2024-02-07"},{"lineNumber":172,"author":{"gitId":"jieqiboh"},"content":" t \u003d testTasks.getTask(2);","lastModifiedDate":"2024-02-07"},{"lineNumber":173,"author":{"gitId":"jieqiboh"},"content":" assertEquals(true, t.isDone);","lastModifiedDate":"2024-02-07"},{"lineNumber":174,"author":{"gitId":"jieqiboh"},"content":" } catch (DukeException.TaskNotFoundException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":175,"author":{"gitId":"jieqiboh"},"content":" assertEquals(\"Could not find task!\", e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":176,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":177,"author":{"gitId":"jieqiboh"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":178,"author":{"gitId":"jieqiboh"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"jieqiboh":178}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"clear","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"todo borrow book","lastModifiedDate":"2024-01-23"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"todo return book","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"deadline return book /by Sunday","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"todo","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"event project meeting 2 /from Mon 2pm","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"event project meeting 3 /to 4pm","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"deadline return book","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"mark 2","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"mark 5","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"unmark 5","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":"unmark","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":"mark","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"delete 1","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"delete 2","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"list","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"hi","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"bye","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"jieqiboh":25}},{"path":"text-ui-test/input2.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"clear","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"event project meeting /from 01/10/2023 0000 /to 01/12/2024 2359","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"event long project meeting /from 01/05/2000 0001 /to 01/05/2020 1000","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"deadline return book /by 01/05/2020 1000","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"deadline do homework /by no idea :-p","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":"list","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"event project meeting 2 /from Mon 2pm /to 5pm","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"deadline return book /by today","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"mark 2","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"mark 5","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"list","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":"unmark 5","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"find meeting","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"list","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"bye","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"jieqiboh":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":"jieqiboh"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/duke/*.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":"jieqiboh"},"content":"java -classpath ../bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-28"},{"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":{"jieqiboh":2,"-":36}},{"path":"text-ui-test/runtest2.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"jieqiboh"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2024-01-27"},{"lineNumber":2,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":3,"author":{"gitId":"jieqiboh"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2024-01-27"},{"lineNumber":4,"author":{"gitId":"jieqiboh"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2024-01-27"},{"lineNumber":5,"author":{"gitId":"jieqiboh"},"content":"then","lastModifiedDate":"2024-01-27"},{"lineNumber":6,"author":{"gitId":"jieqiboh"},"content":" mkdir ../bin","lastModifiedDate":"2024-01-27"},{"lineNumber":7,"author":{"gitId":"jieqiboh"},"content":"fi","lastModifiedDate":"2024-01-27"},{"lineNumber":8,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":9,"author":{"gitId":"jieqiboh"},"content":"# delete output from previous run","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"jieqiboh"},"content":"if [ -e \"./ACTUAL2.TXT\" ]","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"jieqiboh"},"content":"then","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"jieqiboh"},"content":" rm ACTUAL2.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":13,"author":{"gitId":"jieqiboh"},"content":"fi","lastModifiedDate":"2024-01-27"},{"lineNumber":14,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"jieqiboh"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"jieqiboh"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/duke/*.java","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"jieqiboh"},"content":"then","lastModifiedDate":"2024-01-27"},{"lineNumber":18,"author":{"gitId":"jieqiboh"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2024-01-27"},{"lineNumber":19,"author":{"gitId":"jieqiboh"},"content":" exit 1","lastModifiedDate":"2024-01-27"},{"lineNumber":20,"author":{"gitId":"jieqiboh"},"content":"fi","lastModifiedDate":"2024-01-27"},{"lineNumber":21,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":22,"author":{"gitId":"jieqiboh"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":23,"author":{"gitId":"jieqiboh"},"content":"java -classpath ../bin duke.Duke \u003c input2.txt \u003e ACTUAL2.TXT","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":25,"author":{"gitId":"jieqiboh"},"content":"# convert to UNIX format","lastModifiedDate":"2024-01-27"},{"lineNumber":26,"author":{"gitId":"jieqiboh"},"content":"cp EXPECTED2.TXT EXPECTED-UNIX2.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":27,"author":{"gitId":"jieqiboh"},"content":"dos2unix ACTUAL2.TXT EXPECTED-UNIX2.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":28,"author":{"gitId":"jieqiboh"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":29,"author":{"gitId":"jieqiboh"},"content":"# compare the output to the expected output","lastModifiedDate":"2024-01-27"},{"lineNumber":30,"author":{"gitId":"jieqiboh"},"content":"diff ACTUAL2.TXT EXPECTED-UNIX2.TXT","lastModifiedDate":"2024-01-27"},{"lineNumber":31,"author":{"gitId":"jieqiboh"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2024-01-27"},{"lineNumber":32,"author":{"gitId":"jieqiboh"},"content":"then","lastModifiedDate":"2024-01-27"},{"lineNumber":33,"author":{"gitId":"jieqiboh"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2024-01-27"},{"lineNumber":34,"author":{"gitId":"jieqiboh"},"content":" exit 0","lastModifiedDate":"2024-01-27"},{"lineNumber":35,"author":{"gitId":"jieqiboh"},"content":"else","lastModifiedDate":"2024-01-27"},{"lineNumber":36,"author":{"gitId":"jieqiboh"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2024-01-27"},{"lineNumber":37,"author":{"gitId":"jieqiboh"},"content":" exit 1","lastModifiedDate":"2024-01-27"},{"lineNumber":38,"author":{"gitId":"jieqiboh"},"content":"fi","lastModifiedDate":"2024-01-27"}],"authorContributionMap":{"jieqiboh":38}}] diff --git a/jieqiboh_ip_master/commits.json b/jieqiboh_ip_master/commits.json index 98c1d12b..3a73c033 100644 --- a/jieqiboh_ip_master/commits.json +++ b/jieqiboh_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"jieqiboh":[{"date":"2024-01-22","commitResults":[{"hash":"8f7d8e9ca8ae3b17d24d779ef05d32e41c6d74ac","isMergeCommit":false,"messageTitle":"Gave chatbot a new name, added initial skeleton","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"1184bf94516c358368ec18f57dc038d165023b8f","isMergeCommit":false,"messageTitle":"Added echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}}]},{"date":"2024-01-23","commitResults":[{"hash":"2ce45231919b3ef6375e3522664dec96dfa0b56e","isMergeCommit":false,"messageTitle":"Added ability to mark and unmark tasks as done","messageBody":"","tags":["Level-3","Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":2}}},{"hash":"b9549377efdb05d0a5bb4f4b2bd29b5ccce35838","isMergeCommit":false,"messageTitle":"Added Todos, Events and Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":4}}},{"hash":"03483b57f96d2284ebce296625aaf903adf8205a","isMergeCommit":false,"messageTitle":"Added basic text-ui test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"sh":{"insertions":0,"deletions":0}}},{"hash":"fb89007069945cc6078a412781937d341d1fe71a","isMergeCommit":false,"messageTitle":"Added DukeExceptions which handles Duke specific errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":141,"deletions":65}}},{"hash":"ce86d2fbbcd83d20efb681d7ee1218fc8723fae7","isMergeCommit":false,"messageTitle":"Added ability to delete tasks and used ArrayList to store tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":30,"deletions":12}}}]},{"date":"2024-01-27","commitResults":[{"hash":"5c101b84874a36a2d3265f0e5673d953b40792e7","isMergeCommit":false,"messageTitle":"Added Save Feature, as well as TaskListFileHandler class to handle read and writes to database file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":553,"deletions":30}}},{"hash":"67a3e3918c05244eae504769d7a0a359c9750844","isMergeCommit":true,"messageTitle":"Merge branch \u0027Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"03520064848fae96f4d9227b81f9c434538a2239","isMergeCommit":false,"messageTitle":"Added DateTime support in Deadline and Event Tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":0},"java":{"insertions":164,"deletions":4},"sh":{"insertions":38,"deletions":0}}},{"hash":"0f4375c2a572cf1d863d8e609380ae8fe7371afb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"8f55183c2e9cf304b2e2084a22ec64b4eab636aa","isMergeCommit":false,"messageTitle":"Updated Storage and TaskList to write to an ArrayList first","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":3},"java":{"insertions":161,"deletions":232}}},{"hash":"5b3edd7906a01cd6aece2e5ee1323d20ffe37b7b","isMergeCommit":false,"messageTitle":"Added Parser and Ui implementations","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":6},"java":{"insertions":238,"deletions":174}}},{"hash":"f20da312d10a713d985a6fc6fe9e9d33d18449ff","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"bc2721f07d8754a925b70ff248154f65193856ed","isMergeCommit":false,"messageTitle":"Organised classes into duke package","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":71,"deletions":50}}},{"hash":"1e6372d2da38f4c63ed1ae9c5652dc0d5fc292eb","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"589bdc68fa89cd66f46391c305c5d2eece203a55","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"17af454fcc27bf80bf7e5073f3cb17a2c90872d0","isMergeCommit":false,"messageTitle":"Added JUnit Tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":1},"java":{"insertions":234,"deletions":90},"sh":{"insertions":2,"deletions":2}}},{"hash":"a6b8f091f310504bf3b83e5fd292a3ad4c80ffea","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"e5119985321bc4d1bcc33f6d13bf2c47d276def9","isMergeCommit":false,"messageTitle":"Updated runtest and runtest2 files","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":2},"java":{"insertions":5,"deletions":5},"sh":{"insertions":2,"deletions":2}}},{"hash":"21dccfdc90d36e34bce6d92e9b5e2d87a4a73918","isMergeCommit":false,"messageTitle":"Added more javadocs to public methods","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":5},"java":{"insertions":129,"deletions":117}}},{"hash":"6538d9c396693780c3f13e5379d79868e1132dc0","isMergeCommit":false,"messageTitle":"Updated formatting to follow coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":123,"deletions":184}}},{"hash":"5c447f51f101449b966d78cb774172178e8d8b06","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"13c8f7cab85184141d3e8a43b689c4dfca37e504","isMergeCommit":true,"messageTitle":"Fixed merge conflict between javadoc and coding-standard","messageBody":"","tags":["A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"4eec6573e81fde5719cd5102706cd7ae38022b33","isMergeCommit":false,"messageTitle":"Added Find feature to search task descriptions","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":42,"deletions":2}}},{"hash":"d516fc3caf5f998ce41cdb356176b00a6dbb5eab","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-31","commitResults":[{"hash":"26a2d0dcc05b6a517853f726d03dcbb378d2cc2e","isMergeCommit":false,"messageTitle":"Added checkstyle, updated formatting","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"txt":{"insertions":5,"deletions":2},"java":{"insertions":143,"deletions":82}}},{"hash":"be303c3e186fab11fac7d0aa1428a10d22c14d8d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Checkstyle\u0027","messageBody":"","tags":["A-Checkstyle"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-02","commitResults":[{"hash":"3ab5869a515cdee4fa79145cba81c5b3eea12618","isMergeCommit":false,"messageTitle":"Changed application to use JavaFX and implemented a basic UI","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":16,"deletions":2},"txt":{"insertions":5,"deletions":5},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":205,"deletions":8}}},{"hash":"81ae3daf8299291aa56c193cebf9fc58ddcaafa0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"1209efb071e0f1e9d8d767af8e2eb841d1600129","isMergeCommit":false,"messageTitle":"Reformat JavaDocs comments","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":4},"java":{"insertions":89,"deletions":84}}},{"hash":"bf47611241f10bd394d109a6c4f61df11a881d8b","isMergeCommit":false,"messageTitle":"Add Assertions","messageBody":"","tags":["A-Assertions"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"4ceb53a7e0065876f08d2b6bb77b46b8e488dd59","isMergeCommit":true,"messageTitle":"Merge pull request #1 from jieqiboh/branch-A-Assertions","messageBody":"Add Assertions","fileTypesAndContributionMap":{}},{"hash":"baf67aad7af48d3e4ebe31513dbdda2513c1de6c","isMergeCommit":false,"messageTitle":"Change names of constants referencing image paths","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":5,"deletions":5}}},{"hash":"6c14f81e2adbebb10f1f30e6700c15cb14d2a3d9","isMergeCommit":true,"messageTitle":"Merge pull request #2 from jieqiboh/branch-A-CodeQuality","messageBody":"Improve Code Quality","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"jieqiboh":{"java":1443,"md":0,"fxml":35,"sh":40,"bat":0,"gradle":22,"txt":58}},"authorContributionVariance":{"jieqiboh":203776.77},"authorDisplayNameMap":{"jieqiboh":"CS2103T-W11-1 BOH ..E QI"}} +{"authorDailyContributionsMap":{"jieqiboh":[{"date":"2024-01-22","commitResults":[{"hash":"8f7d8e9ca8ae3b17d24d779ef05d32e41c6d74ac","isMergeCommit":false,"messageTitle":"Gave chatbot a new name, added initial skeleton","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"1184bf94516c358368ec18f57dc038d165023b8f","isMergeCommit":false,"messageTitle":"Added echo feature","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}}]},{"date":"2024-01-23","commitResults":[{"hash":"2ce45231919b3ef6375e3522664dec96dfa0b56e","isMergeCommit":false,"messageTitle":"Added ability to mark and unmark tasks as done","messageBody":"","tags":["Level-3","Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":2}}},{"hash":"b9549377efdb05d0a5bb4f4b2bd29b5ccce35838","isMergeCommit":false,"messageTitle":"Added Todos, Events and Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":78,"deletions":4}}},{"hash":"03483b57f96d2284ebce296625aaf903adf8205a","isMergeCommit":false,"messageTitle":"Added basic text-ui test","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"sh":{"insertions":0,"deletions":0}}},{"hash":"fb89007069945cc6078a412781937d341d1fe71a","isMergeCommit":false,"messageTitle":"Added DukeExceptions which handles Duke specific errors","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":141,"deletions":65}}},{"hash":"ce86d2fbbcd83d20efb681d7ee1218fc8723fae7","isMergeCommit":false,"messageTitle":"Added ability to delete tasks and used ArrayList to store tasks","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":30,"deletions":12}}}]},{"date":"2024-01-27","commitResults":[{"hash":"5c101b84874a36a2d3265f0e5673d953b40792e7","isMergeCommit":false,"messageTitle":"Added Save Feature, as well as TaskListFileHandler class to handle read and writes to database file","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":553,"deletions":30}}},{"hash":"67a3e3918c05244eae504769d7a0a359c9750844","isMergeCommit":true,"messageTitle":"Merge branch \u0027Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"03520064848fae96f4d9227b81f9c434538a2239","isMergeCommit":false,"messageTitle":"Added DateTime support in Deadline and Event Tasks","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":17,"deletions":0},"java":{"insertions":164,"deletions":4},"sh":{"insertions":38,"deletions":0}}},{"hash":"0f4375c2a572cf1d863d8e609380ae8fe7371afb","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-28","commitResults":[{"hash":"8f55183c2e9cf304b2e2084a22ec64b4eab636aa","isMergeCommit":false,"messageTitle":"Updated Storage and TaskList to write to an ArrayList first","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":3},"java":{"insertions":161,"deletions":232}}},{"hash":"5b3edd7906a01cd6aece2e5ee1323d20ffe37b7b","isMergeCommit":false,"messageTitle":"Added Parser and Ui implementations","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":6},"java":{"insertions":238,"deletions":174}}},{"hash":"f20da312d10a713d985a6fc6fe9e9d33d18449ff","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"bc2721f07d8754a925b70ff248154f65193856ed","isMergeCommit":false,"messageTitle":"Organised classes into duke package","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":71,"deletions":50}}},{"hash":"1e6372d2da38f4c63ed1ae9c5652dc0d5fc292eb","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"589bdc68fa89cd66f46391c305c5d2eece203a55","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"17af454fcc27bf80bf7e5073f3cb17a2c90872d0","isMergeCommit":false,"messageTitle":"Added JUnit Tests","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":1},"java":{"insertions":234,"deletions":90},"sh":{"insertions":2,"deletions":2}}},{"hash":"a6b8f091f310504bf3b83e5fd292a3ad4c80ffea","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"e5119985321bc4d1bcc33f6d13bf2c47d276def9","isMergeCommit":false,"messageTitle":"Updated runtest and runtest2 files","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":2},"java":{"insertions":5,"deletions":5},"sh":{"insertions":2,"deletions":2}}},{"hash":"21dccfdc90d36e34bce6d92e9b5e2d87a4a73918","isMergeCommit":false,"messageTitle":"Added more javadocs to public methods","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":5},"java":{"insertions":129,"deletions":117}}},{"hash":"6538d9c396693780c3f13e5379d79868e1132dc0","isMergeCommit":false,"messageTitle":"Updated formatting to follow coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":123,"deletions":184}}},{"hash":"5c447f51f101449b966d78cb774172178e8d8b06","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"13c8f7cab85184141d3e8a43b689c4dfca37e504","isMergeCommit":true,"messageTitle":"Fixed merge conflict between javadoc and coding-standard","messageBody":"","tags":["A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"4eec6573e81fde5719cd5102706cd7ae38022b33","isMergeCommit":false,"messageTitle":"Added Find feature to search task descriptions","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":42,"deletions":2}}},{"hash":"d516fc3caf5f998ce41cdb356176b00a6dbb5eab","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]},{"date":"2024-01-31","commitResults":[{"hash":"26a2d0dcc05b6a517853f726d03dcbb378d2cc2e","isMergeCommit":false,"messageTitle":"Added checkstyle, updated formatting","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":6,"deletions":0},"txt":{"insertions":5,"deletions":2},"java":{"insertions":143,"deletions":82}}},{"hash":"be303c3e186fab11fac7d0aa1428a10d22c14d8d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Checkstyle\u0027","messageBody":"","tags":["A-Checkstyle"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-02","commitResults":[{"hash":"3ab5869a515cdee4fa79145cba81c5b3eea12618","isMergeCommit":false,"messageTitle":"Changed application to use JavaFX and implemented a basic UI","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":16,"deletions":2},"txt":{"insertions":5,"deletions":5},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":205,"deletions":8}}},{"hash":"81ae3daf8299291aa56c193cebf9fc58ddcaafa0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"1209efb071e0f1e9d8d767af8e2eb841d1600129","isMergeCommit":false,"messageTitle":"Reformat JavaDocs comments","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":4},"java":{"insertions":89,"deletions":84}}},{"hash":"bf47611241f10bd394d109a6c4f61df11a881d8b","isMergeCommit":false,"messageTitle":"Add Assertions","messageBody":"","tags":["A-Assertions"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":0}}},{"hash":"4ceb53a7e0065876f08d2b6bb77b46b8e488dd59","isMergeCommit":true,"messageTitle":"Merge pull request #1 from jieqiboh/branch-A-Assertions","messageBody":"Add Assertions","fileTypesAndContributionMap":{}},{"hash":"baf67aad7af48d3e4ebe31513dbdda2513c1de6c","isMergeCommit":false,"messageTitle":"Change names of constants referencing image paths","messageBody":"","tags":["A-CodeQuality"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":5,"deletions":5}}},{"hash":"6c14f81e2adbebb10f1f30e6700c15cb14d2a3d9","isMergeCommit":true,"messageTitle":"Merge pull request #2 from jieqiboh/branch-A-CodeQuality","messageBody":"Improve Code Quality","fileTypesAndContributionMap":{}}]},{"date":"2024-02-07","commitResults":[{"hash":"4536c90a5532ae9d62eff46205156180904252cd","isMergeCommit":false,"messageTitle":"Undo Feature","messageBody":"There is no way for a user to undo an operation they performed\npreviously.\n\nA user may accidentally delete a Task, and want to undo it.\n\nLet\u0027s upgrade Steve and add a way to maintain the previous state\nof the list of tasks, so that undoing is possible.\n","tags":["BCD-Extension","A-FullCommitMessage"],"fileTypesAndContributionMap":{"java":{"insertions":290,"deletions":101}}},{"hash":"1160729dcad478628255d6c6aa729c8edb60a1f9","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-BCD-Extension\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"jieqiboh":{"java":1632,"md":0,"fxml":35,"sh":40,"bat":0,"gradle":22,"txt":58}},"authorContributionVariance":{"jieqiboh":195221.03},"authorDisplayNameMap":{"jieqiboh":"CS2103T-W11-1 BOH ..E QI"}} diff --git a/kab-dot_ip_master/authorship.json b/kab-dot_ip_master/authorship.json index b175e596..768fdfd7 100644 --- a/kab-dot_ip_master/authorship.json +++ b/kab-dot_ip_master/authorship.json @@ -1 +1 @@ -[{"path":".data/text/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"D | 1 | read a book | 2022-01-01 1200","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"T | 0 | write a book","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"kab-dot":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":"kab-dot"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-02"},{"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":"kab-dot"},"content":"checkstyle {","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":" testImplementation \u0027org.junit.jupiter:junit-jupiter:5.8.1\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":" testImplementation \u0027org.junit.jupiter:junit-jupiter:5.8.1\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" testImplementation \u0027org.junit.jupiter:junit-jupiter:5.8.1\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" testImplementation \u0027junit:junit:4.13.1\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"kab-dot":10,"-":41}},{"path":"src/main/java/duke/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"import java.util.List;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":" * Represents a command that can be executed by the Duke program.","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":"public class Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":" public enum CommandType {","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":" BYE, LIST, TODO, DEADLINE, EVENT, DELETE, MARK, UNMARK, FIND, INVALID","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":" * Enumerates the possible types of commands.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":" private CommandType type;","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":" private String argument;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" * Constructs a Command object with the specified type and argument.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":" * @param type The type of the command.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":" * @param argument The argument associated with the command.","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":" public Command(CommandType type, String argument) {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":" this.argument \u003d argument;","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"kab-dot"},"content":" * Executes the command based on its type.","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"kab-dot"},"content":" * @param tasks The TaskList on which the command operates.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"kab-dot"},"content":" * @param ui The Ui used to interact with the user.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"kab-dot"},"content":" * @param storage The Storage used to save and load tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"kab-dot"},"content":" * @throws DukeException If there is an error executing the command.","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"kab-dot"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":" switch (type) {","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"kab-dot"},"content":" case BYE:","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"kab-dot"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"kab-dot"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"kab-dot"},"content":" case LIST:","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"kab-dot"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"kab-dot"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"kab-dot"},"content":" case TODO:","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"kab-dot"},"content":" tasks.addTask(new ToDo(argument));","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"kab-dot"},"content":" ui.showTaskAdded(tasks.getTasks().get(tasks.getSize() - 1), tasks.getSize());","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"kab-dot"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"kab-dot"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"kab-dot"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"kab-dot"},"content":" String[] deadlineDetails \u003d argument.split(\"/by\");","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"kab-dot"},"content":" if (deadlineDetails.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"kab-dot"},"content":" tasks.addTask(new Deadline(deadlineDetails[0].trim(), deadlineDetails[1].trim()));","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"kab-dot"},"content":" ui.showTaskAdded(tasks.getTasks().get(tasks.getSize() - 1), tasks.getSize());","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"kab-dot"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"kab-dot"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"kab-dot"},"content":" throw new DukeException(\"Invalid deadline format. Please use: deadline \u003cdescription\u003e /by \u003cdate/time\u003e\");","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"kab-dot"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"kab-dot"},"content":" case EVENT:","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"kab-dot"},"content":" // Handle event command","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"kab-dot"},"content":" String[] eventDetails \u003d argument.split(\"/from|/to\");","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"kab-dot"},"content":" if (eventDetails.length \u003d\u003d 3) {","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"kab-dot"},"content":" tasks.addTask(new Event(eventDetails[0].trim(), eventDetails[1].trim(), eventDetails[2].trim()));","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"kab-dot"},"content":" ui.showTaskAdded(tasks.getTasks().get(tasks.getSize() - 1), tasks.getSize());","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"kab-dot"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"kab-dot"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"kab-dot"},"content":" throw new DukeException(\"Invalid event format. Please use: event \u003cdescription\u003e \"","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"kab-dot"},"content":" + \"/from \u003cstart\u003e /to \u003cend\u003e\");","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"kab-dot"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"kab-dot"},"content":" case DELETE:","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"kab-dot"},"content":" // Handle delete command","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"kab-dot"},"content":" int taskIndexDelete \u003d Integer.parseInt(argument) - 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"kab-dot"},"content":" tasks.deleteTask(taskIndexDelete, ui);","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"kab-dot"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"kab-dot"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"kab-dot"},"content":" case MARK:","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"kab-dot"},"content":" // Handle mark command","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"kab-dot"},"content":" int markIndex \u003d Integer.parseInt(argument) - 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"kab-dot"},"content":" if (isValidIndex(markIndex, tasks.getSize())) {","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"kab-dot"},"content":" tasks.markTaskAsDone(markIndex);","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"kab-dot"},"content":" ui.showTaskMarked(tasks.getTasks().get(markIndex));","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"kab-dot"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"kab-dot"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"kab-dot"},"content":" ui.showInvalidTaskIndex();","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"kab-dot"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"kab-dot"},"content":" case UNMARK:","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"kab-dot"},"content":" // Handle unmark command","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"kab-dot"},"content":" int unmarkIndex \u003d Integer.parseInt(argument) - 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"kab-dot"},"content":" if (isValidIndex(unmarkIndex, tasks.getSize())) {","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"kab-dot"},"content":" tasks.unmarkTaskAsDone(unmarkIndex);","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"kab-dot"},"content":" ui.showTaskUnmarked(tasks.getTasks().get(unmarkIndex));","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"kab-dot"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"kab-dot"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"kab-dot"},"content":" ui.showInvalidTaskIndex();","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"kab-dot"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"kab-dot"},"content":" case FIND:","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"kab-dot"},"content":" // Handle FIND command","lastModifiedDate":"2024-02-02"},{"lineNumber":104,"author":{"gitId":"kab-dot"},"content":" List\u003cTask\u003e matchingTasks \u003d tasks.findTasksByKeyword(argument);","lastModifiedDate":"2024-02-02"},{"lineNumber":105,"author":{"gitId":"kab-dot"},"content":" ui.showMatchingTasks(matchingTasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":106,"author":{"gitId":"kab-dot"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":107,"author":{"gitId":"kab-dot"},"content":" case INVALID:","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"kab-dot"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"kab-dot"},"content":" default:","lastModifiedDate":"2024-02-02"},{"lineNumber":110,"author":{"gitId":"kab-dot"},"content":" throw new IllegalStateException(\"Unexpected value: \" + type);","lastModifiedDate":"2024-02-02"},{"lineNumber":111,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":115,"author":{"gitId":"kab-dot"},"content":" * Checks if the given index is valid for the current task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":116,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":117,"author":{"gitId":"kab-dot"},"content":" * @param index The index to be checked.","lastModifiedDate":"2024-02-02"},{"lineNumber":118,"author":{"gitId":"kab-dot"},"content":" * @param size The size of the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":119,"author":{"gitId":"kab-dot"},"content":" * @return True if the index is valid, false otherwise.","lastModifiedDate":"2024-02-02"},{"lineNumber":120,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":121,"author":{"gitId":"kab-dot"},"content":" private boolean isValidIndex(int index, int size) {","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"kab-dot"},"content":" return index \u003e\u003d 0 \u0026\u0026 index \u003c size;","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"kab-dot":124}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"//import java.time.DateTimeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"//import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"//import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"////public class Deadline extends Task{","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"//// protected String by;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":"//// //private LocalDateTime by;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":"////","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":"//// public Deadline(String description, String by) {","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":"//// super(description);","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":"//// this.by \u003d by;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":"//// }","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":"////","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":"//// @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":"//// public String toString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":"//// return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":"//// }","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":"////","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":"////","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":"////}","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":"//public class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":"// private LocalDateTime by;","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":"// public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":"// super(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":"// this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"kab-dot"},"content":"// public LocalDateTime getBy() {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"kab-dot"},"content":"// return by;","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"kab-dot"},"content":"// }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"kab-dot"},"content":"// @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"kab-dot"},"content":"// public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"kab-dot"},"content":"// return \"[D]\" + super.toString() + \" (by: \" +","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"kab-dot"},"content":"// by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"kab-dot"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"kab-dot"},"content":"// @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":"// public String toFileString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"kab-dot"},"content":"// return \"D | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" +","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"kab-dot"},"content":"// by.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"kab-dot"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"kab-dot"},"content":"//}","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"kab-dot"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"kab-dot"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"kab-dot"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"kab-dot"},"content":" * Represents a task with a deadline in the Duke program.","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"kab-dot"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"kab-dot"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"kab-dot"},"content":" * Constructs a Deadline object with the specified description and deadline.","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"kab-dot"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"kab-dot"},"content":" * @param by The deadline of the task in the format \"yyyy-MM-dd HHmm\".","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"kab-dot"},"content":" * @throws DateTimeException If there is an error parsing the deadline format.","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"kab-dot"},"content":" public Deadline(String description, String by) throws DateTimeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"kab-dot"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"kab-dot"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"kab-dot"},"content":" this.by \u003d LocalDateTime.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"kab-dot"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Invalid date/time format. Please use: yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"kab-dot"},"content":" throw e;","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"kab-dot"},"content":" * Gets the deadline of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"kab-dot"},"content":" * @return The LocalDateTime representing the deadline.","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"kab-dot"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"kab-dot"},"content":" return by;","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"kab-dot"},"content":" * Returns a string representation of the Deadline object.","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"kab-dot"},"content":" * @return A string in the format \"[D][Status] Description (by: Deadline)\".","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"kab-dot"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"kab-dot"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"kab-dot"},"content":" return \"[D]\" + super.toString() + \" (by: \"","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"kab-dot"},"content":" + by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":95,"author":{"gitId":"kab-dot"},"content":" * Returns a string representation of the Deadline object for saving to a file.","lastModifiedDate":"2024-02-02"},{"lineNumber":96,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"kab-dot"},"content":" * @return A string in the format \"D | Status | Description | Deadline\".","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"kab-dot"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"kab-dot"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"kab-dot"},"content":" return \"D | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \"","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"kab-dot"},"content":" + by.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"kab-dot":105}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"//import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"//import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":" * Aether is a task-management chatbot.","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":" * It allows users to add, delete, mark tasks as done, and view the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":" * It also supports todo, deadline and event tasks","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":" * Duke also supports saving and loading tasks from a file.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":"public class Duke {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":" private Ui ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":" private Storage storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":" * Constructs a Duke object with the specified file path for task storage.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":" * @param filePath The file path for task storage.","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"kab-dot"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"kab-dot"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"kab-dot"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"kab-dot"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"kab-dot"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"kab-dot"},"content":" * Runs the Duke program, starting the chatbot interaction.","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"kab-dot"},"content":" public void run() {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":" ui.showSeparator();","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"kab-dot"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"kab-dot"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"kab-dot"},"content":" String input;","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"kab-dot"},"content":" ui.showSeparator();","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"kab-dot"},"content":" do {","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"kab-dot"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"kab-dot"},"content":" processCommand(input);","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"kab-dot"},"content":" } while (!input.equalsIgnoreCase(\"bye\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"kab-dot"},"content":" scanner.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"kab-dot"},"content":" * Processes the user command and executes the corresponding action.","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"kab-dot"},"content":" * @param input The user\u0027s input command.","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"kab-dot"},"content":" private void processCommand(String input) {","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"kab-dot"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"kab-dot"},"content":" Parser parser \u003d new Parser(input);","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"kab-dot"},"content":" Command command \u003d parser.parse();","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"kab-dot"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"kab-dot"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"kab-dot"},"content":" ui.showErrorMessage(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"kab-dot"},"content":" * The main method to start the Duke program.","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"kab-dot"},"content":" * @param args The command-line arguments (not used in this program).","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"kab-dot"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"kab-dot"},"content":" new Duke(\"data/tasks.txt\").run();","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"kab-dot":75}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":" * DukeException is an exception class for handling exceptions.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":" * It extends the general Exception class.","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":" * Constructs a DukeException with the specified error message.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":" * @param message The error message associated with the exception.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":" super(message);","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"kab-dot":17}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"//import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"//import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":"// public class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":"// private LocalDateTime startTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":"// private LocalDateTime endTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":"// public Event(String description, LocalDateTime startTime, LocalDateTime endTime) {","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":"// super(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":"// this.startTime \u003d startTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":"// this.endTime \u003d endTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":"// }","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":"// public LocalDateTime getStartTime() {","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":"// return startTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":"// }","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":"// public LocalDateTime getEndTime() {","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":"// return endTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":"// @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":"// public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":"// DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":"// String formattedStartTime \u003d startTime.format(formatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":"// String formattedEndTime \u003d endTime.format(formatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"kab-dot"},"content":"// return \"[E]\" + super.toString() + \" (from: \" + formattedStartTime + \" to: \" + formattedEndTime + \")\";","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"kab-dot"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"kab-dot"},"content":"//}","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"kab-dot"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"kab-dot"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"kab-dot"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":" * Represents an event task with a specific start and end time.","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"kab-dot"},"content":" * Extends the Task class and includes functionality to parse and handle date/time information.","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"kab-dot"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"kab-dot"},"content":" private LocalDateTime startTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"kab-dot"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"kab-dot"},"content":" * Constructs an Event object with the specified description, start time, and end time.","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"kab-dot"},"content":" * @param description The description of the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"kab-dot"},"content":" * @param startTime The start time of the event in the format \"yyyy-MM-dd HH:mm\".","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"kab-dot"},"content":" * @param endTime The end time of the event in the format \"yyyy-MM-dd HH:mm\".","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"kab-dot"},"content":" * @throws DateTimeParseException If there is an issue parsing the date/time strings.","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"kab-dot"},"content":" public Event(String description, String startTime, String endTime) {","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"kab-dot"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"kab-dot"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"kab-dot"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"kab-dot"},"content":" this.startTime \u003d LocalDateTime.parse(startTime, formatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"kab-dot"},"content":" this.endTime \u003d LocalDateTime.parse(endTime, formatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"kab-dot"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Invalid date/time format. Please use: yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"kab-dot"},"content":" // Handle the exception as needed, e.g., log it or inform the user","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"kab-dot"},"content":" throw e;","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"kab-dot"},"content":" * Gets the start time of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"kab-dot"},"content":" * @return The start time as a LocalDateTime object.","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"kab-dot"},"content":" public LocalDateTime getStartTime() {","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"kab-dot"},"content":" return startTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":77,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"kab-dot"},"content":" * Gets the end time of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"kab-dot"},"content":" * @return The end time as a LocalDateTime object.","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"kab-dot"},"content":" public LocalDateTime getEndTime() {","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"kab-dot"},"content":" return endTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"kab-dot"},"content":" * Returns a string representation of the Event, including its description, start time, and end time.","lastModifiedDate":"2024-02-02"},{"lineNumber":90,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"kab-dot"},"content":" * @return A string representation of the Event.","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":93,"author":{"gitId":"kab-dot"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"kab-dot"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"kab-dot"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":96,"author":{"gitId":"kab-dot"},"content":" String formattedStartTime \u003d startTime.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"kab-dot"},"content":" String formattedEndTime \u003d endTime.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":99,"author":{"gitId":"kab-dot"},"content":" return \"[E]\" + super.toString() + \" (from: \" + formattedStartTime + \" to: \" + formattedEndTime + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":101,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"kab-dot":101}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"//public class Parser {","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"// private String input;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":"// public Parser(String input) {","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":"// this.input \u003d input;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":"// }","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":"// public Command parse() throws DukeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":"// String[] inputParts \u003d input.split(\" \", 2); // Split input into command and argument","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":"// String commandStr \u003d inputParts[0].toLowerCase();","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":"// String argument \u003d inputParts.length \u003e 1 ? inputParts[1].trim() : \"\";","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":"// switch (commandStr) {","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":"// case \"bye\":","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":"// return new Command(Command.CommandType.BYE, argument);","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":"// case \"list\":","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":"// return new Command(Command.CommandType.LIST, argument);","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":"// case \"todo\":","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":"// return new Command(Command.CommandType.TODO, argument);","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":"// case \"deadline\":","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":"// return new Command(Command.CommandType.DEADLINE, argument);","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":"// case \"event\":","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":"// return new Command(Command.CommandType.EVENT, argument);","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":"// case \"delete\":","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":"// return new Command(Command.CommandType.DELETE, argument);","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"kab-dot"},"content":"// case \"mark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"kab-dot"},"content":"// return new Command(Command.CommandType.MARK, argument);","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"kab-dot"},"content":"// case \"unmark\":","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"kab-dot"},"content":"// return new Command(Command.CommandType.UNMARK, argument);","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"kab-dot"},"content":"// default:","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"kab-dot"},"content":"// throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"kab-dot"},"content":"// }","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"kab-dot"},"content":"// }","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"kab-dot"},"content":"//}","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":" * Represents a parser for processing user commands in the Duke program.","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"kab-dot"},"content":"public class Parser {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"kab-dot"},"content":" private String input;","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"kab-dot"},"content":" * Constructs a Parser object with the specified input string.","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"kab-dot"},"content":" * @param input The input string to be parsed.","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"kab-dot"},"content":" public Parser(String input) {","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"kab-dot"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"kab-dot"},"content":" * Parses the input string and returns the corresponding command.","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"kab-dot"},"content":" * @return A Command object representing the parsed user command.","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"kab-dot"},"content":" * @throws DukeException If there is an error parsing the input.","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"kab-dot"},"content":" public Command parse() throws DukeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"kab-dot"},"content":" if (input.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"kab-dot"},"content":" return new Command(Command.CommandType.BYE, null);","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"kab-dot"},"content":" } else if (input.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"kab-dot"},"content":" return new Command(Command.CommandType.LIST, null);","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"kab-dot"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"kab-dot"},"content":" // Check if the todo description is empty","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"kab-dot"},"content":" String description \u003d input.substring(4).trim();","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"kab-dot"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"kab-dot"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"kab-dot"},"content":" return new Command(Command.CommandType.TODO, description);","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"kab-dot"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"kab-dot"},"content":" return new Command(Command.CommandType.DEADLINE, input.substring(9).trim());","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"kab-dot"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"kab-dot"},"content":" return new Command(Command.CommandType.EVENT, input.substring(6).trim());","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"kab-dot"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"kab-dot"},"content":" return new Command(Command.CommandType.DELETE, input.substring(7).trim());","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"kab-dot"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"kab-dot"},"content":" return new Command(Command.CommandType.MARK, input.substring(5).trim());","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"kab-dot"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"kab-dot"},"content":" return new Command(Command.CommandType.UNMARK, input.substring(7).trim());","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"kab-dot"},"content":" } else if (input.startsWith(\"find\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"kab-dot"},"content":" return parseFindCommand(input);","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"kab-dot"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"kab-dot"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":90,"author":{"gitId":"kab-dot"},"content":" private Command parseFindCommand(String input) throws DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"kab-dot"},"content":" String keyword \u003d input.substring(4).trim();","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"kab-dot"},"content":" if (keyword.isEmpty()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":93,"author":{"gitId":"kab-dot"},"content":" throw new DukeException(\"OOPS!!! The keyword for find cannot be empty.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":94,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":95,"author":{"gitId":"kab-dot"},"content":" return new Command(Command.CommandType.FIND, keyword);","lastModifiedDate":"2024-02-02"},{"lineNumber":96,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"kab-dot":97}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":"import java.util.List;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":" * Manages the loading and saving of tasks from/to a file.","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":"public class Storage {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":" private static final String FILE_PATH \u003d \".data/text/duke.txt\";","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":" private String filePath;","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" * Constructs a Storage object with the specified file path.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":" * @param filePath The file path to load and save tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":" * Loads tasks from the specified file path.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"kab-dot"},"content":" * @return A list of tasks loaded from the file.","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"kab-dot"},"content":" * @throws DukeException If an error occurs while loading tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"kab-dot"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"kab-dot"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"kab-dot"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(filePath))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"kab-dot"},"content":" String line;","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"kab-dot"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"kab-dot"},"content":" Task task \u003d Task.createTaskFromFileString(line);","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"kab-dot"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"kab-dot"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"kab-dot"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"kab-dot"},"content":" throw new DukeException(\"Error loading tasks from file: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"kab-dot"},"content":" return tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"kab-dot"},"content":" * Saves a list of tasks to the specified file path.","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"kab-dot"},"content":" * @param tasks The list of tasks to be saved.","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"kab-dot"},"content":" public void saveTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"kab-dot"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(FILE_PATH))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"kab-dot"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"kab-dot"},"content":" writer.write(task.toFileString());","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"kab-dot"},"content":" writer.newLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"kab-dot"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Error saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"kab-dot":62}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"//import java.text.SimpleDateFormat;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"//import java.util.Date;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":" * Represents a task in the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":" * Constructs a task with the specified description.","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":" * Gets the description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":" * @return The description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"kab-dot"},"content":" return this.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"kab-dot"},"content":" * Gets the status icon indicating whether the task is done or not.","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"kab-dot"},"content":" * @return The status icon as a string.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"kab-dot"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"kab-dot"},"content":" return (isDone ? \"[X]\" : \"[ ]\");","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"kab-dot"},"content":" * Marks the task as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"kab-dot"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"kab-dot"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"kab-dot"},"content":" * Marks the task as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"kab-dot"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"kab-dot"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"kab-dot"},"content":" * Returns a string representation of the task, including its status icon and description.","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"kab-dot"},"content":" * @return The string representation of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"kab-dot"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"kab-dot"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"kab-dot"},"content":" return getStatusIcon() + \" \" + getDescription();","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"kab-dot"},"content":" * Returns a string representation of the task for saving to a file.","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"kab-dot"},"content":" * @return The string representation of the task for saving to a file.","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"kab-dot"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"kab-dot"},"content":" return \"T | \" + (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":71,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"kab-dot"},"content":" * Creates a task from a string when loading from a file.","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"kab-dot"},"content":" * @param fileString The string representation of the task from the file.","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"kab-dot"},"content":" * @return The Task object created from the file string.","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"kab-dot"},"content":" public static Task createTaskFromFileString(String fileString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"kab-dot"},"content":" String[] parts \u003d fileString.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"kab-dot"},"content":" if (parts.length \u003d\u003d 3) {","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"kab-dot"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"kab-dot"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"kab-dot"},"content":" Task task \u003d new Task(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"kab-dot"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"kab-dot"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":89,"author":{"gitId":"kab-dot"},"content":" return task;","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":91,"author":{"gitId":"kab-dot"},"content":" return null;","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"kab-dot":93}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":"import java.util.List;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":" * Represents a list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":"public class TaskList {","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":" * Constructs an empty task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" public TaskList() {","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":" * Constructs a task list with the specified list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":" * @param tasks The list of tasks to initialize the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"kab-dot"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"kab-dot"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"kab-dot"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"kab-dot"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"kab-dot"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"kab-dot"},"content":" * Gets the list of tasks in the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"kab-dot"},"content":" * @return The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"kab-dot"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"kab-dot"},"content":" return tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"kab-dot"},"content":" * Gets the size of the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"kab-dot"},"content":" * @return The size of the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"kab-dot"},"content":" public int getSize() {","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"kab-dot"},"content":" return tasks.size();","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"kab-dot"},"content":" * Marks a task at the specified index as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"kab-dot"},"content":" * @param index The index of the task to be marked as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"kab-dot"},"content":" * @throws DukeException If the index is invalid.","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"kab-dot"},"content":" public void markTaskAsDone(int index) throws DukeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"kab-dot"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c tasks.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"kab-dot"},"content":" tasks.get(index).markAsDone();","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"kab-dot"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"kab-dot"},"content":" throw new DukeException(\"Invalid task index.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"kab-dot"},"content":" * Marks a task at the specified index as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"kab-dot"},"content":" * @param index The index of the task to be marked as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"kab-dot"},"content":" * @throws DukeException If the index is invalid.","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"kab-dot"},"content":" public void unmarkTaskAsDone(int index) throws DukeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"kab-dot"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c tasks.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"kab-dot"},"content":" tasks.get(index).markAsNotDone();","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"kab-dot"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"kab-dot"},"content":" throw new DukeException(\"Invalid task index.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"kab-dot"},"content":" * Deletes a task at the specified index and displays the deletion message using the given UI.","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":90,"author":{"gitId":"kab-dot"},"content":" * @param taskIndex The index of the task to be deleted.","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"kab-dot"},"content":" * @param ui The UI used to display messages.","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":93,"author":{"gitId":"kab-dot"},"content":" public void deleteTask(int taskIndex, Ui ui) {","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"kab-dot"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c tasks.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"kab-dot"},"content":" Task removedTask \u003d tasks.remove(taskIndex);","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"kab-dot"},"content":" ui.showTaskDeleted(removedTask, tasks.size());","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"kab-dot"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"kab-dot"},"content":" ui.showInvalidTaskIndex();","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"kab-dot"},"content":" public List\u003cTask\u003e findTasksByKeyword(String keyword) {","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"kab-dot"},"content":" return tasks.stream()","lastModifiedDate":"2024-02-02"},{"lineNumber":104,"author":{"gitId":"kab-dot"},"content":" .filter(task -\u003e task.getDescription().contains(keyword))","lastModifiedDate":"2024-02-02"},{"lineNumber":105,"author":{"gitId":"kab-dot"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-02-02"},{"lineNumber":106,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":107,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":108,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"kab-dot":108}},{"path":"src/main/java/duke/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":" * Represents a to-do task.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":" * Constructs a to-do task with the specified description.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":" * @param description The description of the to-do task.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":" * Returns a string representation of the to-do task.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" * @return A string representing the to-do task.","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"kab-dot":26}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"//import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"import java.util.List;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":" * Represents the user interface of the Duke chatbot.","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":"public class Ui {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":" * Displays a welcome message.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Hello! I\u0027m Aether!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" * Displays an error message for failed task loading.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Error loading tasks from file.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":" * Displays a separator line.","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":" public void showSeparator() {","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"_____________________________\");","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"kab-dot"},"content":" * Displays an error message.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"kab-dot"},"content":" * @param errorMessage The error message to display.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"kab-dot"},"content":" public void showErrorMessage(String errorMessage) {","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"OOPS!!! \" + errorMessage);","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"_____________________________\");","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"kab-dot"},"content":" * Displays the list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"kab-dot"},"content":" * @param taskList The task list to display.","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"kab-dot"},"content":" public void showTaskList(TaskList taskList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"kab-dot"},"content":" List\u003cTask\u003e tasks \u003d taskList.getTasks();","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"kab-dot"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"kab-dot"},"content":" System.out.println((i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"_____________________________\");","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"kab-dot"},"content":" * Displays a message indicating a task has been added.","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"kab-dot"},"content":" * @param task The added task.","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"kab-dot"},"content":" * @param taskCount The total number of tasks after adding.","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"kab-dot"},"content":" public void showTaskAdded(Task task, int taskCount) {","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"kab-dot"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"_____________________________\");","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"kab-dot"},"content":" * Displays a message indicating a task has been deleted.","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"kab-dot"},"content":" * @param deletedTask The deleted task.","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"kab-dot"},"content":" * @param remainingTasks The remaining number of tasks after deletion.","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"kab-dot"},"content":" public void showTaskDeleted(Task deletedTask, int remainingTasks) {","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"kab-dot"},"content":" System.out.println(\" \" + deletedTask);","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Now you have \" + remainingTasks + \" tasks in the list.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"_____________________________\");","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"kab-dot"},"content":" * Displays a message for an invalid task index.","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"kab-dot"},"content":" public void showInvalidTaskIndex() {","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Invalid task index. Please provide a valid task index.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"kab-dot"},"content":" * Displays a message indicating a task has been marked as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":93,"author":{"gitId":"kab-dot"},"content":" * @param markedTask The marked task.","lastModifiedDate":"2024-02-02"},{"lineNumber":94,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":95,"author":{"gitId":"kab-dot"},"content":" public void showTaskMarked(Task markedTask) {","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"kab-dot"},"content":" System.out.println(\" \" + markedTask);","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"_____________________________\");","lastModifiedDate":"2024-02-01"},{"lineNumber":99,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"kab-dot"},"content":" * Displays a message indicating a task has been marked as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":104,"author":{"gitId":"kab-dot"},"content":" * @param unmarkedTask The unmarked task.","lastModifiedDate":"2024-02-02"},{"lineNumber":105,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":106,"author":{"gitId":"kab-dot"},"content":" public void showTaskUnmarked(Task unmarkedTask) {","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"kab-dot"},"content":" System.out.println(\" \" + unmarkedTask);","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"_____________________________\");","lastModifiedDate":"2024-02-01"},{"lineNumber":110,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":112,"author":{"gitId":"kab-dot"},"content":" public void showMatchingTasks(List\u003cTask\u003e matchingTasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":113,"author":{"gitId":"kab-dot"},"content":" if (matchingTasks.isEmpty()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":114,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"No matching tasks found.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":115,"author":{"gitId":"kab-dot"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":116,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":117,"author":{"gitId":"kab-dot"},"content":" for (int i \u003d 0; i \u003c matchingTasks.size(); i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":118,"author":{"gitId":"kab-dot"},"content":" System.out.println((i + 1) + \".\" + matchingTasks.get(i));","lastModifiedDate":"2024-02-02"},{"lineNumber":119,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":120,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":121,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"_____________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":122,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":123,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":124,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":125,"author":{"gitId":"kab-dot"},"content":" * Displays a goodbye message.","lastModifiedDate":"2024-02-02"},{"lineNumber":126,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":127,"author":{"gitId":"kab-dot"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Goodbye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":129,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"_____________________________\");","lastModifiedDate":"2024-02-01"},{"lineNumber":130,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"kab-dot":132}},{"path":"src/test/java/duke/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":"public class EventTest {","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":" @Test","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":" void testToString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":" // Creating an Event instance with a specific start and end time","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":" String description \u003d \"Sample Event\";","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":" String startTime \u003d \"2022-01-01 12:00\";","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":" String endTime \u003d \"2022-01-01 14:00\";","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":" Event event \u003d new Event(description, startTime, endTime);","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":" // Expected string representation based on the provided start and end time","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" String expectedToString \u003d \"[E][ ] Sample Event (from: Jan 01 2022 12:00 to: Jan 01 2022 14:00)\";","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":" // Testing the toString method","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":" assertEquals(expectedToString, event.toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"kab-dot":25}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":"public class TaskListTest {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":" @Test","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":" public void addTaskShouldIncreaseSize() {","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":" Task task \u003d new Task(\"Sample Task\");","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":" int initialSize \u003d taskList.getSize();","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" assertEquals(initialSize + 1, taskList.getSize());","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":" @Test","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":" public void deleteTaskShouldRemoveTask() {","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":" Task task \u003d new Task(\"Sample Task\");","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":" int initialSize \u003d taskList.getSize();","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"kab-dot"},"content":" taskList.deleteTask(0, new Ui());","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"kab-dot"},"content":" assertEquals(initialSize - 1, taskList.getSize());","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"kab-dot":34}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"todo eat lunch","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"deadline submit papers /by Monday","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"kab-dot":5}}] +[{"path":".data/text/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"D | 1 | read a book | 2022-01-01 1200","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"T | 0 | write a book","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"kab-dot":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":"kab-dot"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-02"},{"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":"kab-dot"},"content":"checkstyle {","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":" testImplementation \u0027org.junit.jupiter:junit-jupiter:5.8.1\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":" testImplementation \u0027org.junit.jupiter:junit-jupiter:5.8.1\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" testImplementation \u0027org.junit.jupiter:junit-jupiter:5.8.1\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" testImplementation \u0027junit:junit:4.13.1\u0027","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"kab-dot":10,"-":41}},{"path":"src/main/java/duke/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"import java.util.List;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":" * Represents a command that can be executed by the Duke program.","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":"public class Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":" public enum CommandType {","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":" BYE, LIST, TODO, DEADLINE, EVENT, DELETE, MARK, UNMARK, FIND, INVALID","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":" * Enumerates the possible types of commands.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":" private CommandType type;","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":" private String argument;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" * Constructs a Command object with the specified type and argument.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":" * @param type The type of the command.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":" * @param argument The argument associated with the command.","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":" public Command(CommandType type, String argument) {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":" this.type \u003d type;","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":" this.argument \u003d argument;","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"kab-dot"},"content":" * Executes the command based on its type.","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"kab-dot"},"content":" * @param tasks The TaskList on which the command operates.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"kab-dot"},"content":" * @param ui The Ui used to interact with the user.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"kab-dot"},"content":" * @param storage The Storage used to save and load tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"kab-dot"},"content":" * @throws DukeException If there is an error executing the command.","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"kab-dot"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":" switch (type) {","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"kab-dot"},"content":" case BYE:","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"kab-dot"},"content":" ui.showGoodbye();","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"kab-dot"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"kab-dot"},"content":" case LIST:","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"kab-dot"},"content":" ui.showTaskList(tasks);","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"kab-dot"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"kab-dot"},"content":" case TODO:","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"kab-dot"},"content":" tasks.addTask(new ToDo(argument));","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"kab-dot"},"content":" ui.showTaskAdded(tasks.getTasks().get(tasks.getSize() - 1), tasks.getSize());","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"kab-dot"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"kab-dot"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"kab-dot"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"kab-dot"},"content":" String[] deadlineDetails \u003d argument.split(\"/by\");","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"kab-dot"},"content":" if (deadlineDetails.length \u003d\u003d 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"kab-dot"},"content":" tasks.addTask(new Deadline(deadlineDetails[0].trim(), deadlineDetails[1].trim()));","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"kab-dot"},"content":" ui.showTaskAdded(tasks.getTasks().get(tasks.getSize() - 1), tasks.getSize());","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"kab-dot"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"kab-dot"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"kab-dot"},"content":" throw new DukeException(\"Invalid deadline format. Please use: deadline \u003cdescription\u003e /by \u003cdate/time\u003e\");","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"kab-dot"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"kab-dot"},"content":" case EVENT:","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"kab-dot"},"content":" // Handle event command","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"kab-dot"},"content":" String[] eventDetails \u003d argument.split(\"/from|/to\");","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"kab-dot"},"content":" if (eventDetails.length \u003d\u003d 3) {","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"kab-dot"},"content":" tasks.addTask(new Event(eventDetails[0].trim(), eventDetails[1].trim(), eventDetails[2].trim()));","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"kab-dot"},"content":" ui.showTaskAdded(tasks.getTasks().get(tasks.getSize() - 1), tasks.getSize());","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"kab-dot"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"kab-dot"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"kab-dot"},"content":" throw new DukeException(\"Invalid event format. Please use: event \u003cdescription\u003e \"","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"kab-dot"},"content":" + \"/from \u003cstart\u003e /to \u003cend\u003e\");","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"kab-dot"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"kab-dot"},"content":" case DELETE:","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"kab-dot"},"content":" // Handle delete command","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"kab-dot"},"content":" int taskIndexDelete \u003d Integer.parseInt(argument) - 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"kab-dot"},"content":" tasks.deleteTask(taskIndexDelete, ui);","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"kab-dot"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"kab-dot"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"kab-dot"},"content":" case MARK:","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"kab-dot"},"content":" // Handle mark command","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"kab-dot"},"content":" int markIndex \u003d Integer.parseInt(argument) - 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"kab-dot"},"content":" if (isValidIndex(markIndex, tasks.getSize())) {","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"kab-dot"},"content":" tasks.markTaskAsDone(markIndex);","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"kab-dot"},"content":" ui.showTaskMarked(tasks.getTasks().get(markIndex));","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"kab-dot"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"kab-dot"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"kab-dot"},"content":" ui.showInvalidTaskIndex();","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"kab-dot"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"kab-dot"},"content":" case UNMARK:","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"kab-dot"},"content":" // Handle unmark command","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"kab-dot"},"content":" int unmarkIndex \u003d Integer.parseInt(argument) - 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"kab-dot"},"content":" if (isValidIndex(unmarkIndex, tasks.getSize())) {","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"kab-dot"},"content":" tasks.unmarkTaskAsDone(unmarkIndex);","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"kab-dot"},"content":" ui.showTaskUnmarked(tasks.getTasks().get(unmarkIndex));","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"kab-dot"},"content":" storage.saveTasks(tasks.getTasks());","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"kab-dot"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"kab-dot"},"content":" ui.showInvalidTaskIndex();","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"kab-dot"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"kab-dot"},"content":" case FIND:","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"kab-dot"},"content":" // Handle FIND command","lastModifiedDate":"2024-02-02"},{"lineNumber":104,"author":{"gitId":"kab-dot"},"content":" List\u003cTask\u003e matchingTasks \u003d tasks.findTasksByKeyword(argument);","lastModifiedDate":"2024-02-02"},{"lineNumber":105,"author":{"gitId":"kab-dot"},"content":" ui.showMatchingTasks(matchingTasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":106,"author":{"gitId":"kab-dot"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":107,"author":{"gitId":"kab-dot"},"content":" case INVALID:","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"kab-dot"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"kab-dot"},"content":" default:","lastModifiedDate":"2024-02-02"},{"lineNumber":110,"author":{"gitId":"kab-dot"},"content":" throw new IllegalStateException(\"Unexpected value: \" + type);","lastModifiedDate":"2024-02-02"},{"lineNumber":111,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":115,"author":{"gitId":"kab-dot"},"content":" * Checks if the given index is valid for the current task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":116,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":117,"author":{"gitId":"kab-dot"},"content":" * @param index The index to be checked.","lastModifiedDate":"2024-02-02"},{"lineNumber":118,"author":{"gitId":"kab-dot"},"content":" * @param size The size of the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":119,"author":{"gitId":"kab-dot"},"content":" * @return True if the index is valid, false otherwise.","lastModifiedDate":"2024-02-02"},{"lineNumber":120,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":121,"author":{"gitId":"kab-dot"},"content":" private boolean isValidIndex(int index, int size) {","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"kab-dot"},"content":" return index \u003e\u003d 0 \u0026\u0026 index \u003c size;","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"kab-dot":124}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"//import java.time.DateTimeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"//import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"//import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"////public class Deadline extends Task{","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"//// protected String by;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":"//// //private LocalDateTime by;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":"////","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":"//// public Deadline(String description, String by) {","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":"//// super(description);","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":"//// this.by \u003d by;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":"//// }","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":"////","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":"//// @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":"//// public String toString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":"//// return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":"//// }","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":"////","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":"////","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":"////}","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":"//public class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":"// private LocalDateTime by;","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":"// public Deadline(String description, LocalDateTime by) {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":"// super(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":"// this.by \u003d by;","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"kab-dot"},"content":"// public LocalDateTime getBy() {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"kab-dot"},"content":"// return by;","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"kab-dot"},"content":"// }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"kab-dot"},"content":"// @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"kab-dot"},"content":"// public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"kab-dot"},"content":"// return \"[D]\" + super.toString() + \" (by: \" +","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"kab-dot"},"content":"// by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"kab-dot"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"kab-dot"},"content":"//","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"kab-dot"},"content":"// @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":"// public String toFileString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"kab-dot"},"content":"// return \"D | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \" +","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"kab-dot"},"content":"// by.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"kab-dot"},"content":"// }","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"kab-dot"},"content":"//}","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"kab-dot"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"kab-dot"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"kab-dot"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"kab-dot"},"content":" * Represents a task with a deadline in the Duke program.","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"kab-dot"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"kab-dot"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"kab-dot"},"content":" * Constructs a Deadline object with the specified description and deadline.","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"kab-dot"},"content":" * @param description The description of the deadline task.","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"kab-dot"},"content":" * @param by The deadline of the task in the format \"yyyy-MM-dd HHmm\".","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"kab-dot"},"content":" * @throws DateTimeException If there is an error parsing the deadline format.","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"kab-dot"},"content":" public Deadline(String description, String by) throws DateTimeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"kab-dot"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"kab-dot"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"kab-dot"},"content":" this.by \u003d LocalDateTime.parse(by, DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"kab-dot"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Invalid date/time format. Please use: yyyy-MM-dd HHmm\");","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"kab-dot"},"content":" throw e;","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":72,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":73,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"kab-dot"},"content":" * Gets the deadline of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"kab-dot"},"content":" * @return The LocalDateTime representing the deadline.","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"kab-dot"},"content":" public LocalDateTime getBy() {","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"kab-dot"},"content":" return by;","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"kab-dot"},"content":" * Returns a string representation of the Deadline object.","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"kab-dot"},"content":" * @return A string in the format \"[D][Status] Description (by: Deadline)\".","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"kab-dot"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"kab-dot"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"kab-dot"},"content":" return \"[D]\" + super.toString() + \" (by: \"","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"kab-dot"},"content":" + by.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HHmm\")) + \")\";","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":93,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":94,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":95,"author":{"gitId":"kab-dot"},"content":" * Returns a string representation of the Deadline object for saving to a file.","lastModifiedDate":"2024-02-02"},{"lineNumber":96,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"kab-dot"},"content":" * @return A string in the format \"D | Status | Description | Deadline\".","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"kab-dot"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":100,"author":{"gitId":"kab-dot"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":101,"author":{"gitId":"kab-dot"},"content":" return \"D | \" + (isDone ? \"1\" : \"0\") + \" | \" + description + \" | \"","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"kab-dot"},"content":" + by.format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HHmm\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"kab-dot":105}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":" * Aether is a task-management chatbot.","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":" * It allows users to add, delete, mark tasks as done, and view the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":" * It also supports todo, deadline and event tasks","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":" * Duke also supports saving and loading tasks from a file.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":"public class Duke {","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":" private Ui ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":" private Storage storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":" private TaskList tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" * Constructs a Duke object with the specified file path for task storage.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":" * @param filePath The file path for task storage.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"kab-dot"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"kab-dot"},"content":" ui.showLoadingError();","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"kab-dot"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"kab-dot"},"content":" * Runs the Duke program, starting the chatbot interaction.","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"kab-dot"},"content":" public void run() {","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"kab-dot"},"content":" ui.showSeparator();","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"kab-dot"},"content":" ui.showWelcome();","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"kab-dot"},"content":" String input;","lastModifiedDate":"2024-01-24"},{"lineNumber":42,"author":{"gitId":"kab-dot"},"content":" ui.showSeparator();","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"kab-dot"},"content":" do {","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"kab-dot"},"content":" input \u003d scanner.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"kab-dot"},"content":" processCommand(input);","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"kab-dot"},"content":" } while (!input.equalsIgnoreCase(\"bye\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"kab-dot"},"content":" scanner.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"kab-dot"},"content":" * Processes the user command and executes the corresponding action.","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"kab-dot"},"content":" * @param input The user\u0027s input command.","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"kab-dot"},"content":" private void processCommand(String input) {","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"kab-dot"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"kab-dot"},"content":" Parser parser \u003d new Parser(input);","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"kab-dot"},"content":" Command command \u003d parser.parse();","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"kab-dot"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"kab-dot"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"kab-dot"},"content":" ui.showErrorMessage(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"kab-dot"},"content":" * The main method to start the Duke program.","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"kab-dot"},"content":" * @param args The command-line arguments (not used in this program).","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"kab-dot"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"kab-dot"},"content":" new Duke(\"data/tasks.txt\").run();","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"kab-dot":73}},{"path":"src/main/java/duke/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":" * DukeException is an exception class for handling exceptions.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":" * It extends the general Exception class.","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":" * Constructs a DukeException with the specified error message.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":" * @param message The error message associated with the exception.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":" super(message);","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"kab-dot":17}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":" * Represents an event task with a specific start and end time.","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":" * Extends the Task class and includes functionality to parse and handle date/time information.","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":" private LocalDateTime startTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":" * Constructs an Event object with the specified description, start time, and end time.","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":" * @param description The description of the event task.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" * @param startTime The start time of the event in the format \"yyyy-MM-dd HH:mm\".","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" * @param endTime The end time of the event in the format \"yyyy-MM-dd HH:mm\".","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":" * @throws DateTimeParseException If there is an issue parsing the date/time strings.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":" public Event(String description, String startTime, String endTime) {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":" this.startTime \u003d LocalDateTime.parse(startTime, formatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"kab-dot"},"content":" this.endTime \u003d LocalDateTime.parse(endTime, formatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"kab-dot"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Invalid date/time format. Please use: yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"kab-dot"},"content":" // Handle the exception as needed, e.g., log it or inform the user","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"kab-dot"},"content":" throw e;","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"kab-dot"},"content":" * Gets the start time of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"kab-dot"},"content":" * @return The start time as a LocalDateTime object.","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"kab-dot"},"content":" public LocalDateTime getStartTime() {","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"kab-dot"},"content":" return startTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"kab-dot"},"content":" * Gets the end time of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"kab-dot"},"content":" * @return The end time as a LocalDateTime object.","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"kab-dot"},"content":" public LocalDateTime getEndTime() {","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"kab-dot"},"content":" return endTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"kab-dot"},"content":" * Returns a string representation of the Event, including its description, start time, and end time.","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"kab-dot"},"content":" * @return A string representation of the Event.","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"kab-dot"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"kab-dot"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"kab-dot"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\");","lastModifiedDate":"2024-01-30"},{"lineNumber":63,"author":{"gitId":"kab-dot"},"content":" String formattedStartTime \u003d startTime.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":64,"author":{"gitId":"kab-dot"},"content":" String formattedEndTime \u003d endTime.format(formatter);","lastModifiedDate":"2024-01-30"},{"lineNumber":65,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":66,"author":{"gitId":"kab-dot"},"content":" return \"[E]\" + super.toString() + \" (from: \" + formattedStartTime + \" to: \" + formattedEndTime + \")\";","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"kab-dot":68}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":" * Represents a parser for processing user commands in the Duke program.","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"public class Parser {","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":" private String input;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":" * Constructs a Parser object with the specified input string.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":" * @param input The input string to be parsed.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":" public Parser(String input) {","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":" this.input \u003d input;","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" * Parses the input string and returns the corresponding command.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":" * @return A Command object representing the parsed user command.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":" * @throws DukeException If there is an error parsing the input.","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":" public Command parse() throws DukeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":" if (input.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":" return new Command(Command.CommandType.BYE, null);","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":" } else if (input.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":" return new Command(Command.CommandType.LIST, null);","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"kab-dot"},"content":" } else if (input.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"kab-dot"},"content":" // Check if the todo description is empty","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"kab-dot"},"content":" String description \u003d input.substring(4).trim();","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"kab-dot"},"content":" if (description.isEmpty()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"kab-dot"},"content":" throw new DukeException(\"OOPS!!! The description of a todo cannot be empty.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"kab-dot"},"content":" return new Command(Command.CommandType.TODO, description);","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"kab-dot"},"content":" } else if (input.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"kab-dot"},"content":" return new Command(Command.CommandType.DEADLINE, input.substring(9).trim());","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"kab-dot"},"content":" } else if (input.startsWith(\"event\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"kab-dot"},"content":" return new Command(Command.CommandType.EVENT, input.substring(6).trim());","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":" } else if (input.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"kab-dot"},"content":" return new Command(Command.CommandType.DELETE, input.substring(7).trim());","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"kab-dot"},"content":" } else if (input.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"kab-dot"},"content":" return new Command(Command.CommandType.MARK, input.substring(5).trim());","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"kab-dot"},"content":" } else if (input.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"kab-dot"},"content":" return new Command(Command.CommandType.UNMARK, input.substring(7).trim());","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"kab-dot"},"content":" } else if (input.startsWith(\"find\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"kab-dot"},"content":" return parseFindCommand(input);","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"kab-dot"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"kab-dot"},"content":" throw new DukeException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"kab-dot"},"content":" private Command parseFindCommand(String input) throws DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"kab-dot"},"content":" String keyword \u003d input.substring(4).trim();","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"kab-dot"},"content":" if (keyword.isEmpty()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"kab-dot"},"content":" throw new DukeException(\"OOPS!!! The keyword for find cannot be empty.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"kab-dot"},"content":" return new Command(Command.CommandType.FIND, keyword);","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"kab-dot":60}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":"import java.util.List;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":" * Manages the loading and saving of tasks from/to a file.","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":"public class Storage {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":" private static final String FILE_PATH \u003d \".data/text/duke.txt\";","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":" private String filePath;","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" * Constructs a Storage object with the specified file path.","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":" * @param filePath The file path to load and save tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":" * Loads tasks from the specified file path.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"kab-dot"},"content":" * @return A list of tasks loaded from the file.","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"kab-dot"},"content":" * @throws DukeException If an error occurs while loading tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"kab-dot"},"content":" public ArrayList\u003cTask\u003e load() throws DukeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"kab-dot"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"kab-dot"},"content":" try (BufferedReader reader \u003d new BufferedReader(new FileReader(filePath))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"kab-dot"},"content":" String line;","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"kab-dot"},"content":" while ((line \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"kab-dot"},"content":" Task task \u003d Task.createTaskFromFileString(line);","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"kab-dot"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"kab-dot"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"kab-dot"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"kab-dot"},"content":" throw new DukeException(\"Error loading tasks from file: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"kab-dot"},"content":" return tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"kab-dot"},"content":" * Saves a list of tasks to the specified file path.","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"kab-dot"},"content":" * @param tasks The list of tasks to be saved.","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"kab-dot"},"content":" public void saveTasks(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"kab-dot"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(FILE_PATH))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"kab-dot"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"kab-dot"},"content":" writer.write(task.toFileString());","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"kab-dot"},"content":" writer.newLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"kab-dot"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Error saving tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"kab-dot":62}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":" * Represents a task in the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":" * Constructs a task with the specified description.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":" * Gets the description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":" * @return The description of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":" return this.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"kab-dot"},"content":" * Gets the status icon indicating whether the task is done or not.","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"kab-dot"},"content":" * @return The status icon as a string.","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"kab-dot"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"kab-dot"},"content":" return (isDone ? \"[X]\" : \"[ ]\");","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"kab-dot"},"content":" * Marks the task as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"kab-dot"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"kab-dot"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"kab-dot"},"content":" * Marks the task as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"kab-dot"},"content":" public void markAsNotDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"kab-dot"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"kab-dot"},"content":" * Returns a string representation of the task, including its status icon and description.","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"kab-dot"},"content":" * @return The string representation of the task.","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"kab-dot"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"kab-dot"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"kab-dot"},"content":" return getStatusIcon() + \" \" + getDescription();","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":61,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"kab-dot"},"content":" * Returns a string representation of the task for saving to a file.","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"kab-dot"},"content":" * @return The string representation of the task for saving to a file.","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"kab-dot"},"content":" public String toFileString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":67,"author":{"gitId":"kab-dot"},"content":" return \"T | \" + (isDone ? \"1\" : \"0\") + \" | \" + description;","lastModifiedDate":"2024-01-30"},{"lineNumber":68,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":69,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":70,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"kab-dot"},"content":" * Creates a task from a string when loading from a file.","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"kab-dot"},"content":" * @param fileString The string representation of the task from the file.","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"kab-dot"},"content":" * @return The Task object created from the file string.","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"kab-dot"},"content":" public static Task createTaskFromFileString(String fileString) {","lastModifiedDate":"2024-01-30"},{"lineNumber":78,"author":{"gitId":"kab-dot"},"content":" String[] parts \u003d fileString.split(\" \\\\| \");","lastModifiedDate":"2024-01-30"},{"lineNumber":79,"author":{"gitId":"kab-dot"},"content":" if (parts.length \u003d\u003d 3) {","lastModifiedDate":"2024-01-30"},{"lineNumber":80,"author":{"gitId":"kab-dot"},"content":" boolean isDone \u003d parts[1].equals(\"1\");","lastModifiedDate":"2024-01-30"},{"lineNumber":81,"author":{"gitId":"kab-dot"},"content":" String description \u003d parts[2];","lastModifiedDate":"2024-01-30"},{"lineNumber":82,"author":{"gitId":"kab-dot"},"content":" Task task \u003d new Task(description);","lastModifiedDate":"2024-01-30"},{"lineNumber":83,"author":{"gitId":"kab-dot"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"kab-dot"},"content":" task.markAsDone();","lastModifiedDate":"2024-01-30"},{"lineNumber":85,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":86,"author":{"gitId":"kab-dot"},"content":" return task;","lastModifiedDate":"2024-01-30"},{"lineNumber":87,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":88,"author":{"gitId":"kab-dot"},"content":" return null;","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"kab-dot":90}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"import java.util.List;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":" * Represents a list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":"public class TaskList {","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":" * Constructs an empty task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":" private List\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":" public TaskList() {","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":" * Constructs a task list with the specified list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":" * @param tasks The list of tasks to initialize the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":" public TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"kab-dot"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"kab-dot"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"kab-dot"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"kab-dot"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":" * Gets the list of tasks in the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"kab-dot"},"content":" * @return The list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"kab-dot"},"content":" public List\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"kab-dot"},"content":" return tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"kab-dot"},"content":" * Gets the size of the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"kab-dot"},"content":" * @return The size of the task list.","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"kab-dot"},"content":" public int getSize() {","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"kab-dot"},"content":" return tasks.size();","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"kab-dot"},"content":" * Marks a task at the specified index as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"kab-dot"},"content":" * @param index The index of the task to be marked as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"kab-dot"},"content":" * @throws DukeException If the index is invalid.","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"kab-dot"},"content":" public void markTaskAsDone(int index) throws DukeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"kab-dot"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c tasks.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"kab-dot"},"content":" tasks.get(index).markAsDone();","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"kab-dot"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"kab-dot"},"content":" throw new DukeException(\"Invalid task index.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"kab-dot"},"content":" * Marks a task at the specified index as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"kab-dot"},"content":" * @param index The index of the task to be marked as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"kab-dot"},"content":" * @throws DukeException If the index is invalid.","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"kab-dot"},"content":" public void unmarkTaskAsDone(int index) throws DukeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"kab-dot"},"content":" if (index \u003e\u003d 0 \u0026\u0026 index \u003c tasks.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"kab-dot"},"content":" tasks.get(index).markAsNotDone();","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"kab-dot"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"kab-dot"},"content":" throw new DukeException(\"Invalid task index.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"kab-dot"},"content":" * Deletes a task at the specified index and displays the deletion message using the given UI.","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"kab-dot"},"content":" * @param taskIndex The index of the task to be deleted.","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"kab-dot"},"content":" * @param ui The UI used to display messages.","lastModifiedDate":"2024-02-02"},{"lineNumber":90,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"kab-dot"},"content":" public void deleteTask(int taskIndex, Ui ui) {","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"kab-dot"},"content":" if (taskIndex \u003e\u003d 0 \u0026\u0026 taskIndex \u003c tasks.size()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"kab-dot"},"content":" Task removedTask \u003d tasks.remove(taskIndex);","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"kab-dot"},"content":" ui.showTaskDeleted(removedTask, tasks.size());","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"kab-dot"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"kab-dot"},"content":" ui.showInvalidTaskIndex();","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"kab-dot"},"content":" public List\u003cTask\u003e findTasksByKeyword(String keyword) {","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"kab-dot"},"content":" return tasks.stream()","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"kab-dot"},"content":" .filter(task -\u003e task.getDescription().contains(keyword))","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"kab-dot"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-02-02"},{"lineNumber":104,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":105,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":106,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"kab-dot":106}},{"path":"src/main/java/duke/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":" * Represents a to-do task.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":" * Constructs a to-do task with the specified description.","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":" * @param description The description of the to-do task.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":" * Returns a string representation of the to-do task.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" * @return A string representing the to-do task.","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"kab-dot":26}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"import java.util.List;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":" * Represents the user interface of the Duke chatbot.","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":"public class Ui {","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":" * Displays a welcome message.","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":" public void showWelcome() {","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Hello! I\u0027m Aether!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":" * Displays an error message for failed task loading.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" public void showLoadingError() {","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Error loading tasks from file.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":" * Displays a separator line.","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":" public void showSeparator() {","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"_____________________________\");","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"kab-dot"},"content":" * Displays an error message.","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"kab-dot"},"content":" * @param errorMessage The error message to display.","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"kab-dot"},"content":" public void showErrorMessage(String errorMessage) {","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"OOPS!!! \" + errorMessage);","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"_____________________________\");","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"kab-dot"},"content":" * Displays the list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"kab-dot"},"content":" * @param taskList The task list to display.","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"kab-dot"},"content":" public void showTaskList(TaskList taskList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"kab-dot"},"content":" List\u003cTask\u003e tasks \u003d taskList.getTasks();","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"kab-dot"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"kab-dot"},"content":" System.out.println((i + 1) + \".\" + tasks.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"_____________________________\");","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"kab-dot"},"content":" * Displays a message indicating a task has been added.","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"kab-dot"},"content":" * @param task The added task.","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"kab-dot"},"content":" * @param taskCount The total number of tasks after adding.","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"kab-dot"},"content":" public void showTaskAdded(Task task, int taskCount) {","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"kab-dot"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Now you have \" + taskCount + \" tasks in the list.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"_____________________________\");","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"kab-dot"},"content":" * Displays a message indicating a task has been deleted.","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"kab-dot"},"content":" * @param deletedTask The deleted task.","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"kab-dot"},"content":" * @param remainingTasks The remaining number of tasks after deletion.","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"kab-dot"},"content":" public void showTaskDeleted(Task deletedTask, int remainingTasks) {","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"kab-dot"},"content":" System.out.println(\" \" + deletedTask);","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Now you have \" + remainingTasks + \" tasks in the list.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"_____________________________\");","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"kab-dot"},"content":" * Displays a message for an invalid task index.","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"kab-dot"},"content":" public void showInvalidTaskIndex() {","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Invalid task index. Please provide a valid task index.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":90,"author":{"gitId":"kab-dot"},"content":" * Displays a message indicating a task has been marked as done.","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"kab-dot"},"content":" * @param markedTask The marked task.","lastModifiedDate":"2024-02-02"},{"lineNumber":93,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":94,"author":{"gitId":"kab-dot"},"content":" public void showTaskMarked(Task markedTask) {","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"kab-dot"},"content":" System.out.println(\" \" + markedTask);","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"_____________________________\");","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"kab-dot"},"content":" * Displays a message indicating a task has been marked as not done.","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"kab-dot"},"content":" *","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"kab-dot"},"content":" * @param unmarkedTask The unmarked task.","lastModifiedDate":"2024-02-02"},{"lineNumber":104,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":105,"author":{"gitId":"kab-dot"},"content":" public void showTaskUnmarked(Task unmarkedTask) {","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"kab-dot"},"content":" System.out.println(\" \" + unmarkedTask);","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"_____________________________\");","lastModifiedDate":"2024-02-01"},{"lineNumber":109,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":111,"author":{"gitId":"kab-dot"},"content":" public void showMatchingTasks(List\u003cTask\u003e matchingTasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":112,"author":{"gitId":"kab-dot"},"content":" if (matchingTasks.isEmpty()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":113,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"No matching tasks found.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":114,"author":{"gitId":"kab-dot"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":115,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Here are the matching tasks in your list:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":116,"author":{"gitId":"kab-dot"},"content":" for (int i \u003d 0; i \u003c matchingTasks.size(); i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":117,"author":{"gitId":"kab-dot"},"content":" System.out.println((i + 1) + \".\" + matchingTasks.get(i));","lastModifiedDate":"2024-02-02"},{"lineNumber":118,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":119,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":120,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"_____________________________\");","lastModifiedDate":"2024-02-02"},{"lineNumber":121,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":122,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":123,"author":{"gitId":"kab-dot"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":124,"author":{"gitId":"kab-dot"},"content":" * Displays a goodbye message.","lastModifiedDate":"2024-02-02"},{"lineNumber":125,"author":{"gitId":"kab-dot"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":126,"author":{"gitId":"kab-dot"},"content":" public void showGoodbye() {","lastModifiedDate":"2024-01-31"},{"lineNumber":127,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"Goodbye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"kab-dot"},"content":" System.out.println(\"_____________________________\");","lastModifiedDate":"2024-02-01"},{"lineNumber":129,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"kab-dot":131}},{"path":"src/test/java/duke/EventTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":"public class EventTest {","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":" @Test","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":" void testToString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":" // Creating an Event instance with a specific start and end time","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":" String description \u003d \"Sample Event\";","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":" String startTime \u003d \"2022-01-01 12:00\";","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":" String endTime \u003d \"2022-01-01 14:00\";","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":" Event event \u003d new Event(description, startTime, endTime);","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":" // Expected string representation based on the provided start and end time","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":" String expectedToString \u003d \"[E][ ] Sample Event (from: Jan 01 2022 12:00 to: Jan 01 2022 14:00)\";","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" // Testing the toString method","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" assertEquals(expectedToString, event.toString());","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"kab-dot":23}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"package duke;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"kab-dot"},"content":"public class TaskListTest {","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"kab-dot"},"content":" @Test","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"kab-dot"},"content":" public void addTaskShouldIncreaseSize() {","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"kab-dot"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"kab-dot"},"content":" Task task \u003d new Task(\"Sample Task\");","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"kab-dot"},"content":" int initialSize \u003d taskList.getSize();","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"kab-dot"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"kab-dot"},"content":" assertEquals(initialSize + 1, taskList.getSize());","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"kab-dot"},"content":" @Test","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"kab-dot"},"content":" public void deleteTaskShouldRemoveTask() {","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"kab-dot"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"kab-dot"},"content":" Task task \u003d new Task(\"Sample Task\");","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"kab-dot"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"kab-dot"},"content":" int initialSize \u003d taskList.getSize();","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"kab-dot"},"content":" taskList.deleteTask(0, new Ui());","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"kab-dot"},"content":" assertEquals(initialSize - 1, taskList.getSize());","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"kab-dot"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"kab-dot"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"kab-dot"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"kab-dot":28}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"kab-dot"},"content":"todo eat lunch","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"kab-dot"},"content":"deadline submit papers /by Monday","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"kab-dot"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"kab-dot"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"kab-dot"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"kab-dot":5}}] diff --git a/kab-dot_ip_master/commits.json b/kab-dot_ip_master/commits.json index d34600c5..89824252 100644 --- a/kab-dot_ip_master/commits.json +++ b/kab-dot_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"kab-dot":[{"date":"2024-01-23","commitResults":[{"hash":"0fed9cf894b19ccc49b5a15f22c7e69a47d21549","isMergeCommit":false,"messageTitle":"rename, greet, exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":10}}},{"hash":"671c9d337403ad9f48871015a5386f3a7bbee9b4","isMergeCommit":false,"messageTitle":"rename, greet, exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":4}}}]},{"date":"2024-01-24","commitResults":[{"hash":"505bf7345216c0657279d3c09543e0137710b294","isMergeCommit":false,"messageTitle":"echo + study + bye","messageBody":"","tags":["Level-1.Echo"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":3}}},{"hash":"e9b8d7c2401870e49bc1c1a769e86c1b2f45897c","isMergeCommit":false,"messageTitle":"add, list","messageBody":"","tags":["Level-2.Add,List"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":11}}}]},{"date":"2024-01-25","commitResults":[{"hash":"10c161baf35ab34ab333a8c1b14b0b3efda9a388","isMergeCommit":false,"messageTitle":"mark and unmark","messageBody":"","tags":["Level-3.Mark-As-Done"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":10}}},{"hash":"ca48f730df6a30c563577961cf9a779bb2724fe7","isMergeCommit":false,"messageTitle":"todos, events, deadlines","messageBody":"","tags":["Level-4.Todos,Events,Deadlines"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":2}}},{"hash":"9f31ec445514cbbdce1318dfcfa67a694ac19da3","isMergeCommit":false,"messageTitle":"text-ui-testing","messageBody":"","tags":["A-TextUiTesting-Automated-Text-UI-Testing"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":3,"deletions":4}}}]},{"date":"2024-01-26","commitResults":[{"hash":"00e887d7cd6f4786600486d488a06a6140edaede","isMergeCommit":false,"messageTitle":"handle errors","messageBody":"","tags":["Level-5.Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"af04c1b3217c2f9b28ac46bfed93a92a2baeca30","isMergeCommit":false,"messageTitle":"delete","messageBody":"","tags":["Level-6.Delete"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":9}}}]},{"date":"2024-01-30","commitResults":[{"hash":"cbe0b004ada3a5c18d57ab78f3600353ff488037","isMergeCommit":false,"messageTitle":"date and time","messageBody":"","tags":["Level-8.Dates-and-Times"],"fileTypesAndContributionMap":{"java":{"insertions":178,"deletions":63}}}]},{"date":"2024-01-31","commitResults":[{"hash":"ef48b1b15ab16aa4586e72175e805b881fcfd6ae","isMergeCommit":false,"messageTitle":"OOP refactoring","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":618,"deletions":187}}},{"hash":"997dc87e658dac10aac7b0a9e75badcd59874529","isMergeCommit":false,"messageTitle":"packages + fixed file save issues","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":23,"deletions":7}}}]},{"date":"2024-02-01","commitResults":[{"hash":"25bbbad28aa16e6f532f0053e507264fa101926a","isMergeCommit":true,"messageTitle":"Merge commit \u0027a6f73244a20539e20c2189973ebf597df34ef631\u0027","messageBody":"* commit \u0027a6f73244a20539e20c2189973ebf597df34ef631\u0027:\n Bump gradle and lib version\n Add Gradle support\n docs/README.md: Tweak document template\n","fileTypesAndContributionMap":{}},{"hash":"e36ab8f06c53b3df78f61211ea70de46306a7654","isMergeCommit":false,"messageTitle":"gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":1,"deletions":0}}},{"hash":"eed17909ca9314559a7881bc48a4acbbd1ecc0b4","isMergeCommit":false,"messageTitle":"Implement the JUnit tests for TaskList and Event as well as Gradle (implemented in the previous commit)","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"txt":{"insertions":1,"deletions":2},"java":{"insertions":65,"deletions":9}}}]},{"date":"2024-02-02","commitResults":[{"hash":"9e8cce1dd9ea643c714e011b0dd26e7965156738","isMergeCommit":false,"messageTitle":"Wrote JavaDocs for most of the public methods and classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":307,"deletions":15}}},{"hash":"41ab5fa2d2ba1a76c98678835894124ce3a84528","isMergeCommit":false,"messageTitle":"Implement search and find","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":37,"deletions":1}}},{"hash":"ddb2028d80cc8d2596864b28afdd358cd2b057a0","isMergeCommit":false,"messageTitle":"Implement Coding Standard","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":4,"deletions":0},"java":{"insertions":102,"deletions":245}}},{"hash":"09c5e0a837dae943b47985142bac3e684b9ecf3c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027 Fix the merge conflict * branch-A-CodingStandard: Implement Coding Standard","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Command.java\n","fileTypesAndContributionMap":{}},{"hash":"d9d0cdba1638b8d80646a5054eecba5a660fe898","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027 Fix merge conflicts * branch-A-JavaDoc: Wrote JavaDocs for most of the public methods and classes","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Command.java\n#\tsrc/main/java/duke/DukeException.java\n#\tsrc/main/java/duke/Storage.java\n#\tsrc/main/java/duke/Task.java\n#\tsrc/main/java/duke/Ui.java\n","tags":["Level-9.Find","A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"4a57ca24d672b2068d8426a8b76e8659178a6632","isMergeCommit":false,"messageTitle":"Test out the code after merging","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"kab-dot":{"java":999,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":10,"txt":7}},"authorContributionVariance":{"kab-dot":66130.35},"authorDisplayNameMap":{"kab-dot":"CS2103T-T13-4 KHUS..GWAT"}} +{"authorDailyContributionsMap":{"kab-dot":[{"date":"2024-01-23","commitResults":[{"hash":"0fed9cf894b19ccc49b5a15f22c7e69a47d21549","isMergeCommit":false,"messageTitle":"rename, greet, exit","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":10}}},{"hash":"671c9d337403ad9f48871015a5386f3a7bbee9b4","isMergeCommit":false,"messageTitle":"rename, greet, exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":4}}}]},{"date":"2024-01-24","commitResults":[{"hash":"505bf7345216c0657279d3c09543e0137710b294","isMergeCommit":false,"messageTitle":"echo + study + bye","messageBody":"","tags":["Level-1.Echo"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":3}}},{"hash":"e9b8d7c2401870e49bc1c1a769e86c1b2f45897c","isMergeCommit":false,"messageTitle":"add, list","messageBody":"","tags":["Level-2.Add,List"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":11}}}]},{"date":"2024-01-25","commitResults":[{"hash":"10c161baf35ab34ab333a8c1b14b0b3efda9a388","isMergeCommit":false,"messageTitle":"mark and unmark","messageBody":"","tags":["Level-3.Mark-As-Done"],"fileTypesAndContributionMap":{"java":{"insertions":54,"deletions":10}}},{"hash":"ca48f730df6a30c563577961cf9a779bb2724fe7","isMergeCommit":false,"messageTitle":"todos, events, deadlines","messageBody":"","tags":["Level-4.Todos,Events,Deadlines"],"fileTypesAndContributionMap":{"java":{"insertions":75,"deletions":2}}},{"hash":"9f31ec445514cbbdce1318dfcfa67a694ac19da3","isMergeCommit":false,"messageTitle":"text-ui-testing","messageBody":"","tags":["A-TextUiTesting-Automated-Text-UI-Testing"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":3,"deletions":4}}}]},{"date":"2024-01-26","commitResults":[{"hash":"00e887d7cd6f4786600486d488a06a6140edaede","isMergeCommit":false,"messageTitle":"handle errors","messageBody":"","tags":["Level-5.Handle-Errors"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"af04c1b3217c2f9b28ac46bfed93a92a2baeca30","isMergeCommit":false,"messageTitle":"delete","messageBody":"","tags":["Level-6.Delete"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":9}}}]},{"date":"2024-01-30","commitResults":[{"hash":"cbe0b004ada3a5c18d57ab78f3600353ff488037","isMergeCommit":false,"messageTitle":"date and time","messageBody":"","tags":["Level-8.Dates-and-Times"],"fileTypesAndContributionMap":{"java":{"insertions":178,"deletions":63}}}]},{"date":"2024-01-31","commitResults":[{"hash":"ef48b1b15ab16aa4586e72175e805b881fcfd6ae","isMergeCommit":false,"messageTitle":"OOP refactoring","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":618,"deletions":187}}},{"hash":"997dc87e658dac10aac7b0a9e75badcd59874529","isMergeCommit":false,"messageTitle":"packages + fixed file save issues","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":23,"deletions":7}}}]},{"date":"2024-02-01","commitResults":[{"hash":"25bbbad28aa16e6f532f0053e507264fa101926a","isMergeCommit":true,"messageTitle":"Merge commit \u0027a6f73244a20539e20c2189973ebf597df34ef631\u0027","messageBody":"* commit \u0027a6f73244a20539e20c2189973ebf597df34ef631\u0027:\n Bump gradle and lib version\n Add Gradle support\n docs/README.md: Tweak document template\n","fileTypesAndContributionMap":{}},{"hash":"e36ab8f06c53b3df78f61211ea70de46306a7654","isMergeCommit":false,"messageTitle":"gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":1,"deletions":0}}},{"hash":"eed17909ca9314559a7881bc48a4acbbd1ecc0b4","isMergeCommit":false,"messageTitle":"Implement the JUnit tests for TaskList and Event as well as Gradle (implemented in the previous commit)","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0},"txt":{"insertions":1,"deletions":2},"java":{"insertions":65,"deletions":9}}}]},{"date":"2024-02-02","commitResults":[{"hash":"9e8cce1dd9ea643c714e011b0dd26e7965156738","isMergeCommit":false,"messageTitle":"Wrote JavaDocs for most of the public methods and classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":307,"deletions":15}}},{"hash":"41ab5fa2d2ba1a76c98678835894124ce3a84528","isMergeCommit":false,"messageTitle":"Implement search and find","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":37,"deletions":1}}},{"hash":"ddb2028d80cc8d2596864b28afdd358cd2b057a0","isMergeCommit":false,"messageTitle":"Implement Coding Standard","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":4,"deletions":0},"java":{"insertions":102,"deletions":245}}},{"hash":"09c5e0a837dae943b47985142bac3e684b9ecf3c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027 Fix the merge conflict * branch-A-CodingStandard: Implement Coding Standard","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Command.java\n","fileTypesAndContributionMap":{}},{"hash":"d9d0cdba1638b8d80646a5054eecba5a660fe898","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027 Fix merge conflicts * branch-A-JavaDoc: Wrote JavaDocs for most of the public methods and classes","messageBody":"# Conflicts:\n#\tsrc/main/java/duke/Command.java\n#\tsrc/main/java/duke/DukeException.java\n#\tsrc/main/java/duke/Storage.java\n#\tsrc/main/java/duke/Task.java\n#\tsrc/main/java/duke/Ui.java\n","tags":["Level-9.Find","A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"4a57ca24d672b2068d8426a8b76e8659178a6632","isMergeCommit":false,"messageTitle":"Test out the code after merging","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1}}}]},{"date":"2024-02-07","commitResults":[{"hash":"17ead1d58f34cebab7e60d59909f863be8ae7198","isMergeCommit":false,"messageTitle":"Fix Checkstyle Errors","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"7b2250c565e3a3a188a6eb1440c01d9ce2ac121b","isMergeCommit":false,"messageTitle":"Fix some minor comments that should be removed","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":86}}},{"hash":"a4edcb97ae459986ae412fbd43a8c6311ee0f78b","isMergeCommit":true,"messageTitle":"Merge branch \u0027A-CheckStyle\u0027","messageBody":"* A-CheckStyle:\n Fix some minor comments that should be removed\n","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"kab-dot":{"java":913,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":10,"txt":7}},"authorContributionVariance":{"kab-dot":52982.72},"authorDisplayNameMap":{"kab-dot":"CS2103T-T13-4 KHUS..GWAT"}} diff --git a/lynnetteeee_ip_master/authorship.json b/lynnetteeee_ip_master/authorship.json index e4eb2cba..946d370d 100644 --- a/lynnetteeee_ip_master/authorship.json +++ b/lynnetteeee_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lynnetteeee"},"content":"T | 0 | abc ","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"lynnetteeee"},"content":"D | 1 | def | wednesday","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"lynnetteeee"},"content":"E | 0 | ghi | thurs 2pm-4pm ","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"lynnetteeee"},"content":"T | 0 | jkl","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"lynnetteeee":4}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lynnetteeee"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"lynnetteeee"},"content":" protected String by;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"lynnetteeee"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"lynnetteeee"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"lynnetteeee"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"lynnetteeee"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"lynnetteeee"},"content":" public String getType() {","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"lynnetteeee"},"content":" return \"D\";","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"lynnetteeee"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"lynnetteeee"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"lynnetteeee"},"content":" return super.toFileFormat() + String.format(\" | %s\", this.by);","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"lynnetteeee"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"lynnetteeee"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"lynnetteeee"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"lynnetteeee"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lynnetteeee":23}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lynnetteeee"},"content":"import java.io.File;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"lynnetteeee"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"lynnetteeee"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"lynnetteeee"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"lynnetteeee"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":7,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"lynnetteeee"},"content":" private static final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"lynnetteeee"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"lynnetteeee"},"content":" loadTasks(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"lynnetteeee"},"content":" String line \u003d \"__________________________________________________\";","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(\"Hello! I\u0027m Floofy\");","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"lynnetteeee"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"lynnetteeee"},"content":" loop:","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"lynnetteeee"},"content":" while (true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"lynnetteeee"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"lynnetteeee"},"content":" if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"lynnetteeee"},"content":" int idx \u003d Integer.parseInt(userInput.substring(5));","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"lynnetteeee"},"content":" list.get(idx - 1).markTask();","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"lynnetteeee"},"content":" saveTasks(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"lynnetteeee"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"lynnetteeee"},"content":" int idx \u003d Integer.parseInt(userInput.substring(7));","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"lynnetteeee"},"content":" list.get(idx - 1).unmarkTask();","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"lynnetteeee"},"content":" saveTasks(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"lynnetteeee"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"lynnetteeee"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"lynnetteeee"},"content":" if (userInput.length() \u003c 6) {","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"lynnetteeee"},"content":" throw new DukeException(\"Remember to add an actual task. Try again!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"lynnetteeee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"lynnetteeee"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"lynnetteeee"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":43,"author":{"gitId":"lynnetteeee"},"content":" String todoTask \u003d userInput.substring(5);","lastModifiedDate":"2024-01-24"},{"lineNumber":44,"author":{"gitId":"lynnetteeee"},"content":" ToDos newTodo \u003d new ToDos(todoTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":45,"author":{"gitId":"lynnetteeee"},"content":" list.add(newTodo);","lastModifiedDate":"2024-01-24"},{"lineNumber":46,"author":{"gitId":"lynnetteeee"},"content":" newTodo.addTask(list.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"lynnetteeee"},"content":" saveTasks(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"lynnetteeee"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"lynnetteeee"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"lynnetteeee"},"content":" // other improvements: no content, empty deadline","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"lynnetteeee"},"content":" if (userInput.length() \u003c 10) {","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"lynnetteeee"},"content":" throw new DukeException(\"Remember to add an actual task. Try again!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"lynnetteeee"},"content":" if (!(userInput.contains(\"/by\"))) {","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"lynnetteeee"},"content":" throw new DukeException(\"Remember to state the deadline after a \u0027/by\u0027!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"lynnetteeee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"lynnetteeee"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"lynnetteeee"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"lynnetteeee"},"content":" int preIdx \u003d userInput.indexOf(\"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":63,"author":{"gitId":"lynnetteeee"},"content":" int idx \u003d preIdx + 4;","lastModifiedDate":"2024-01-24"},{"lineNumber":64,"author":{"gitId":"lynnetteeee"},"content":" String deadlineTask \u003d userInput.substring(9, preIdx - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":65,"author":{"gitId":"lynnetteeee"},"content":" String deadlineBy \u003d userInput.substring(idx);","lastModifiedDate":"2024-01-24"},{"lineNumber":66,"author":{"gitId":"lynnetteeee"},"content":" Deadline newDeadline \u003d new Deadline(deadlineTask, deadlineBy);","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"lynnetteeee"},"content":" list.add(newDeadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"lynnetteeee"},"content":" newDeadline.addTask(list.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"lynnetteeee"},"content":" saveTasks(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":71,"author":{"gitId":"lynnetteeee"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":72,"author":{"gitId":"lynnetteeee"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"lynnetteeee"},"content":" // other improvements: no content, empty start and end","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"lynnetteeee"},"content":" if (userInput.length() \u003c 7) {","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"lynnetteeee"},"content":" throw new DukeException(\"Remember to add an actual task. Try again!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":77,"author":{"gitId":"lynnetteeee"},"content":" if (!(userInput.contains(\"/from\"))) {","lastModifiedDate":"2024-01-25"},{"lineNumber":78,"author":{"gitId":"lynnetteeee"},"content":" throw new DukeException(\"Remember to state the start of your event after a \u0027/from\u0027!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"lynnetteeee"},"content":" if (!(userInput.contains(\"/to\"))) {","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"lynnetteeee"},"content":" throw new DukeException(\"Remember to state the end of your event after a \u0027/to\u0027!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"lynnetteeee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"lynnetteeee"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"lynnetteeee"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":88,"author":{"gitId":"lynnetteeee"},"content":" int preIdxFrom \u003d userInput.indexOf(\"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":89,"author":{"gitId":"lynnetteeee"},"content":" int preIdxTo \u003d userInput.indexOf(\"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"lynnetteeee"},"content":" int timeFromStart \u003d preIdxFrom + 6;","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"lynnetteeee"},"content":" int timeFromEnd \u003d preIdxTo - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"lynnetteeee"},"content":" int timeToStart \u003d preIdxTo + 4;","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"lynnetteeee"},"content":" String eventTask \u003d userInput.substring(6, preIdxFrom - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"lynnetteeee"},"content":" String eventFrom \u003d userInput.substring(timeFromStart, timeFromEnd);","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"lynnetteeee"},"content":" String eventTo \u003d userInput.substring(timeToStart);","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"lynnetteeee"},"content":" Event newEvent \u003d new Event(eventTask, eventFrom, eventTo);","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"lynnetteeee"},"content":" list.add(newEvent);","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"lynnetteeee"},"content":" newEvent.addTask(list.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"lynnetteeee"},"content":" saveTasks(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":101,"author":{"gitId":"lynnetteeee"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":102,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":103,"author":{"gitId":"lynnetteeee"},"content":" int idx \u003d Integer.parseInt(userInput.substring(7));","lastModifiedDate":"2024-01-25"},{"lineNumber":104,"author":{"gitId":"lynnetteeee"},"content":" Task removed \u003d list.get(idx - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":105,"author":{"gitId":"lynnetteeee"},"content":" list.remove(idx - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"lynnetteeee"},"content":" removed.deleteTask(list.size());","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"lynnetteeee"},"content":" saveTasks(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":109,"author":{"gitId":"lynnetteeee"},"content":" } else if (userInput.startsWith(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":111,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(\"BYE BYE! Come back soon~~ YOUR WISH IS MY COMMAND \u003c33\");","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":113,"author":{"gitId":"lynnetteeee"},"content":" scanner.close();","lastModifiedDate":"2024-01-24"},{"lineNumber":114,"author":{"gitId":"lynnetteeee"},"content":" break loop;","lastModifiedDate":"2024-01-24"},{"lineNumber":115,"author":{"gitId":"lynnetteeee"},"content":" } else if (userInput.startsWith(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":117,"author":{"gitId":"lynnetteeee"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":118,"author":{"gitId":"lynnetteeee"},"content":" String numberedOutput \u003d String.format(\"%d. %s\", i + 1, list.get(i).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(numberedOutput);","lastModifiedDate":"2024-01-24"},{"lineNumber":120,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"lynnetteeee"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":123,"author":{"gitId":"lynnetteeee"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"lynnetteeee"},"content":" throw new DukeException(\"To add a task, please start with any of these commands: \u0027todo\u0027, \u0027deadline\u0027 or \u0027event\u0027!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":125,"author":{"gitId":"lynnetteeee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":126,"author":{"gitId":"lynnetteeee"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":127,"author":{"gitId":"lynnetteeee"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":128,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":131,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":132,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":133,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":134,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":135,"author":{"gitId":"lynnetteeee"},"content":" private static void saveTasks(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-02-05"},{"lineNumber":136,"author":{"gitId":"lynnetteeee"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":137,"author":{"gitId":"lynnetteeee"},"content":" FileWriter writer \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2024-02-05"},{"lineNumber":138,"author":{"gitId":"lynnetteeee"},"content":" for (Task task : list) {","lastModifiedDate":"2024-02-05"},{"lineNumber":139,"author":{"gitId":"lynnetteeee"},"content":" writer.write(task.toFileFormat() + \"\\n\");","lastModifiedDate":"2024-02-05"},{"lineNumber":140,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":141,"author":{"gitId":"lynnetteeee"},"content":" writer.close();","lastModifiedDate":"2024-02-05"},{"lineNumber":142,"author":{"gitId":"lynnetteeee"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":143,"author":{"gitId":"lynnetteeee"},"content":" System.err.println(\"An error occurred while saving tasks to file.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":144,"author":{"gitId":"lynnetteeee"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-05"},{"lineNumber":145,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":146,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":147,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":148,"author":{"gitId":"lynnetteeee"},"content":" private static void loadTasks(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-02-05"},{"lineNumber":149,"author":{"gitId":"lynnetteeee"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":150,"author":{"gitId":"lynnetteeee"},"content":" File file \u003d new File(\"./data/duke.txt\");","lastModifiedDate":"2024-02-05"},{"lineNumber":151,"author":{"gitId":"lynnetteeee"},"content":" // create parent directory if it doesn\u0027t exist.","lastModifiedDate":"2024-02-05"},{"lineNumber":152,"author":{"gitId":"lynnetteeee"},"content":" if (file.getParentFile() !\u003d null \u0026\u0026 !file.getParentFile().exists()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":153,"author":{"gitId":"lynnetteeee"},"content":" if (!file.getParentFile().mkdirs()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":154,"author":{"gitId":"lynnetteeee"},"content":" System.err.println(\"Failed to create parent directories.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":155,"author":{"gitId":"lynnetteeee"},"content":" return;","lastModifiedDate":"2024-02-05"},{"lineNumber":156,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":157,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":158,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":159,"author":{"gitId":"lynnetteeee"},"content":" // create file if it doesn\u0027t exist.","lastModifiedDate":"2024-02-05"},{"lineNumber":160,"author":{"gitId":"lynnetteeee"},"content":" if (!file.exists() \u0026\u0026 !file.createNewFile()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":161,"author":{"gitId":"lynnetteeee"},"content":" System.err.println(\"Failed to create the file.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":162,"author":{"gitId":"lynnetteeee"},"content":" return;","lastModifiedDate":"2024-02-05"},{"lineNumber":163,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":164,"author":{"gitId":"lynnetteeee"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-02-05"},{"lineNumber":165,"author":{"gitId":"lynnetteeee"},"content":" // these are for existing tasks !!","lastModifiedDate":"2024-02-05"},{"lineNumber":166,"author":{"gitId":"lynnetteeee"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":167,"author":{"gitId":"lynnetteeee"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2024-02-05"},{"lineNumber":168,"author":{"gitId":"lynnetteeee"},"content":" if (line.trim().isEmpty()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":169,"author":{"gitId":"lynnetteeee"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":170,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":171,"author":{"gitId":"lynnetteeee"},"content":" Task task \u003d parseTask(line);","lastModifiedDate":"2024-02-05"},{"lineNumber":172,"author":{"gitId":"lynnetteeee"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-02-05"},{"lineNumber":173,"author":{"gitId":"lynnetteeee"},"content":" list.add(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":174,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":175,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":176,"author":{"gitId":"lynnetteeee"},"content":" scanner.close();","lastModifiedDate":"2024-02-05"},{"lineNumber":177,"author":{"gitId":"lynnetteeee"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":178,"author":{"gitId":"lynnetteeee"},"content":" System.err.println(\"An error occurred while loading tasks from file.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":179,"author":{"gitId":"lynnetteeee"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-05"},{"lineNumber":180,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":181,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":182,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":183,"author":{"gitId":"lynnetteeee"},"content":" private static Task parseTask(String line) {","lastModifiedDate":"2024-02-05"},{"lineNumber":184,"author":{"gitId":"lynnetteeee"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-02-05"},{"lineNumber":185,"author":{"gitId":"lynnetteeee"},"content":" Task task \u003d null;","lastModifiedDate":"2024-02-05"},{"lineNumber":186,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":187,"author":{"gitId":"lynnetteeee"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-02-05"},{"lineNumber":188,"author":{"gitId":"lynnetteeee"},"content":" case \"T\":","lastModifiedDate":"2024-02-05"},{"lineNumber":189,"author":{"gitId":"lynnetteeee"},"content":" task \u003d new ToDos(parts[2]);","lastModifiedDate":"2024-02-05"},{"lineNumber":190,"author":{"gitId":"lynnetteeee"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":191,"author":{"gitId":"lynnetteeee"},"content":" case \"D\":","lastModifiedDate":"2024-02-05"},{"lineNumber":192,"author":{"gitId":"lynnetteeee"},"content":" task \u003d new Deadline(parts[2], parts[3]);","lastModifiedDate":"2024-02-05"},{"lineNumber":193,"author":{"gitId":"lynnetteeee"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":194,"author":{"gitId":"lynnetteeee"},"content":" case \"E\":","lastModifiedDate":"2024-02-05"},{"lineNumber":195,"author":{"gitId":"lynnetteeee"},"content":" String[] time \u003d parts[3].split(\"-\");","lastModifiedDate":"2024-02-05"},{"lineNumber":196,"author":{"gitId":"lynnetteeee"},"content":" task \u003d new Event(parts[2], time[0], time[1]);","lastModifiedDate":"2024-02-05"},{"lineNumber":197,"author":{"gitId":"lynnetteeee"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":198,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":199,"author":{"gitId":"lynnetteeee"},"content":" if (task !\u003d null \u0026\u0026 parts[1].equals(\"1\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":200,"author":{"gitId":"lynnetteeee"},"content":" task.markTask();","lastModifiedDate":"2024-02-05"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":202,"author":{"gitId":"lynnetteeee"},"content":" return task;","lastModifiedDate":"2024-02-05"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lynnetteeee":199,"-":5}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lynnetteeee"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"lynnetteeee"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"lynnetteeee"},"content":" super(\"You have input your task in an invalid format! \" + message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"lynnetteeee"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"lynnetteeee":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lynnetteeee"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"lynnetteeee"},"content":" protected String from;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"lynnetteeee"},"content":" protected String to;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"lynnetteeee"},"content":" public Event(String description, String eventFrom, String eventTo) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"lynnetteeee"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"lynnetteeee"},"content":" this.from \u003d eventFrom;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"lynnetteeee"},"content":" this.to \u003d eventTo;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"lynnetteeee"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"lynnetteeee"},"content":" public String getType() {","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"lynnetteeee"},"content":" return \"E\";","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"lynnetteeee"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"lynnetteeee"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"lynnetteeee"},"content":" return super.toFileFormat() + String.format(\" | %s-%s\", this.from, this.to);","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"lynnetteeee"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"lynnetteeee"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"lynnetteeee"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"lynnetteeee"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lynnetteeee":25}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lynnetteeee"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"lynnetteeee"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"lynnetteeee"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"lynnetteeee"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"lynnetteeee"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"lynnetteeee"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"lynnetteeee"},"content":" public String getTask() {","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"lynnetteeee"},"content":" return this.description;","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"lynnetteeee"},"content":" public String getType() {","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"lynnetteeee"},"content":" return \"\";","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"lynnetteeee"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"lynnetteeee"},"content":" return (isDone ? \"[X]\" : \"[ ]\"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"lynnetteeee"},"content":" public void markTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"lynnetteeee"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(this.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"lynnetteeee"},"content":" public void unmarkTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"lynnetteeee"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(this.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"lynnetteeee"},"content":" public void addTask(int total) {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(this.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"lynnetteeee"},"content":" String formatted \u003d String.format(\"Now you have %d tasks in the list.\", total);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(formatted);","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"lynnetteeee"},"content":" public void deleteTask(int newTotal) {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(this.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"lynnetteeee"},"content":" String formatted \u003d String.format(\"Now you have %d tasks in the list.\", newTotal);","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(formatted);","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"lynnetteeee"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"lynnetteeee"},"content":" return String.format(\"%s | %d | %s\", this.getType(), this.isDone ? 1 : 0, this.description);","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"lynnetteeee"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"lynnetteeee"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"lynnetteeee"},"content":" return getStatusIcon() + \" \" + this.description;","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"lynnetteeee"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lynnetteeee":56}},{"path":"src/main/java/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lynnetteeee"},"content":"public class ToDos extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"lynnetteeee"},"content":" public ToDos(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"lynnetteeee"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"lynnetteeee"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"lynnetteeee"},"content":" public String getType() {","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"lynnetteeee"},"content":" return \"T\";","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"lynnetteeee"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"lynnetteeee"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"lynnetteeee"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"lynnetteeee"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lynnetteeee":15}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lynnetteeee"},"content":"todo go get breakfast","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"lynnetteeee"},"content":"deadline finish 2103 /by thursday","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"lynnetteeee"},"content":"event ace meeting /from thursday 7pm /to 8pm","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"lynnetteeee"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"lynnetteeee"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"lynnetteeee"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"lynnetteeee"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"lynnetteeee":7}}] +[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lynnetteeee"},"content":"T | 0 | 2103 level-8","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"lynnetteeee"},"content":"D | 0 | finish quiz | Feb 5 2024","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"lynnetteeee"},"content":"E | 0 | cny trip | Feb 9 2024 - Feb 12 2023","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"lynnetteeee"},"content":"D | 0 | 2109 pset 2 | Feb 10 2024","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"lynnetteeee"},"content":"T | 0 | internship apps asap","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"lynnetteeee":5}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lynnetteeee"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"lynnetteeee"},"content":"import java.time.format.TextStyle;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"lynnetteeee"},"content":"import java.util.Locale;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"lynnetteeee"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"lynnetteeee"},"content":" protected LocalDate by;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"lynnetteeee"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"lynnetteeee"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"lynnetteeee"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"lynnetteeee"},"content":" public String getDateString(LocalDate date) {","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"lynnetteeee"},"content":" return date.getMonth().getDisplayName(TextStyle.SHORT, Locale.ENGLISH) + \" \" + date.getDayOfMonth() + \" \" + date.getYear();","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"lynnetteeee"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"lynnetteeee"},"content":" public String getType() {","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"lynnetteeee"},"content":" return \"D\";","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"lynnetteeee"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"lynnetteeee"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"lynnetteeee"},"content":" return super.toFileFormat() + String.format(\" | %s\", getDateString(this.by));","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"lynnetteeee"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"lynnetteeee"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"lynnetteeee"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"lynnetteeee"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lynnetteeee":30}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lynnetteeee"},"content":"import java.io.File;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"lynnetteeee"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"lynnetteeee"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"lynnetteeee"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"lynnetteeee"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"lynnetteeee"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"lynnetteeee"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"lynnetteeee"},"content":"import java.util.Locale;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"lynnetteeee"},"content":" private static final String FILE_PATH \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":14,"author":{"gitId":"lynnetteeee"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"lynnetteeee"},"content":" loadTasks(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"lynnetteeee"},"content":" String line \u003d \"__________________________________________________\";","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(\"Hello! I\u0027m Floofy\");","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"lynnetteeee"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"lynnetteeee"},"content":" loop:","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"lynnetteeee"},"content":" while (true) {","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"lynnetteeee"},"content":" String userInput \u003d scanner.nextLine();","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"lynnetteeee"},"content":" if (userInput.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"lynnetteeee"},"content":" int idx \u003d Integer.parseInt(userInput.substring(5));","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"lynnetteeee"},"content":" list.get(idx - 1).markTask();","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"lynnetteeee"},"content":" saveTasks(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"lynnetteeee"},"content":" } else if (userInput.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"lynnetteeee"},"content":" int idx \u003d Integer.parseInt(userInput.substring(7));","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"lynnetteeee"},"content":" list.get(idx - 1).unmarkTask();","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"lynnetteeee"},"content":" saveTasks(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"lynnetteeee"},"content":" } else if (userInput.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"lynnetteeee"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"lynnetteeee"},"content":" if (userInput.length() \u003c 6) {","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"lynnetteeee"},"content":" throw new DukeException(\"Remember to add an actual task. Try again!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"lynnetteeee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"lynnetteeee"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"lynnetteeee"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":47,"author":{"gitId":"lynnetteeee"},"content":" String todoTask \u003d userInput.substring(5);","lastModifiedDate":"2024-01-24"},{"lineNumber":48,"author":{"gitId":"lynnetteeee"},"content":" ToDos newTodo \u003d new ToDos(todoTask);","lastModifiedDate":"2024-01-24"},{"lineNumber":49,"author":{"gitId":"lynnetteeee"},"content":" list.add(newTodo);","lastModifiedDate":"2024-01-24"},{"lineNumber":50,"author":{"gitId":"lynnetteeee"},"content":" newTodo.addTask(list.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":51,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":52,"author":{"gitId":"lynnetteeee"},"content":" saveTasks(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"lynnetteeee"},"content":" } else if (userInput.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"lynnetteeee"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"lynnetteeee"},"content":" // other improvements: no content, empty deadline","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"lynnetteeee"},"content":" if (userInput.length() \u003c 10) {","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"lynnetteeee"},"content":" throw new DukeException(\"Remember to add an actual task. Try again!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"lynnetteeee"},"content":" if (!(userInput.contains(\"/by\"))) {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"lynnetteeee"},"content":" throw new DukeException(\"Remember to state the deadline after a \u0027/by\u0027!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"lynnetteeee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"lynnetteeee"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"lynnetteeee"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"lynnetteeee"},"content":" int preIdx \u003d userInput.indexOf(\"/by\");","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"lynnetteeee"},"content":" int idx \u003d preIdx + 4;","lastModifiedDate":"2024-01-24"},{"lineNumber":69,"author":{"gitId":"lynnetteeee"},"content":" String deadlineTask \u003d userInput.substring(9, preIdx - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"lynnetteeee"},"content":" String deadlineBy \u003d userInput.substring(idx);","lastModifiedDate":"2024-01-24"},{"lineNumber":71,"author":{"gitId":"lynnetteeee"},"content":" LocalDate deadlineDate \u003d LocalDate.parse(deadlineBy);","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"lynnetteeee"},"content":" Deadline newDeadline \u003d new Deadline(deadlineTask, deadlineDate);","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"lynnetteeee"},"content":" list.add(newDeadline);","lastModifiedDate":"2024-01-24"},{"lineNumber":74,"author":{"gitId":"lynnetteeee"},"content":" newDeadline.addTask(list.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":75,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":76,"author":{"gitId":"lynnetteeee"},"content":" saveTasks(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":77,"author":{"gitId":"lynnetteeee"},"content":" } else if (userInput.startsWith(\"event\")) {","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"lynnetteeee"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"lynnetteeee"},"content":" // other improvements: no content, empty start and end","lastModifiedDate":"2024-01-25"},{"lineNumber":80,"author":{"gitId":"lynnetteeee"},"content":" if (userInput.length() \u003c 7) {","lastModifiedDate":"2024-01-25"},{"lineNumber":81,"author":{"gitId":"lynnetteeee"},"content":" throw new DukeException(\"Remember to add an actual task. Try again!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":82,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":83,"author":{"gitId":"lynnetteeee"},"content":" if (!(userInput.contains(\"/from\"))) {","lastModifiedDate":"2024-01-25"},{"lineNumber":84,"author":{"gitId":"lynnetteeee"},"content":" throw new DukeException(\"Remember to state the start of your event after a \u0027/from\u0027!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":85,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":86,"author":{"gitId":"lynnetteeee"},"content":" if (!(userInput.contains(\"/to\"))) {","lastModifiedDate":"2024-01-25"},{"lineNumber":87,"author":{"gitId":"lynnetteeee"},"content":" throw new DukeException(\"Remember to state the end of your event after a \u0027/to\u0027!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":88,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":89,"author":{"gitId":"lynnetteeee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":90,"author":{"gitId":"lynnetteeee"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":91,"author":{"gitId":"lynnetteeee"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":92,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":94,"author":{"gitId":"lynnetteeee"},"content":" int preIdxFrom \u003d userInput.indexOf(\"/from\");","lastModifiedDate":"2024-01-24"},{"lineNumber":95,"author":{"gitId":"lynnetteeee"},"content":" int preIdxTo \u003d userInput.indexOf(\"/to\");","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"lynnetteeee"},"content":" int timeFromStart \u003d preIdxFrom + 6;","lastModifiedDate":"2024-01-24"},{"lineNumber":97,"author":{"gitId":"lynnetteeee"},"content":" int timeFromEnd \u003d preIdxTo - 1;","lastModifiedDate":"2024-01-24"},{"lineNumber":98,"author":{"gitId":"lynnetteeee"},"content":" int timeToStart \u003d preIdxTo + 4;","lastModifiedDate":"2024-01-24"},{"lineNumber":99,"author":{"gitId":"lynnetteeee"},"content":" String eventTask \u003d userInput.substring(6, preIdxFrom - 1);","lastModifiedDate":"2024-01-24"},{"lineNumber":100,"author":{"gitId":"lynnetteeee"},"content":" String eventFrom \u003d userInput.substring(timeFromStart, timeFromEnd);","lastModifiedDate":"2024-01-24"},{"lineNumber":101,"author":{"gitId":"lynnetteeee"},"content":" LocalDate eventDateFrom \u003d LocalDate.parse(eventFrom);","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"lynnetteeee"},"content":" String eventTo \u003d userInput.substring(timeToStart);","lastModifiedDate":"2024-01-24"},{"lineNumber":103,"author":{"gitId":"lynnetteeee"},"content":" LocalDate eventDateTo \u003d LocalDate.parse(eventTo);","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"lynnetteeee"},"content":" Event newEvent \u003d new Event(eventTask, eventDateFrom, eventDateTo);","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"lynnetteeee"},"content":" list.add(newEvent);","lastModifiedDate":"2024-01-24"},{"lineNumber":106,"author":{"gitId":"lynnetteeee"},"content":" newEvent.addTask(list.size());","lastModifiedDate":"2024-01-24"},{"lineNumber":107,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"lynnetteeee"},"content":" saveTasks(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":109,"author":{"gitId":"lynnetteeee"},"content":" } else if (userInput.startsWith(\"delete\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":110,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":111,"author":{"gitId":"lynnetteeee"},"content":" int idx \u003d Integer.parseInt(userInput.substring(7));","lastModifiedDate":"2024-01-25"},{"lineNumber":112,"author":{"gitId":"lynnetteeee"},"content":" Task removed \u003d list.get(idx - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":113,"author":{"gitId":"lynnetteeee"},"content":" list.remove(idx - 1);","lastModifiedDate":"2024-01-25"},{"lineNumber":114,"author":{"gitId":"lynnetteeee"},"content":" removed.deleteTask(list.size());","lastModifiedDate":"2024-01-25"},{"lineNumber":115,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-25"},{"lineNumber":116,"author":{"gitId":"lynnetteeee"},"content":" saveTasks(list);","lastModifiedDate":"2024-02-05"},{"lineNumber":117,"author":{"gitId":"lynnetteeee"},"content":" } else if (userInput.startsWith(\"bye\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":118,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":119,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(\"BYE BYE! Come back soon~~ YOUR WISH IS MY COMMAND \u003c33\");","lastModifiedDate":"2024-01-25"},{"lineNumber":120,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":121,"author":{"gitId":"lynnetteeee"},"content":" scanner.close();","lastModifiedDate":"2024-01-24"},{"lineNumber":122,"author":{"gitId":"lynnetteeee"},"content":" break loop;","lastModifiedDate":"2024-01-24"},{"lineNumber":123,"author":{"gitId":"lynnetteeee"},"content":" } else if (userInput.startsWith(\"list\")) {","lastModifiedDate":"2024-01-25"},{"lineNumber":124,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":125,"author":{"gitId":"lynnetteeee"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-24"},{"lineNumber":126,"author":{"gitId":"lynnetteeee"},"content":" String numberedOutput \u003d String.format(\"%d. %s\", i + 1, list.get(i).toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":127,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(numberedOutput);","lastModifiedDate":"2024-01-24"},{"lineNumber":128,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":129,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-24"},{"lineNumber":130,"author":{"gitId":"lynnetteeee"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"lynnetteeee"},"content":" try {","lastModifiedDate":"2024-01-25"},{"lineNumber":132,"author":{"gitId":"lynnetteeee"},"content":" throw new DukeException(\"To add a task, please start with any of these commands: \u0027todo\u0027, \u0027deadline\u0027 or \u0027event\u0027!\");","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"lynnetteeee"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-25"},{"lineNumber":134,"author":{"gitId":"lynnetteeee"},"content":" System.err.println(e.getMessage());","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"lynnetteeee"},"content":" continue;","lastModifiedDate":"2024-01-25"},{"lineNumber":136,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":137,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":139,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":140,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":141,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":142,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":143,"author":{"gitId":"lynnetteeee"},"content":" private static void saveTasks(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-02-05"},{"lineNumber":144,"author":{"gitId":"lynnetteeee"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":145,"author":{"gitId":"lynnetteeee"},"content":" FileWriter writer \u003d new FileWriter(FILE_PATH);","lastModifiedDate":"2024-02-05"},{"lineNumber":146,"author":{"gitId":"lynnetteeee"},"content":" for (Task task : list) {","lastModifiedDate":"2024-02-05"},{"lineNumber":147,"author":{"gitId":"lynnetteeee"},"content":" writer.write(task.toFileFormat() + \"\\n\");","lastModifiedDate":"2024-02-05"},{"lineNumber":148,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":149,"author":{"gitId":"lynnetteeee"},"content":" writer.close();","lastModifiedDate":"2024-02-05"},{"lineNumber":150,"author":{"gitId":"lynnetteeee"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":151,"author":{"gitId":"lynnetteeee"},"content":" System.err.println(\"An error occurred while saving tasks to file.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":152,"author":{"gitId":"lynnetteeee"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-05"},{"lineNumber":153,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":154,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":155,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":156,"author":{"gitId":"lynnetteeee"},"content":" private static void loadTasks(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-02-05"},{"lineNumber":157,"author":{"gitId":"lynnetteeee"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":158,"author":{"gitId":"lynnetteeee"},"content":" File file \u003d new File(\"./data/duke.txt\");","lastModifiedDate":"2024-02-05"},{"lineNumber":159,"author":{"gitId":"lynnetteeee"},"content":" // create parent directory if it doesn\u0027t exist.","lastModifiedDate":"2024-02-05"},{"lineNumber":160,"author":{"gitId":"lynnetteeee"},"content":" if (file.getParentFile() !\u003d null \u0026\u0026 !file.getParentFile().exists()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":161,"author":{"gitId":"lynnetteeee"},"content":" if (!file.getParentFile().mkdirs()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":162,"author":{"gitId":"lynnetteeee"},"content":" System.err.println(\"Failed to create parent directories.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":163,"author":{"gitId":"lynnetteeee"},"content":" return;","lastModifiedDate":"2024-02-05"},{"lineNumber":164,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":165,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":166,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":167,"author":{"gitId":"lynnetteeee"},"content":" // create file if it doesn\u0027t exist.","lastModifiedDate":"2024-02-05"},{"lineNumber":168,"author":{"gitId":"lynnetteeee"},"content":" if (!file.exists() \u0026\u0026 !file.createNewFile()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":169,"author":{"gitId":"lynnetteeee"},"content":" System.err.println(\"Failed to create the file.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":170,"author":{"gitId":"lynnetteeee"},"content":" return;","lastModifiedDate":"2024-02-05"},{"lineNumber":171,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":172,"author":{"gitId":"lynnetteeee"},"content":" Scanner scanner \u003d new Scanner(file);","lastModifiedDate":"2024-02-05"},{"lineNumber":173,"author":{"gitId":"lynnetteeee"},"content":" // these are for existing tasks !!","lastModifiedDate":"2024-02-05"},{"lineNumber":174,"author":{"gitId":"lynnetteeee"},"content":" while (scanner.hasNextLine()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":175,"author":{"gitId":"lynnetteeee"},"content":" String line \u003d scanner.nextLine();","lastModifiedDate":"2024-02-05"},{"lineNumber":176,"author":{"gitId":"lynnetteeee"},"content":" if (line.trim().isEmpty()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":177,"author":{"gitId":"lynnetteeee"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":178,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":179,"author":{"gitId":"lynnetteeee"},"content":" Task task \u003d parseTask(line);","lastModifiedDate":"2024-02-05"},{"lineNumber":180,"author":{"gitId":"lynnetteeee"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-02-05"},{"lineNumber":181,"author":{"gitId":"lynnetteeee"},"content":" list.add(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":182,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":183,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":184,"author":{"gitId":"lynnetteeee"},"content":" scanner.close();","lastModifiedDate":"2024-02-05"},{"lineNumber":185,"author":{"gitId":"lynnetteeee"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":186,"author":{"gitId":"lynnetteeee"},"content":" System.err.println(\"An error occurred while loading tasks from file.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":187,"author":{"gitId":"lynnetteeee"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-05"},{"lineNumber":188,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":189,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":190,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":191,"author":{"gitId":"lynnetteeee"},"content":" private static Task parseTask(String line) {","lastModifiedDate":"2024-02-05"},{"lineNumber":192,"author":{"gitId":"lynnetteeee"},"content":" String[] parts \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-02-05"},{"lineNumber":193,"author":{"gitId":"lynnetteeee"},"content":" Task task \u003d null;","lastModifiedDate":"2024-02-05"},{"lineNumber":194,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":195,"author":{"gitId":"lynnetteeee"},"content":" switch (parts[0]) {","lastModifiedDate":"2024-02-05"},{"lineNumber":196,"author":{"gitId":"lynnetteeee"},"content":" case \"T\":","lastModifiedDate":"2024-02-05"},{"lineNumber":197,"author":{"gitId":"lynnetteeee"},"content":" task \u003d new ToDos(parts[2]);","lastModifiedDate":"2024-02-05"},{"lineNumber":198,"author":{"gitId":"lynnetteeee"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":199,"author":{"gitId":"lynnetteeee"},"content":" case \"D\":","lastModifiedDate":"2024-02-05"},{"lineNumber":200,"author":{"gitId":"lynnetteeee"},"content":" // will receive date as Oct 15 2019","lastModifiedDate":"2024-02-06"},{"lineNumber":201,"author":{"gitId":"lynnetteeee"},"content":" // need to convert to LocalDate","lastModifiedDate":"2024-02-06"},{"lineNumber":202,"author":{"gitId":"lynnetteeee"},"content":" LocalDate deadlineBy \u003d convertDate(parts[3]);","lastModifiedDate":"2024-02-06"},{"lineNumber":203,"author":{"gitId":"lynnetteeee"},"content":" task \u003d new Deadline(parts[2], deadlineBy);","lastModifiedDate":"2024-02-06"},{"lineNumber":204,"author":{"gitId":"lynnetteeee"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":205,"author":{"gitId":"lynnetteeee"},"content":" case \"E\":","lastModifiedDate":"2024-02-05"},{"lineNumber":206,"author":{"gitId":"lynnetteeee"},"content":" // will receive date as Oct 15 2019 - Oct 16 2019","lastModifiedDate":"2024-02-06"},{"lineNumber":207,"author":{"gitId":"lynnetteeee"},"content":" String[] time \u003d parts[3].split(\"\\\\s*-\\\\s*\");","lastModifiedDate":"2024-02-06"},{"lineNumber":208,"author":{"gitId":"lynnetteeee"},"content":" LocalDate eventFrom \u003d convertDate(time[0]);","lastModifiedDate":"2024-02-06"},{"lineNumber":209,"author":{"gitId":"lynnetteeee"},"content":" LocalDate eventTo \u003d convertDate(time[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":210,"author":{"gitId":"lynnetteeee"},"content":" task \u003d new Event(parts[2], eventFrom, eventTo);","lastModifiedDate":"2024-02-06"},{"lineNumber":211,"author":{"gitId":"lynnetteeee"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":212,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":213,"author":{"gitId":"lynnetteeee"},"content":" if (task !\u003d null \u0026\u0026 parts[1].equals(\"1\")) {","lastModifiedDate":"2024-02-05"},{"lineNumber":214,"author":{"gitId":"lynnetteeee"},"content":" task.markTask();","lastModifiedDate":"2024-02-05"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":216,"author":{"gitId":"lynnetteeee"},"content":" return task;","lastModifiedDate":"2024-02-05"},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":218,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":219,"author":{"gitId":"lynnetteeee"},"content":" public static LocalDate convertDate(String date) {","lastModifiedDate":"2024-02-06"},{"lineNumber":220,"author":{"gitId":"lynnetteeee"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM d yyyy\", Locale.ENGLISH);","lastModifiedDate":"2024-02-06"},{"lineNumber":221,"author":{"gitId":"lynnetteeee"},"content":" LocalDate localDate \u003d LocalDate.parse(date, formatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":222,"author":{"gitId":"lynnetteeee"},"content":" return localDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lynnetteeee":218,"-":6}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lynnetteeee"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"lynnetteeee"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"lynnetteeee"},"content":" super(\"You have input your task in an invalid format! \" + message);","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"lynnetteeee"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"lynnetteeee":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lynnetteeee"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"lynnetteeee"},"content":"import java.time.format.TextStyle;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"lynnetteeee"},"content":"import java.util.Locale;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"lynnetteeee"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"lynnetteeee"},"content":" protected LocalDate from;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"lynnetteeee"},"content":" protected LocalDate to;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"lynnetteeee"},"content":" public Event(String description, LocalDate eventFromDate, LocalDate eventToDate) {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"lynnetteeee"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"lynnetteeee"},"content":" this.from \u003d eventFromDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"lynnetteeee"},"content":" this.to \u003d eventToDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"lynnetteeee"},"content":" public String getDateString(LocalDate date) {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"lynnetteeee"},"content":" return date.getMonth().getDisplayName(TextStyle.SHORT, Locale.ENGLISH) + \" \" + date.getDayOfMonth() + \" \" + date.getYear();","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"lynnetteeee"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"lynnetteeee"},"content":" public String getType() {","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"lynnetteeee"},"content":" return \"E\";","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"lynnetteeee"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"lynnetteeee"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"lynnetteeee"},"content":" return super.toFileFormat() + String.format(\" | %s - %s\", getDateString(this.from), getDateString(this.to));","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"lynnetteeee"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"lynnetteeee"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"lynnetteeee"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"lynnetteeee"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lynnetteeee":32}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lynnetteeee"},"content":"public class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"lynnetteeee"},"content":" protected String description;","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"lynnetteeee"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"lynnetteeee"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"lynnetteeee"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"lynnetteeee"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"lynnetteeee"},"content":" public String getTask() {","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"lynnetteeee"},"content":" return this.description;","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"lynnetteeee"},"content":" public String getType() {","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"lynnetteeee"},"content":" return \"\";","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"lynnetteeee"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"lynnetteeee"},"content":" return (isDone ? \"[X]\" : \"[ ]\"); // mark done task with X","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"lynnetteeee"},"content":" public void markTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"lynnetteeee"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(this.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"lynnetteeee"},"content":" public void unmarkTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"lynnetteeee"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":31,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(this.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":33,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":34,"author":{"gitId":"lynnetteeee"},"content":" public void addTask(int total) {","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(this.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":37,"author":{"gitId":"lynnetteeee"},"content":" String formatted \u003d String.format(\"Now you have %d tasks in the list.\", total);","lastModifiedDate":"2024-01-24"},{"lineNumber":38,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(formatted);","lastModifiedDate":"2024-01-24"},{"lineNumber":39,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":40,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":41,"author":{"gitId":"lynnetteeee"},"content":" public void deleteTask(int newTotal) {","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(this.toString());","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"lynnetteeee"},"content":" String formatted \u003d String.format(\"Now you have %d tasks in the list.\", newTotal);","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"lynnetteeee"},"content":" System.out.println(formatted);","lastModifiedDate":"2024-01-25"},{"lineNumber":46,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"lynnetteeee"},"content":" public String toFileFormat() {","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"lynnetteeee"},"content":" return String.format(\"%s | %d | %s\", this.getType(), this.isDone ? 1 : 0, this.description);","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"lynnetteeee"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":53,"author":{"gitId":"lynnetteeee"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":54,"author":{"gitId":"lynnetteeee"},"content":" return getStatusIcon() + \" \" + this.description;","lastModifiedDate":"2024-01-24"},{"lineNumber":55,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":56,"author":{"gitId":"lynnetteeee"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lynnetteeee":56}},{"path":"src/main/java/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"lynnetteeee"},"content":"public class ToDos extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"lynnetteeee"},"content":" public ToDos(String description) {","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"lynnetteeee"},"content":" super(description);","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"lynnetteeee"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"lynnetteeee"},"content":" public String getType() {","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"lynnetteeee"},"content":" return \"T\";","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"lynnetteeee"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"lynnetteeee"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"lynnetteeee"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"lynnetteeee"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"lynnetteeee"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"lynnetteeee"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"lynnetteeee":15}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"lynnetteeee"},"content":"todo go get breakfast","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"lynnetteeee"},"content":"deadline finish 2103 /by thursday","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"lynnetteeee"},"content":"event ace meeting /from thursday 7pm /to 8pm","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"lynnetteeee"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"lynnetteeee"},"content":"mark 2","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"lynnetteeee"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"lynnetteeee"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"lynnetteeee":7}}] diff --git a/lynnetteeee_ip_master/commits.json b/lynnetteeee_ip_master/commits.json index 1a02e975..46418bd8 100644 --- a/lynnetteeee_ip_master/commits.json +++ b/lynnetteeee_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"lynnetteeee":[{"date":"2024-01-24","commitResults":[{"hash":"1d7ec41942c497b47802188a92d7e33e13930937","isMergeCommit":false,"messageTitle":"finish level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"643d9b2e56fb912edd38a583be50fd13a5ab09a5","isMergeCommit":false,"messageTitle":"finish level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"78e1ed08695188c2f21904d0512514960f79f9cf","isMergeCommit":false,"messageTitle":"finish level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"ff5b035ccac581f2b70b7583f5e335d774d67b40","isMergeCommit":false,"messageTitle":"finish level 3, added new class Task.java","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":17}}},{"hash":"51adf3b6ed219a49e71cdf4eb1e94d84203c6837","isMergeCommit":false,"messageTitle":"finish level 4, added classes ToDos, Deadline, Event","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":0}}}]},{"date":"2024-01-25","commitResults":[{"hash":"42de9c31c4b3e0a7336e47f84ff443d0aa0b4c13","isMergeCommit":false,"messageTitle":"added testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":3,"deletions":0}}},{"hash":"4f479ee72f70e77a10c02efd7d25810644e90a79","isMergeCommit":false,"messageTitle":"basic exceptions for invalid format (not including empty fields yet)","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":3}}},{"hash":"b9f2710d2df05cc8f672a49aedd59dce20601434","isMergeCommit":false,"messageTitle":"added delete feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"88f22ca7da10cea64e29516afaaef0ef6afe6496","isMergeCommit":false,"messageTitle":"added another checked exception","messageBody":"","tags":["Level-5-Updated"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":21}}}]},{"date":"2024-02-05","commitResults":[{"hash":"1652c73295fecf08edd66851c1ff22298c92fd2d","isMergeCommit":false,"messageTitle":"save feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":120,"deletions":3}}},{"hash":"fabb21de78cc604144856047222a26ff12960d2e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"* branch-Level-7:\n save feature\n","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"lynnetteeee":{"java":323,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":11}},"authorContributionVariance":{"lynnetteeee":3261.237},"authorDisplayNameMap":{"lynnetteeee":"CS2103T-T12-2 ONG ..ETTE"}} +{"authorDailyContributionsMap":{"lynnetteeee":[{"date":"2024-01-24","commitResults":[{"hash":"1d7ec41942c497b47802188a92d7e33e13930937","isMergeCommit":false,"messageTitle":"finish level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":6}}},{"hash":"643d9b2e56fb912edd38a583be50fd13a5ab09a5","isMergeCommit":false,"messageTitle":"finish level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"78e1ed08695188c2f21904d0512514960f79f9cf","isMergeCommit":false,"messageTitle":"finish level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":5}}},{"hash":"ff5b035ccac581f2b70b7583f5e335d774d67b40","isMergeCommit":false,"messageTitle":"finish level 3, added new class Task.java","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":17}}},{"hash":"51adf3b6ed219a49e71cdf4eb1e94d84203c6837","isMergeCommit":false,"messageTitle":"finish level 4, added classes ToDos, Deadline, Event","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":76,"deletions":0}}}]},{"date":"2024-01-25","commitResults":[{"hash":"42de9c31c4b3e0a7336e47f84ff443d0aa0b4c13","isMergeCommit":false,"messageTitle":"added testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":3,"deletions":0}}},{"hash":"4f479ee72f70e77a10c02efd7d25810644e90a79","isMergeCommit":false,"messageTitle":"basic exceptions for invalid format (not including empty fields yet)","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":3}}},{"hash":"b9f2710d2df05cc8f672a49aedd59dce20601434","isMergeCommit":false,"messageTitle":"added delete feature","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"88f22ca7da10cea64e29516afaaef0ef6afe6496","isMergeCommit":false,"messageTitle":"added another checked exception","messageBody":"","tags":["Level-5-Updated"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":21}}}]},{"date":"2024-02-05","commitResults":[{"hash":"1652c73295fecf08edd66851c1ff22298c92fd2d","isMergeCommit":false,"messageTitle":"save feature","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":120,"deletions":3}}},{"hash":"fabb21de78cc604144856047222a26ff12960d2e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"* branch-Level-7:\n save feature\n","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"948cad26e29994246b570c40a79e2c9c5ddbb5ad","isMergeCommit":false,"messageTitle":"level 8 date done","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":4},"java":{"insertions":48,"deletions":14}}},{"hash":"cb99ed2289bcd75919d9e961ebaac986853a4b04","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"* branch-Level-8:\n level 8 date done\n","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"lynnetteeee":{"java":356,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":12}},"authorContributionVariance":{"lynnetteeee":3197.9233},"authorDisplayNameMap":{"lynnetteeee":"CS2103T-T12-2 ONG ..ETTE"}} diff --git a/marclamp_ip_master/authorship.json b/marclamp_ip_master/authorship.json index 8c8b7b3e..9a5c3b61 100644 --- a/marclamp_ip_master/authorship.json +++ b/marclamp_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"# Chaterpillar project template","lastModifiedDate":"2024-01-26"},{"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":"marclamp"},"content":"3. After that, locate the `src/main/java/Chaterpillar.java` file, right-click it, and choose `Run Chaterpillar.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-26"},{"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":{"marclamp":2,"-":22}},{"path":"data/history.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"T|true|read book","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"D|true|return book|6/Feb/2024","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"E|false|project meeting|8/Feb/2024 02:00 PM|8/Feb/2024 04:00 PM","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"T|true|join sports club","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"D|false|finish this|6/Feb/2024","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"E|false|lunch plans|6/Feb/2024 02:00 PM|6/Feb/2024 04:00 PM","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"marclamp":6}},{"path":"src/main/java/Chaterpillar.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":"import java.util.List;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":"import java.nio.charset.Charset;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" * Main class for Chaterpillar chatbot.","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":"public class Chaterpillar {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" public static boolean hasExited \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" public static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":" public static final String CHATBOT_PATH_NAME \u003d \"./data\";","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":" public static final String CHATBOT_FILE_NAME \u003d \"history.txt\";","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":" * Prints the greeting message by the Chaterpillar chatbot.","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"marclamp"},"content":" * It also prints the horizontal lines as dividers before and after the message.","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"marclamp"},"content":" public static void greet() {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"marclamp"},"content":" printHorizontalLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":32,"author":{"gitId":"marclamp"},"content":" System.out.println(\"Hello! I\u0027m Chaterpillar\");","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"marclamp"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"marclamp"},"content":" printHorizontalLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"marclamp"},"content":" * Exits the program.","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"marclamp"},"content":" * It sets the exited flag to true, and prints the exit message.","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"marclamp"},"content":" public static void exit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"marclamp"},"content":" hasExited \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"marclamp"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"marclamp"},"content":" * Prints out the message given in the String argument.","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"marclamp"},"content":" * @param s the message to be printed","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"marclamp"},"content":" public static void echo(String s) {","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"marclamp"},"content":" System.out.println(s);","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"marclamp"},"content":" * Prints out a horizontal line, typically used to segment","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"marclamp"},"content":" * the start and end of a message by the chatbot.","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"marclamp"},"content":" public static void printHorizontalLine() {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"marclamp"},"content":" String line \u003d \"-\".repeat(50);","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"marclamp"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"marclamp"},"content":" * Parses the input from the user, then calls the respective","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"marclamp"},"content":" * methods to deal with the various actions of the chatbot.","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"marclamp"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"marclamp"},"content":" * @param reader \u003ccode\u003eBufferedReader\u003c/code\u003e used to read from \u003ccode\u003eSystem.in\u003c/code\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"marclamp"},"content":" * @return \u003ccode\u003eTask\u003c/code\u003e object","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"marclamp"},"content":" * @throws IOException if there are any input/output errors","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"marclamp"},"content":" * @see IOException","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"marclamp"},"content":" public static Boolean parseInput(BufferedReader reader) throws IOException {","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"marclamp"},"content":" String input \u003d reader.readLine();","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"marclamp"},"content":" String[] inputSplit \u003d input.split(\" \");","lastModifiedDate":"2024-01-30"},{"lineNumber":75,"author":{"gitId":"marclamp"},"content":" printHorizontalLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":76,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"marclamp"},"content":" int num;","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"marclamp"},"content":" Task currTask \u003d null;","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"marclamp"},"content":" String name;","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"marclamp"},"content":" String[] temp;","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"marclamp"},"content":" boolean edited \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"marclamp"},"content":" switch(inputSplit[0]) {","lastModifiedDate":"2024-01-30"},{"lineNumber":84,"author":{"gitId":"marclamp"},"content":" case \"list\":","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"marclamp"},"content":" // ToDo: Fix Null Pointer Exception","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"marclamp"},"content":" echo(\"Here are the tasks in your list: \");","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"marclamp"},"content":" int i \u003d 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"marclamp"},"content":" for (Task eachTask : tasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"marclamp"},"content":" echo(i++ + \". \" + eachTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":90,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"marclamp"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"marclamp"},"content":" case \"mark\":","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"marclamp"},"content":" echo(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"marclamp"},"content":" num \u003d Integer.parseInt(inputSplit[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":95,"author":{"gitId":"marclamp"},"content":" currTask \u003d tasks.get(num-1);","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"marclamp"},"content":" currTask.mark();","lastModifiedDate":"2024-01-30"},{"lineNumber":97,"author":{"gitId":"marclamp"},"content":" echo(currTask.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":98,"author":{"gitId":"marclamp"},"content":" edited \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"marclamp"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"marclamp"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"marclamp"},"content":" echo(\"Ok, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"marclamp"},"content":" num \u003d Integer.parseInt(inputSplit[1]);","lastModifiedDate":"2024-01-30"},{"lineNumber":103,"author":{"gitId":"marclamp"},"content":" currTask \u003d tasks.get(num-1);","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"marclamp"},"content":" currTask.unmark();","lastModifiedDate":"2024-01-30"},{"lineNumber":105,"author":{"gitId":"marclamp"},"content":" echo(currTask.toString());","lastModifiedDate":"2024-01-30"},{"lineNumber":106,"author":{"gitId":"marclamp"},"content":" edited \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":107,"author":{"gitId":"marclamp"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"marclamp"},"content":" case \"bye\":","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"marclamp"},"content":" // exits the program","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"marclamp"},"content":" exit();","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"marclamp"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"marclamp"},"content":" case \"todo\":","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"marclamp"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"marclamp"},"content":" name \u003d input.substring(5);","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"marclamp"},"content":" currTask \u003d new TodoTask(name);","lastModifiedDate":"2024-01-30"},{"lineNumber":116,"author":{"gitId":"marclamp"},"content":" addTask(currTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":117,"author":{"gitId":"marclamp"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"marclamp"},"content":" echo(\"Sorry, the name of the task todo cannot be empty.\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"marclamp"},"content":" \"The way to use the command is as such: todo taskname\");","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"marclamp"},"content":" edited \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":122,"author":{"gitId":"marclamp"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"marclamp"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"marclamp"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"marclamp"},"content":" temp \u003d input.split(\"/\");","lastModifiedDate":"2024-01-26"},{"lineNumber":126,"author":{"gitId":"marclamp"},"content":" name \u003d temp[0].substring(9);","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"marclamp"},"content":" String date \u003d temp[1].substring(3);","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"marclamp"},"content":" currTask \u003d new DeadlineTask(name, date);","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"marclamp"},"content":" addTask(currTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"marclamp"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":131,"author":{"gitId":"marclamp"},"content":" echo(\"Sorry, this command is in the wrong format.\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":132,"author":{"gitId":"marclamp"},"content":" \"The way to use the command is: deadline taskname /by date_and_time\");","lastModifiedDate":"2024-01-26"},{"lineNumber":133,"author":{"gitId":"marclamp"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":134,"author":{"gitId":"marclamp"},"content":" echo(\"Unable to add task, wrong date/time format!\");","lastModifiedDate":"2024-02-06"},{"lineNumber":135,"author":{"gitId":"marclamp"},"content":" echo(\"Suggested format: DD/MM/YYY HH:MM\");","lastModifiedDate":"2024-02-06"},{"lineNumber":136,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"marclamp"},"content":" edited \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":138,"author":{"gitId":"marclamp"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":139,"author":{"gitId":"marclamp"},"content":" case \"event\":","lastModifiedDate":"2024-01-26"},{"lineNumber":140,"author":{"gitId":"marclamp"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":141,"author":{"gitId":"marclamp"},"content":" temp \u003d input.split(\"/\");","lastModifiedDate":"2024-01-26"},{"lineNumber":142,"author":{"gitId":"marclamp"},"content":" name \u003d temp[0].substring(6);","lastModifiedDate":"2024-01-26"},{"lineNumber":143,"author":{"gitId":"marclamp"},"content":" String date1 \u003d temp[1].substring(5);","lastModifiedDate":"2024-01-26"},{"lineNumber":144,"author":{"gitId":"marclamp"},"content":" String date2 \u003d temp[2].substring(3);","lastModifiedDate":"2024-01-26"},{"lineNumber":145,"author":{"gitId":"marclamp"},"content":" currTask \u003d new EventTask(name, date1, date2);","lastModifiedDate":"2024-01-30"},{"lineNumber":146,"author":{"gitId":"marclamp"},"content":" addTask(currTask);","lastModifiedDate":"2024-01-30"},{"lineNumber":147,"author":{"gitId":"marclamp"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":148,"author":{"gitId":"marclamp"},"content":" echo(\"Sorry, this command is in the wrong format.\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":149,"author":{"gitId":"marclamp"},"content":" \"The way to use the command is: event taskname /from date_and_time /to date_and_time\");","lastModifiedDate":"2024-01-26"},{"lineNumber":150,"author":{"gitId":"marclamp"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":151,"author":{"gitId":"marclamp"},"content":" echo(\"Unable to add task, wrong date/time format!\");","lastModifiedDate":"2024-02-06"},{"lineNumber":152,"author":{"gitId":"marclamp"},"content":" echo(\"Suggested format: DD/MM/YYY HH:MM\");","lastModifiedDate":"2024-02-06"},{"lineNumber":153,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":154,"author":{"gitId":"marclamp"},"content":" edited \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":155,"author":{"gitId":"marclamp"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":156,"author":{"gitId":"marclamp"},"content":" case \"delete\":","lastModifiedDate":"2024-01-26"},{"lineNumber":157,"author":{"gitId":"marclamp"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":158,"author":{"gitId":"marclamp"},"content":" temp \u003d input.split(\" \");","lastModifiedDate":"2024-01-26"},{"lineNumber":159,"author":{"gitId":"marclamp"},"content":" int index \u003d Integer.parseInt(temp[1])-1;","lastModifiedDate":"2024-01-26"},{"lineNumber":160,"author":{"gitId":"marclamp"},"content":" deleteTask(index);","lastModifiedDate":"2024-02-06"},{"lineNumber":161,"author":{"gitId":"marclamp"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":162,"author":{"gitId":"marclamp"},"content":" echo(\"Sorry, there is no number detected.\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":163,"author":{"gitId":"marclamp"},"content":" \"The correct way to use the command is: delete number\");","lastModifiedDate":"2024-01-26"},{"lineNumber":164,"author":{"gitId":"marclamp"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":165,"author":{"gitId":"marclamp"},"content":" echo(\"Sorry, the format for this command is wrong.\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":166,"author":{"gitId":"marclamp"},"content":" \"The correct way to use the command is: delete number\");","lastModifiedDate":"2024-01-26"},{"lineNumber":167,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":168,"author":{"gitId":"marclamp"},"content":" edited \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":169,"author":{"gitId":"marclamp"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":170,"author":{"gitId":"marclamp"},"content":" case \"today\":","lastModifiedDate":"2024-02-06"},{"lineNumber":171,"author":{"gitId":"marclamp"},"content":" echo(\"Here are the tasks for today:\");","lastModifiedDate":"2024-02-06"},{"lineNumber":172,"author":{"gitId":"marclamp"},"content":" DateTime today \u003d new DateTime(LocalDate.now());","lastModifiedDate":"2024-02-06"},{"lineNumber":173,"author":{"gitId":"marclamp"},"content":" ArrayList\u003cTask\u003e tasksToDisplayList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-02-06"},{"lineNumber":174,"author":{"gitId":"marclamp"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":175,"author":{"gitId":"marclamp"},"content":" if (task.hasDate) {","lastModifiedDate":"2024-02-06"},{"lineNumber":176,"author":{"gitId":"marclamp"},"content":" if(task.isWithinDate(today)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":177,"author":{"gitId":"marclamp"},"content":" tasksToDisplayList.add(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":178,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":179,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":180,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":181,"author":{"gitId":"marclamp"},"content":" listTasks(tasksToDisplayList);","lastModifiedDate":"2024-02-06"},{"lineNumber":182,"author":{"gitId":"marclamp"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":183,"author":{"gitId":"marclamp"},"content":" case \"help\":","lastModifiedDate":"2024-01-26"},{"lineNumber":184,"author":{"gitId":"marclamp"},"content":" String helpMessage \u003d \"Hi! Here are the list of commands I recognise: \\n\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":185,"author":{"gitId":"marclamp"},"content":" \"\u0027list\u0027 - lists the tasks registered in the list\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":186,"author":{"gitId":"marclamp"},"content":" \"\u0027todo\u0027 - adds an item that has no due date\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":187,"author":{"gitId":"marclamp"},"content":" \"\u0027deadline\u0027 - adds an item with a due date\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":188,"author":{"gitId":"marclamp"},"content":" \"\u0027event\u0027 - adds an item that has a duration\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":189,"author":{"gitId":"marclamp"},"content":" \"\u0027mark\u0027 - marks the task as completed\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":190,"author":{"gitId":"marclamp"},"content":" \"\u0027unmark\u0027 - marks the task as not completed\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":191,"author":{"gitId":"marclamp"},"content":" \"\u0027help\u0027 - opens the list of commands available\\n\" +","lastModifiedDate":"2024-01-26"},{"lineNumber":192,"author":{"gitId":"marclamp"},"content":" \"\u0027bye\u0027 - exits the chatbot\";","lastModifiedDate":"2024-01-26"},{"lineNumber":193,"author":{"gitId":"marclamp"},"content":" echo(helpMessage);","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"marclamp"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":195,"author":{"gitId":"marclamp"},"content":" default:","lastModifiedDate":"2024-01-26"},{"lineNumber":196,"author":{"gitId":"marclamp"},"content":" String unrecognised \u003d \"Oops, I have no idea what that means. \" +","lastModifiedDate":"2024-01-26"},{"lineNumber":197,"author":{"gitId":"marclamp"},"content":" \"Use \u0027help\u0027 for a list of commands I recognise.\";","lastModifiedDate":"2024-01-26"},{"lineNumber":198,"author":{"gitId":"marclamp"},"content":" echo(unrecognised);","lastModifiedDate":"2024-01-26"},{"lineNumber":199,"author":{"gitId":"marclamp"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":200,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":201,"author":{"gitId":"marclamp"},"content":" printHorizontalLine();","lastModifiedDate":"2024-01-30"},{"lineNumber":202,"author":{"gitId":"marclamp"},"content":" return edited;","lastModifiedDate":"2024-02-06"},{"lineNumber":203,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":204,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":205,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":206,"author":{"gitId":"marclamp"},"content":" * Adds the specified task (in the argument) to the","lastModifiedDate":"2024-02-02"},{"lineNumber":207,"author":{"gitId":"marclamp"},"content":" * static \u003ccode\u003eArrayList\u003c/code\u003e to be tracked by the chatbot.","lastModifiedDate":"2024-02-06"},{"lineNumber":208,"author":{"gitId":"marclamp"},"content":" * @param task \u003ccode\u003eTask\u003c/code\u003e object containing the specified task","lastModifiedDate":"2024-02-06"},{"lineNumber":209,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":210,"author":{"gitId":"marclamp"},"content":" public static void addTask(Task task) {","lastModifiedDate":"2024-02-06"},{"lineNumber":211,"author":{"gitId":"marclamp"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":212,"author":{"gitId":"marclamp"},"content":" echo(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-26"},{"lineNumber":213,"author":{"gitId":"marclamp"},"content":" echo(task.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":214,"author":{"gitId":"marclamp"},"content":" echo(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":215,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":216,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":217,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":218,"author":{"gitId":"marclamp"},"content":" * Deletes the task at the specified index,","lastModifiedDate":"2024-02-02"},{"lineNumber":219,"author":{"gitId":"marclamp"},"content":" * then shifts all the tasks in the index behind it up by 1.","lastModifiedDate":"2024-02-02"},{"lineNumber":220,"author":{"gitId":"marclamp"},"content":" * @param index \u003ccode\u003eInteger\u003c/code\u003e specifying the number of the task to be deleted","lastModifiedDate":"2024-02-06"},{"lineNumber":221,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":222,"author":{"gitId":"marclamp"},"content":" public static void deleteTask(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":223,"author":{"gitId":"marclamp"},"content":" Task task \u003d tasks.remove(index);","lastModifiedDate":"2024-02-06"},{"lineNumber":224,"author":{"gitId":"marclamp"},"content":" echo(\"Got it. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-26"},{"lineNumber":225,"author":{"gitId":"marclamp"},"content":" echo(task.toString());","lastModifiedDate":"2024-01-26"},{"lineNumber":226,"author":{"gitId":"marclamp"},"content":" echo(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":227,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":228,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":229,"author":{"gitId":"marclamp"},"content":" public static void listTasks(List\u003cTask\u003e list) {","lastModifiedDate":"2024-02-06"},{"lineNumber":230,"author":{"gitId":"marclamp"},"content":" int i \u003d 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":231,"author":{"gitId":"marclamp"},"content":" for (Task each_task : list) {","lastModifiedDate":"2024-02-06"},{"lineNumber":232,"author":{"gitId":"marclamp"},"content":" echo(i++ + \". \" + each_task);","lastModifiedDate":"2024-02-06"},{"lineNumber":233,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":234,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":235,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":236,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":237,"author":{"gitId":"marclamp"},"content":" * Gets the path of the file that stores the list of tasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":238,"author":{"gitId":"marclamp"},"content":" * Creates the directory if it is not found.","lastModifiedDate":"2024-02-02"},{"lineNumber":239,"author":{"gitId":"marclamp"},"content":" * Creates the file if it does not exist.","lastModifiedDate":"2024-02-02"},{"lineNumber":240,"author":{"gitId":"marclamp"},"content":" * @return \u003ccode\u003ePath\u003c/code\u003e of the file","lastModifiedDate":"2024-02-02"},{"lineNumber":241,"author":{"gitId":"marclamp"},"content":" * @throws IOException if there are any input/output errors","lastModifiedDate":"2024-02-02"},{"lineNumber":242,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":243,"author":{"gitId":"marclamp"},"content":" public static Path getHistoryFilePath() throws IOException {","lastModifiedDate":"2024-02-02"},{"lineNumber":244,"author":{"gitId":"marclamp"},"content":" Path chatbotDataFilePath \u003d Paths.get(CHATBOT_PATH_NAME);","lastModifiedDate":"2024-02-02"},{"lineNumber":245,"author":{"gitId":"marclamp"},"content":" if (!Files.exists(chatbotDataFilePath)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":246,"author":{"gitId":"marclamp"},"content":" Files.createDirectory(chatbotDataFilePath);","lastModifiedDate":"2024-02-02"},{"lineNumber":247,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":248,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":249,"author":{"gitId":"marclamp"},"content":" Path chatbotFilePath \u003d chatbotDataFilePath.resolve(CHATBOT_FILE_NAME);","lastModifiedDate":"2024-02-02"},{"lineNumber":250,"author":{"gitId":"marclamp"},"content":" if (!Files.exists(chatbotFilePath)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":251,"author":{"gitId":"marclamp"},"content":" Files.createFile(chatbotFilePath);","lastModifiedDate":"2024-02-02"},{"lineNumber":252,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":253,"author":{"gitId":"marclamp"},"content":" return chatbotFilePath;","lastModifiedDate":"2024-02-02"},{"lineNumber":254,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":255,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":256,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":257,"author":{"gitId":"marclamp"},"content":" * Loads the contents of the file and inputs it into the listOfTasks.","lastModifiedDate":"2024-02-02"},{"lineNumber":258,"author":{"gitId":"marclamp"},"content":" * @return An \u003ccode\u003eArrayList\u003c/code\u003e of \u003ccode\u003eTask\u003c/code\u003e objects.","lastModifiedDate":"2024-02-02"},{"lineNumber":259,"author":{"gitId":"marclamp"},"content":" * @throws IOException if there are any input/output errors.","lastModifiedDate":"2024-02-02"},{"lineNumber":260,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":261,"author":{"gitId":"marclamp"},"content":" public static ArrayList\u003cTask\u003e loadFromFile() throws IOException {","lastModifiedDate":"2024-02-02"},{"lineNumber":262,"author":{"gitId":"marclamp"},"content":" Path path \u003d getHistoryFilePath();","lastModifiedDate":"2024-02-02"},{"lineNumber":263,"author":{"gitId":"marclamp"},"content":" ArrayList\u003cTask\u003e newList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":264,"author":{"gitId":"marclamp"},"content":" try (BufferedReader reader \u003d Files.newBufferedReader(path)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":265,"author":{"gitId":"marclamp"},"content":" String str;","lastModifiedDate":"2024-02-02"},{"lineNumber":266,"author":{"gitId":"marclamp"},"content":" while ((str \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-02-02"},{"lineNumber":267,"author":{"gitId":"marclamp"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":268,"author":{"gitId":"marclamp"},"content":" String[] eachLine \u003d str.split(\"\\\\|\");","lastModifiedDate":"2024-02-02"},{"lineNumber":269,"author":{"gitId":"marclamp"},"content":" String taskType \u003d eachLine[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":270,"author":{"gitId":"marclamp"},"content":" boolean isMarked \u003d Boolean.parseBoolean(eachLine[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":271,"author":{"gitId":"marclamp"},"content":" String taskName \u003d eachLine[2];","lastModifiedDate":"2024-02-02"},{"lineNumber":272,"author":{"gitId":"marclamp"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-02"},{"lineNumber":273,"author":{"gitId":"marclamp"},"content":" case \"T\": {","lastModifiedDate":"2024-02-02"},{"lineNumber":274,"author":{"gitId":"marclamp"},"content":" Task task \u003d new TodoTask(taskName, isMarked);","lastModifiedDate":"2024-02-02"},{"lineNumber":275,"author":{"gitId":"marclamp"},"content":" newList.add(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":276,"author":{"gitId":"marclamp"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":277,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":278,"author":{"gitId":"marclamp"},"content":" case \"D\": {","lastModifiedDate":"2024-02-02"},{"lineNumber":279,"author":{"gitId":"marclamp"},"content":" String dueDate \u003d eachLine[3];","lastModifiedDate":"2024-02-02"},{"lineNumber":280,"author":{"gitId":"marclamp"},"content":" Task task \u003d new DeadlineTask(taskName, isMarked, dueDate);","lastModifiedDate":"2024-02-02"},{"lineNumber":281,"author":{"gitId":"marclamp"},"content":" newList.add(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":282,"author":{"gitId":"marclamp"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":283,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":284,"author":{"gitId":"marclamp"},"content":" case \"E\": {","lastModifiedDate":"2024-02-02"},{"lineNumber":285,"author":{"gitId":"marclamp"},"content":" String startDate \u003d eachLine[3];","lastModifiedDate":"2024-02-02"},{"lineNumber":286,"author":{"gitId":"marclamp"},"content":" String endDate \u003d eachLine[4];","lastModifiedDate":"2024-02-02"},{"lineNumber":287,"author":{"gitId":"marclamp"},"content":" Task task \u003d new EventTask(taskName, isMarked, startDate, endDate);","lastModifiedDate":"2024-02-02"},{"lineNumber":288,"author":{"gitId":"marclamp"},"content":" newList.add(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":289,"author":{"gitId":"marclamp"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":290,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":291,"author":{"gitId":"marclamp"},"content":" default:","lastModifiedDate":"2024-02-02"},{"lineNumber":292,"author":{"gitId":"marclamp"},"content":" System.out.println(\"Error in type of task of this line: \");","lastModifiedDate":"2024-02-02"},{"lineNumber":293,"author":{"gitId":"marclamp"},"content":" System.out.println(str);","lastModifiedDate":"2024-02-02"},{"lineNumber":294,"author":{"gitId":"marclamp"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":295,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":296,"author":{"gitId":"marclamp"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":297,"author":{"gitId":"marclamp"},"content":" System.out.println(\"Error in formatting of this line: \");","lastModifiedDate":"2024-02-02"},{"lineNumber":298,"author":{"gitId":"marclamp"},"content":" System.out.println(str);","lastModifiedDate":"2024-02-02"},{"lineNumber":299,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":300,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":301,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":302,"author":{"gitId":"marclamp"},"content":" return newList;","lastModifiedDate":"2024-02-02"},{"lineNumber":303,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":304,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":305,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":306,"author":{"gitId":"marclamp"},"content":" * Saves the entire list of Tasks into the file, by first clearing its contents.","lastModifiedDate":"2024-02-02"},{"lineNumber":307,"author":{"gitId":"marclamp"},"content":" * @throws IOException if there are any input/output errors.","lastModifiedDate":"2024-02-02"},{"lineNumber":308,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":309,"author":{"gitId":"marclamp"},"content":" public static void saveAllToFile() throws IOException {","lastModifiedDate":"2024-02-02"},{"lineNumber":310,"author":{"gitId":"marclamp"},"content":" Path path \u003d getHistoryFilePath();","lastModifiedDate":"2024-02-02"},{"lineNumber":311,"author":{"gitId":"marclamp"},"content":" try (BufferedWriter writer \u003d Files.newBufferedWriter(path, Charset.defaultCharset())) {","lastModifiedDate":"2024-02-02"},{"lineNumber":312,"author":{"gitId":"marclamp"},"content":" writer.write(\"\"); // clears the file","lastModifiedDate":"2024-02-02"},{"lineNumber":313,"author":{"gitId":"marclamp"},"content":" StringBuilder strBdr \u003d new StringBuilder();","lastModifiedDate":"2024-02-02"},{"lineNumber":314,"author":{"gitId":"marclamp"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":315,"author":{"gitId":"marclamp"},"content":" String str \u003d task.stringForSaving();","lastModifiedDate":"2024-02-02"},{"lineNumber":316,"author":{"gitId":"marclamp"},"content":" strBdr.append(str).append(\"\\n\");","lastModifiedDate":"2024-02-02"},{"lineNumber":317,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":318,"author":{"gitId":"marclamp"},"content":" writer.write(strBdr.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":319,"author":{"gitId":"marclamp"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":320,"author":{"gitId":"marclamp"},"content":" // ToDo: Handle IOException","lastModifiedDate":"2024-02-02"},{"lineNumber":321,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":322,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":323,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":324,"author":{"gitId":"marclamp"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-02-02"},{"lineNumber":325,"author":{"gitId":"marclamp"},"content":" greet();","lastModifiedDate":"2024-01-26"},{"lineNumber":326,"author":{"gitId":"marclamp"},"content":" tasks \u003d loadFromFile();","lastModifiedDate":"2024-02-06"},{"lineNumber":327,"author":{"gitId":"marclamp"},"content":" BufferedReader reader \u003d new BufferedReader(","lastModifiedDate":"2024-01-26"},{"lineNumber":328,"author":{"gitId":"marclamp"},"content":" new InputStreamReader((System.in)));","lastModifiedDate":"2024-01-26"},{"lineNumber":329,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":330,"author":{"gitId":"marclamp"},"content":" while (!hasExited) {","lastModifiedDate":"2024-02-02"},{"lineNumber":331,"author":{"gitId":"marclamp"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":332,"author":{"gitId":"marclamp"},"content":" if(parseInput(reader)) {","lastModifiedDate":"2024-02-06"},{"lineNumber":333,"author":{"gitId":"marclamp"},"content":" saveAllToFile();","lastModifiedDate":"2024-02-02"},{"lineNumber":334,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":335,"author":{"gitId":"marclamp"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":336,"author":{"gitId":"marclamp"},"content":" System.out.println(\"IOException occurred.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":337,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":338,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":339,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":340,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"marclamp":340}},{"path":"src/main/java/DateTime.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"import java.time.Year;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"import java.time.YearMonth;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":"import java.time.temporal.ChronoField;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":"import java.time.temporal.TemporalAccessor;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":"public class DateTime {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":" public LocalDateTime dateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":" public Boolean dateOnly;","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":" public Boolean timeOnly;","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" DateTime(String dt) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" this.dateOnly \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":" this.timeOnly \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" this.dateTime \u003d parseDateTime(dt);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":" DateTime(LocalDate date) {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":" this.dateOnly \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":" this.timeOnly \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":" this.dateTime \u003d date.atTime(0, 0);","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"marclamp"},"content":" * Parses the string of date and/or time to a","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"marclamp"},"content":" * \u003ccode\u003eLocalDateTime\u003c/code\u003e object.","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"marclamp"},"content":" * @param str \u003ccode\u003eString\u003c/code\u003e of date and/or time","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"marclamp"},"content":" * @return \u003ccode\u003eLocalDateTime\u003c/code\u003e object","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"marclamp"},"content":" public LocalDateTime parseDateTime(String str) throws DateTimeParseException {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"marclamp"},"content":" DateTimeFormatterBuilder dateTimeFormatterBuilder \u003d","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"marclamp"},"content":" new DateTimeFormatterBuilder()","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/M/uuuu HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-M-uuuu HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d M uuuu HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMM/uuuu HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMM-uuuu HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMM uuuu HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMMM/uuuu HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMMM-uuuu HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMMM uuuu HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/M HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-M HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d M HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMM HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMM HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMM HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMMM HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMMM HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMMM HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/M/uuuu h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-M-uuuu h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d M uuuu h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMM/uuuu h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMM-uuuu h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMM uuuu h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMMM/uuuu h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMMM-uuuu h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMMM uuuu h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/M h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-M h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d M h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMM h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMM h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMM h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMMM h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMMM h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMMM h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/M/uuuu h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-M-uuuu h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d M uuuu h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMM/uuuu h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMM-uuuu h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMM uuuu h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMMM/uuuu h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMMM-uuuu h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMMM uuuu h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/M h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-M h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d M h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMM h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMM h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMM h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMMM h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMMM h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMMM h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/M/uuuu]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-M-uuuu]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d M uuuu]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMM/uuuu]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMM-uuuu]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMM uuuu]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMMM/uuuu]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMMM-uuuu]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMMM uuuu]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/M]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":106,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-M]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":107,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d M]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMM]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMM]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMM]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":111,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMMM]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMMM]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":113,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMMM]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[HH:mm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":118,"author":{"gitId":"marclamp"},"content":" .parseDefaulting(ChronoField.YEAR, Year.now().getValue());","lastModifiedDate":"2024-02-06"},{"lineNumber":119,"author":{"gitId":"marclamp"},"content":" DateTimeFormatter dateTimeFormatter \u003d dateTimeFormatterBuilder.toFormatter();","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"marclamp"},"content":" return getDate(str.trim(), dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":121,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":122,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":123,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":124,"author":{"gitId":"marclamp"},"content":" * Gets the date and/or time from String with default values","lastModifiedDate":"2024-02-06"},{"lineNumber":125,"author":{"gitId":"marclamp"},"content":" * FROM:","lastModifiedDate":"2024-02-06"},{"lineNumber":126,"author":{"gitId":"marclamp"},"content":" * @param s \u003ccode\u003eString\u003c/code\u003e of Date and/or Time","lastModifiedDate":"2024-02-06"},{"lineNumber":127,"author":{"gitId":"marclamp"},"content":" * @param format \u003ccode\u003eDateTimeFormatter\u003c/code\u003e object","lastModifiedDate":"2024-02-06"},{"lineNumber":128,"author":{"gitId":"marclamp"},"content":" * @return \u003ccode\u003eLocalDateTime\u003c/code\u003e object","lastModifiedDate":"2024-02-06"},{"lineNumber":129,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":130,"author":{"gitId":"marclamp"},"content":" private LocalDateTime getDate(String s, DateTimeFormatter format) throws DateTimeParseException {","lastModifiedDate":"2024-02-06"},{"lineNumber":131,"author":{"gitId":"marclamp"},"content":" TemporalAccessor dt \u003d format.parseBest(","lastModifiedDate":"2024-02-06"},{"lineNumber":132,"author":{"gitId":"marclamp"},"content":" s, LocalDateTime::from, LocalDate::from, LocalTime::from, YearMonth::from);","lastModifiedDate":"2024-02-06"},{"lineNumber":133,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":134,"author":{"gitId":"marclamp"},"content":" if (dt instanceof LocalDate) {","lastModifiedDate":"2024-02-06"},{"lineNumber":135,"author":{"gitId":"marclamp"},"content":" dateOnly \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":136,"author":{"gitId":"marclamp"},"content":" return ((LocalDate) dt).atStartOfDay();","lastModifiedDate":"2024-02-06"},{"lineNumber":137,"author":{"gitId":"marclamp"},"content":" } else if (dt instanceof LocalTime) {","lastModifiedDate":"2024-02-06"},{"lineNumber":138,"author":{"gitId":"marclamp"},"content":" return ((LocalTime) dt).atDate(LocalDate.now());","lastModifiedDate":"2024-02-06"},{"lineNumber":139,"author":{"gitId":"marclamp"},"content":" } else if (dt instanceof YearMonth) {","lastModifiedDate":"2024-02-06"},{"lineNumber":140,"author":{"gitId":"marclamp"},"content":" dateOnly \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":141,"author":{"gitId":"marclamp"},"content":" return ((YearMonth) dt).atDay(1).atStartOfDay();","lastModifiedDate":"2024-02-06"},{"lineNumber":142,"author":{"gitId":"marclamp"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":143,"author":{"gitId":"marclamp"},"content":" return LocalDateTime.from(dt);","lastModifiedDate":"2024-02-06"},{"lineNumber":144,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":145,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":146,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":147,"author":{"gitId":"marclamp"},"content":" public Boolean isSameDay(DateTime dt) {","lastModifiedDate":"2024-02-06"},{"lineNumber":148,"author":{"gitId":"marclamp"},"content":" return this.dateTime.toLocalDate().isEqual(dt.dateTime.toLocalDate());","lastModifiedDate":"2024-02-06"},{"lineNumber":149,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":150,"author":{"gitId":"marclamp"},"content":" public Boolean isWithinDate(DateTime dtStart, DateTime dtEnd) {","lastModifiedDate":"2024-02-06"},{"lineNumber":151,"author":{"gitId":"marclamp"},"content":" if (dateTime.toLocalDate().isAfter(dtStart.dateTime.toLocalDate())","lastModifiedDate":"2024-02-06"},{"lineNumber":152,"author":{"gitId":"marclamp"},"content":" \u0026\u0026 dateTime.toLocalDate().isBefore(dtEnd.dateTime.toLocalDate())) {","lastModifiedDate":"2024-02-06"},{"lineNumber":153,"author":{"gitId":"marclamp"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":154,"author":{"gitId":"marclamp"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":155,"author":{"gitId":"marclamp"},"content":" return dateTime.toLocalDate().isEqual(dtStart.dateTime.toLocalDate())","lastModifiedDate":"2024-02-06"},{"lineNumber":156,"author":{"gitId":"marclamp"},"content":" || dateTime.toLocalDate().isEqual(dtEnd.dateTime.toLocalDate());","lastModifiedDate":"2024-02-06"},{"lineNumber":157,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":158,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":159,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":160,"author":{"gitId":"marclamp"},"content":" public String toString() {","lastModifiedDate":"2024-02-06"},{"lineNumber":161,"author":{"gitId":"marclamp"},"content":" if (dateOnly) {","lastModifiedDate":"2024-02-06"},{"lineNumber":162,"author":{"gitId":"marclamp"},"content":" return this.dateTime.format(DateTimeFormatter.ofPattern(\"d/MMM/yyyy\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":163,"author":{"gitId":"marclamp"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":164,"author":{"gitId":"marclamp"},"content":" return this.dateTime.format(DateTimeFormatter.ofPattern(\"d/MMM/yyyy hh:mm a\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":165,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":166,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":167,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"marclamp":167}},{"path":"src/main/java/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":" * Represents a task with a deadline. A \u003ccode\u003eDeadlineTask\u003c/code\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":" * object contains its description or name, represented by a String,","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":" * a boolean indicating whether the task is marked, and","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":" * a String representing the date and/or time of deadline.","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":" public DateTime dateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":" * Basic constructor","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":" * @param taskName name of task to be tracked","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":" public DeadlineTask(String taskName, String date_time) {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":" super(taskName);","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":" this.dateTime \u003d new DateTime(date_time);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":" this.hasDate \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" * Overloaded Constructor with date/time specified","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" * and marked status","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":" * @param taskname name of task to be tracked","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":" * @param dateTime Date and/or Time of deadline","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":" * @param marked status of task (marked or unmarked)","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":" public DeadlineTask(String taskname, Boolean marked, String dateTime) {","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"marclamp"},"content":" super(taskname, marked);","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"marclamp"},"content":" this.dateTime \u003d new DateTime(dateTime);","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"marclamp"},"content":" public Boolean isWithinDate(DateTime dt) {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"marclamp"},"content":" return this.dateTime.isSameDay(dt);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"marclamp"},"content":" public String stringForSaving() {","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"marclamp"},"content":" return \"D|\" + super.stringForSaving() + \"|\" + this.dateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"marclamp"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"marclamp"},"content":" return \"[D]\" + super.toString() +","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"marclamp"},"content":" String.format(\" (by: %s)\", this.dateTime);","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"marclamp":45}},{"path":"src/main/java/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":" * Represents a task which is an event. A \u003ccode\u003eEventTask\u003c/code\u003e","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":" * object contains its description or name, represented by a String,","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":" * a boolean indicating whether the task is marked,","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":" * a String representing the start date and/or time of the event, and","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":" * a String representing the end date and/or time of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":"public class EventTask extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":" public DateTime dateTimeFrom;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":" public DateTime dateTimeTo;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":" * Constructor with event start and end","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":" * date and/or time specified","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":" * @param taskname name of task to be tracked","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":" * @param dateTimeFrom start date and/or time of the event","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":" * @param dateTimeTo end date and/or time of the event","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" public EventTask(String taskname, String dateTimeFrom, String dateTimeTo) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" super(taskname);","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":" this.dateTimeFrom \u003d new DateTime(dateTimeFrom);","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" this.dateTimeTo \u003d new DateTime(dateTimeTo);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" this.hasDate \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":" * Overloaded Constructor with event start and end","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":" * date and/or time specified","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"marclamp"},"content":" * @param taskname name of task to be tracked","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"marclamp"},"content":" * @param isMarked \u003ccode\u003eBoolean\u003c/code\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"marclamp"},"content":" * @param dateTimeFrom start date and/or time of the event","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"marclamp"},"content":" * @param dateTimeTo end date and/or time of the event","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"marclamp"},"content":" public EventTask(String taskname, Boolean isMarked, String dateTimeFrom, String dateTimeTo) {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"marclamp"},"content":" super(taskname,isMarked);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"marclamp"},"content":" this.dateTimeFrom \u003d new DateTime(dateTimeFrom);","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"marclamp"},"content":" this.dateTimeTo \u003d new DateTime(dateTimeTo);","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"marclamp"},"content":" this.hasDate \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"marclamp"},"content":" this.isMarked \u003d isMarked;","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"marclamp"},"content":" public Boolean isWithinDate(DateTime dt) {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"marclamp"},"content":" return dt.isWithinDate(this.dateTimeFrom, this.dateTimeTo);","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"marclamp"},"content":" public String stringForSaving() {","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"marclamp"},"content":" return \"E|\" + super.stringForSaving() + \"|\"","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"marclamp"},"content":" + this.dateTimeFrom + \"|\"","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"marclamp"},"content":" + this.dateTimeTo;","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"marclamp"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"marclamp"},"content":" return \"[D]\" + super.toString()","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"marclamp"},"content":" + String.format(\" (from: %s to: %s)\", this.dateTimeFrom, this.dateTimeTo);","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"marclamp":55}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":" * Represents a task. A \u003ccode\u003eTask\u003c/code\u003e object contains its","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":" * description or name, represented by a String, and a boolean","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":" * indicating whether the task is marked.","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"public class Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":" public String taskName;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":" public boolean isMarked;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":" public boolean hasDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":" * Basic constructor","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":" * @param taskName name of task to be tracked","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":" public Task(String taskName) {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":" this.taskName \u003d taskName.trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":" this.isMarked \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" this.hasDate \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" * Overloaded constructor with marked status","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":" * @param taskName name of task to be tracked","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":" * @param isMarked status of task (marked or unmarked)","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":" public Task(String taskName, Boolean isMarked) {","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"marclamp"},"content":" this.isMarked \u003d isMarked;","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"marclamp"},"content":" * Sets this task as marked, by setting the","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"marclamp"},"content":" * boolean flag to be true.","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"marclamp"},"content":" public void mark() {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"marclamp"},"content":" this.isMarked \u003d true;","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"marclamp"},"content":" * Sets this task as unmarked, by setting the","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"marclamp"},"content":" * boolean flag to be false.","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"marclamp"},"content":" public void unmark() {","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"marclamp"},"content":" this.isMarked \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"marclamp"},"content":" * Returns a formatted string meant for saving into the","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"marclamp"},"content":" * text file.","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"marclamp"},"content":" * @return formatted String, consisting of isMarked status and taskname","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"marclamp"},"content":" public String stringForSaving() {","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"marclamp"},"content":" return this.isMarked + \"|\" + this.taskName;","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"marclamp"},"content":" public Boolean isWithinDate(DateTime dt) {","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"marclamp"},"content":" return false;","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"marclamp"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"marclamp"},"content":" return (this.isMarked ? \"[X] \" : \"[ ] \") + this.taskName;","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"marclamp":62}},{"path":"src/main/java/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":" * Represents a task to be done. A \u003ccode\u003eToDoTask\u003c/code\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":" * object contains its description or name, represented by a String, and","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":" * a boolean indicating whether the task is marked.","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"public class TodoTask extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":" * Basic Constructor","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":" * @param taskName name of task to be tracked","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":" public TodoTask(String taskName) {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":" super(taskName);","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":" * Overloaded Constructor with isMarked status","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" * @param taskname name of task to be tracked","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" * @param isMarked status of task (marked or unmarked)","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" public TodoTask(String taskname, Boolean isMarked) {","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" super(taskname, isMarked);","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":" public String stringForSaving() {","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":" return \"T|\" + super.stringForSaving();","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"marclamp"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"marclamp"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"marclamp":32}},{"path":"text-ui-test/data/history.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"T|true|read book","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"D|true|return book|6/Feb/2024","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"E|false|project meeting|8/Feb/2024 02:00 PM|8/Feb/2024 04:00 PM","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"T|true|join sports club","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"E|false|lunch plans|6/Feb/2024 02:00 PM|6/Feb/2024 04:00 PM","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"T|false|read book","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"D|false|return book|6/Feb/2024","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":"E|false|project meeting|8/Feb/2024 02:00 PM|8/Feb/2024 04:00 PM","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":"T|false|join sports club","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":"T|false|borrow book","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":"D|false|finish this|6/Feb/2024","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":"E|false|lunch plans|6/Feb/2024 02:00 PM|6/Feb/2024 04:00 PM","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"marclamp":12}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"todo read book","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"deadline return book /by 6 Feb","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"event project meeting /from 8 Feb 2 PM /to 8 Feb 4 PM","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"todo join sports club","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"todo borrow book","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"mark 2","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":"mark 4","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":"delete 5","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":"deadline finish this /by 6 Feb","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":"event lunch plans /from 2 PM /to 4 PM","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":"list","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":"today","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":"bye","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"marclamp":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":"-"},"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":"marclamp"},"content":"java -classpath ..\\bin Chaterpillar \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-26"},{"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":{"marclamp":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"# Chaterpillar project template","lastModifiedDate":"2024-01-26"},{"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":"marclamp"},"content":"3. After that, locate the `src/main/java/Chaterpillar.java` file, right-click it, and choose `Run Chaterpillar.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-26"},{"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":{"marclamp":2,"-":22}},{"path":"src/main/java/Chaterpillar.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"import exceptions.ChaterpillarException;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"import commands.Command;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import parser.Parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"import storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":" * Main class for Chaterpillar chatbot.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":"public class Chaterpillar {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":" public Storage storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":" public TaskList tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":" public Ui ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" public Chaterpillar() {","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" storage \u003d new Storage();","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":" public void run() {","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":" ui.greet();","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":" boolean hasExited \u003d false;","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"marclamp"},"content":" while (!hasExited) {","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"marclamp"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"marclamp"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"marclamp"},"content":" Command command \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"marclamp"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"marclamp"},"content":" hasExited \u003d command.hasExited();","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"marclamp"},"content":" } catch (ChaterpillarException | IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"marclamp"},"content":" ui.echo(e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"marclamp"},"content":" } finally {","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"marclamp"},"content":" ui.printHorizontalLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"marclamp"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"marclamp"},"content":" new Chaterpillar().run();","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"marclamp":46}},{"path":"src/main/java/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import exceptions.ChaterpillarException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"import storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":"public abstract class Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":" public abstract void execute(TaskList task, Ui ui, Storage storage) throws ChaterpillarException, IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":" public boolean hasExited() {","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":" return false;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"marclamp":15}},{"path":"src/main/java/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import exceptions.ChaterpillarException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"import storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":" private final int index;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws ChaterpillarException, IOException {","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" tasks.deleteTaskAtIndex(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":" throw new ChaterpillarException(","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" \"Sorry, there is no number detected.\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" \"The correct way to use the command is: delete number\");","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":" throw new ChaterpillarException(","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":" \"Sorry, the item does not exist in the list.\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":" \"The correct way to use the command is: delete number\");","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"marclamp"},"content":" storage.saveAllToFile(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"marclamp":30}},{"path":"src/main/java/commands/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"import storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":" ui.echo(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":" public boolean hasExited() {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":" return true;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"marclamp":13}},{"path":"src/main/java/commands/HelpCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"import storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":" String helpMessage \u003d","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":" \"Hi! Here are the list of commands I recognise: \\n\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":" \"\u0027list\u0027 - lists the tasks registered in the list\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":" \"\u0027today\u0027 - lists the tasks for today\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":" \"\u0027todo\u0027 - adds an item that has no due date\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":" \"\u0027deadline\u0027 - adds an item with a due date\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":" \"\u0027event\u0027 - adds an item that has a duration\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":" \"\u0027mark\u0027 - marks the task as completed\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":" \"\u0027unmark\u0027 - marks the task as not completed\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":" \"\u0027help\u0027 - opens the list of commands available\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" \"\u0027bye\u0027 - exits the chatbot\";","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" ui.echo(helpMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"marclamp":21}},{"path":"src/main/java/commands/ListAllCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"import storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"public class ListAllCommand extends Command{","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":" new ListCommand(tasks).execute(tasks, ui, storage);","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"marclamp":11}},{"path":"src/main/java/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"import storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":" private final TaskList tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":" public ListCommand(TaskList tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":" ui.echo(\"Here are the tasks in your list: \");","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":" int i \u003d 1;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":" for (Task eachTask : this.tasks.getTasks()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":" ui.echo(i++ + \". \" + eachTask);","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"marclamp":20}},{"path":"src/main/java/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"import exceptions.ChaterpillarException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":"import storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":" private final int index;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws ChaterpillarException, IOException {","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" if (index \u003e tasks.size()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" throw new ChaterpillarException(","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":" \"Sorry! That item does not exist in the list.\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" \"You currently have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":" ui.echo(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":" Task currTask \u003d tasks.get(index-1);","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":" currTask.mark();","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":" ui.echo(currTask.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":" storage.saveAllToFile(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"marclamp":30}},{"path":"src/main/java/commands/TaskCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"import exceptions.ChaterpillarException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":"import storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":"public class TaskCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":" private final Task task;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":" public TaskCommand(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":" this.task \u003d task;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws ChaterpillarException, IOException {","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":" tasks.addTask(this.task);","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" ui.echo(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" ui.echo(task.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":" ui.echo(\"Now you have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" storage.saveAllToFile(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"marclamp":23}},{"path":"src/main/java/commands/TasksByDateCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import datetime.DateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"import exceptions.ChaterpillarException;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"import storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":"public class TasksByDateCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":" DateTime date;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":" public TasksByDateCommand(String date) throws ChaterpillarException {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":" this.date \u003d new DateTime(date);","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":" public TasksByDateCommand(DateTime date) {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":" this.date \u003d date;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws ChaterpillarException {","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" throw new ChaterpillarException(","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":" \"Congrats! You have no tasks for today. :)\");","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" ui.echo(String.format(\"Here are the tasks on %s:\", this.date));","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":" TaskList tasksNew \u003d tasks.getTasksOnDate(this.date);","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":" new ListCommand(tasksNew).execute(tasks, ui, storage);","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"marclamp":27}},{"path":"src/main/java/commands/TasksTodayCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"import datetime.DateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"import exceptions.ChaterpillarException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"public class TasksTodayCommand extends TasksByDateCommand {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":" public TasksTodayCommand() throws ChaterpillarException {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":" super(new DateTime(LocalDate.now()));","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"marclamp":11}},{"path":"src/main/java/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"import exceptions.ChaterpillarException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"import tasks.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":"import storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":" private final int index;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws ChaterpillarException, IOException {","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" if (index \u003e tasks.size()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" throw new ChaterpillarException(","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":" \"Sorry! That item does not exist in the list.\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" \"You currently have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":" ui.echo(\"Ok, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":" Task currTask \u003d tasks.get(index - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":" currTask.unmark();","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":" ui.echo(currTask.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":" storage.saveAllToFile(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"marclamp":30}},{"path":"src/main/java/commands/UnrecognisedCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import tasks.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"import ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"import storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"public class UnrecognisedCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":" String unrecognised \u003d","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":" \"Oops, I have no idea what that means. \" +","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":" \"Use \u0027help\u0027 for a list of commands I recognise.\";","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":" ui.echo(unrecognised);","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"marclamp":14}},{"path":"src/main/java/datetime/DateTime.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package datetime;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import exceptions.ChaterpillarException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":"import java.time.Year;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":"import java.time.YearMonth;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":"import java.time.format.DateTimeFormatterBuilder;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":"import java.time.temporal.ChronoField;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":"import java.time.temporal.TemporalAccessor;","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":"public class DateTime {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" public LocalDateTime dateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":" public Boolean dateOnly;","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" public Boolean timeOnly;","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" public DateTime(String dt) throws ChaterpillarException {","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":" this.dateOnly \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":" this.timeOnly \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":" this.dateTime \u003d parseDateTime(dt);","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"marclamp"},"content":" public DateTime(LocalDate date) throws ChaterpillarException {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"marclamp"},"content":" this.dateOnly \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"marclamp"},"content":" this.timeOnly \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"marclamp"},"content":" this.dateTime \u003d date.atTime(0, 0);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"marclamp"},"content":" * Parses the string of date and/or time to a","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"marclamp"},"content":" * \u003ccode\u003eLocalDateTime\u003c/code\u003e object.","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"marclamp"},"content":" * @param str \u003ccode\u003eString\u003c/code\u003e of date and/or time","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"marclamp"},"content":" * @return \u003ccode\u003eLocalDateTime\u003c/code\u003e object","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"marclamp"},"content":" public LocalDateTime parseDateTime(String str) throws ChaterpillarException {","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"marclamp"},"content":" DateTimeFormatterBuilder dateTimeFormatterBuilder \u003d","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"marclamp"},"content":" new DateTimeFormatterBuilder()","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/M/uuuu HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-M-uuuu HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d M uuuu HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMM/uuuu HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMM-uuuu HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMM uuuu HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMMM/uuuu HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMMM-uuuu HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMMM uuuu HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/M HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-M HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d M HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMM HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMM HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMM HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMMM HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMMM HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMMM HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/M/uuuu h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-M-uuuu h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d M uuuu h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMM/uuuu h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMM-uuuu h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMM uuuu h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMMM/uuuu h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMMM-uuuu h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMMM uuuu h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/M h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-M h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d M h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMM h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMM h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMM h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMMM h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMMM h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMMM h:mm a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/M/uuuu h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-M-uuuu h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d M uuuu h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMM/uuuu h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMM-uuuu h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMM uuuu h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMMM/uuuu h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMMM-uuuu h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMMM uuuu h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/M h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-M h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d M h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMM h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMM h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMM h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMMM h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMMM h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMMM h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/M/uuuu]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-M-uuuu]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d M uuuu]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMM/uuuu]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMM-uuuu]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMM uuuu]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":106,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMMM/uuuu]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":107,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMMM-uuuu]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMMM uuuu]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/M]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-M]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":111,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d M]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMM]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":113,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMM]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMM]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d/MMMM]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d-MMMM]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[d MMMM]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":118,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":119,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[HHmm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[HH:mm]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":121,"author":{"gitId":"marclamp"},"content":" .appendPattern(\"[h a]\")","lastModifiedDate":"2024-02-06"},{"lineNumber":122,"author":{"gitId":"marclamp"},"content":" .parseDefaulting(ChronoField.YEAR, Year.now().getValue());","lastModifiedDate":"2024-02-06"},{"lineNumber":123,"author":{"gitId":"marclamp"},"content":" DateTimeFormatter dateTimeFormatter \u003d dateTimeFormatterBuilder.toFormatter();","lastModifiedDate":"2024-02-06"},{"lineNumber":124,"author":{"gitId":"marclamp"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":125,"author":{"gitId":"marclamp"},"content":" return getDate(str.trim(), dateTimeFormatter);","lastModifiedDate":"2024-02-06"},{"lineNumber":126,"author":{"gitId":"marclamp"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":127,"author":{"gitId":"marclamp"},"content":" throw new ChaterpillarException(","lastModifiedDate":"2024-02-07"},{"lineNumber":128,"author":{"gitId":"marclamp"},"content":" \"Invalid date format! I accept quite a number of common date format, \" +","lastModifiedDate":"2024-02-07"},{"lineNumber":129,"author":{"gitId":"marclamp"},"content":" \"but here is one you can use: DD/MM/YYY HH:MM\");","lastModifiedDate":"2024-02-07"},{"lineNumber":130,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":131,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":132,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":133,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":134,"author":{"gitId":"marclamp"},"content":" * Gets the date and/or time from String with default values","lastModifiedDate":"2024-02-06"},{"lineNumber":135,"author":{"gitId":"marclamp"},"content":" * FROM:","lastModifiedDate":"2024-02-06"},{"lineNumber":136,"author":{"gitId":"marclamp"},"content":" * @param s \u003ccode\u003eString\u003c/code\u003e of Date and/or Time","lastModifiedDate":"2024-02-06"},{"lineNumber":137,"author":{"gitId":"marclamp"},"content":" * @param format \u003ccode\u003eDateTimeFormatter\u003c/code\u003e object","lastModifiedDate":"2024-02-06"},{"lineNumber":138,"author":{"gitId":"marclamp"},"content":" * @return \u003ccode\u003eLocalDateTime\u003c/code\u003e object","lastModifiedDate":"2024-02-06"},{"lineNumber":139,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":140,"author":{"gitId":"marclamp"},"content":" private LocalDateTime getDate(String s, DateTimeFormatter format) throws DateTimeParseException {","lastModifiedDate":"2024-02-06"},{"lineNumber":141,"author":{"gitId":"marclamp"},"content":" TemporalAccessor dt \u003d format.parseBest(","lastModifiedDate":"2024-02-06"},{"lineNumber":142,"author":{"gitId":"marclamp"},"content":" s, LocalDateTime::from, LocalDate::from, LocalTime::from, YearMonth::from);","lastModifiedDate":"2024-02-06"},{"lineNumber":143,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":144,"author":{"gitId":"marclamp"},"content":" if (dt instanceof LocalDate) {","lastModifiedDate":"2024-02-06"},{"lineNumber":145,"author":{"gitId":"marclamp"},"content":" dateOnly \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":146,"author":{"gitId":"marclamp"},"content":" return ((LocalDate) dt).atStartOfDay();","lastModifiedDate":"2024-02-06"},{"lineNumber":147,"author":{"gitId":"marclamp"},"content":" } else if (dt instanceof LocalTime) {","lastModifiedDate":"2024-02-06"},{"lineNumber":148,"author":{"gitId":"marclamp"},"content":" return ((LocalTime) dt).atDate(LocalDate.now());","lastModifiedDate":"2024-02-06"},{"lineNumber":149,"author":{"gitId":"marclamp"},"content":" } else if (dt instanceof YearMonth) {","lastModifiedDate":"2024-02-06"},{"lineNumber":150,"author":{"gitId":"marclamp"},"content":" dateOnly \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":151,"author":{"gitId":"marclamp"},"content":" return ((YearMonth) dt).atDay(1).atStartOfDay();","lastModifiedDate":"2024-02-06"},{"lineNumber":152,"author":{"gitId":"marclamp"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":153,"author":{"gitId":"marclamp"},"content":" return LocalDateTime.from(dt);","lastModifiedDate":"2024-02-06"},{"lineNumber":154,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":155,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":156,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":157,"author":{"gitId":"marclamp"},"content":" public boolean isSameDay(DateTime dt) {","lastModifiedDate":"2024-02-07"},{"lineNumber":158,"author":{"gitId":"marclamp"},"content":" return this.dateTime.toLocalDate().isEqual(dt.dateTime.toLocalDate());","lastModifiedDate":"2024-02-06"},{"lineNumber":159,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":160,"author":{"gitId":"marclamp"},"content":" public boolean isWithinDate(DateTime dtStart, DateTime dtEnd) {","lastModifiedDate":"2024-02-07"},{"lineNumber":161,"author":{"gitId":"marclamp"},"content":" if (dateTime.toLocalDate().isAfter(dtStart.dateTime.toLocalDate())","lastModifiedDate":"2024-02-06"},{"lineNumber":162,"author":{"gitId":"marclamp"},"content":" \u0026\u0026 dateTime.toLocalDate().isBefore(dtEnd.dateTime.toLocalDate())) {","lastModifiedDate":"2024-02-06"},{"lineNumber":163,"author":{"gitId":"marclamp"},"content":" return true;","lastModifiedDate":"2024-02-06"},{"lineNumber":164,"author":{"gitId":"marclamp"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":165,"author":{"gitId":"marclamp"},"content":" return dateTime.toLocalDate().isEqual(dtStart.dateTime.toLocalDate())","lastModifiedDate":"2024-02-06"},{"lineNumber":166,"author":{"gitId":"marclamp"},"content":" || dateTime.toLocalDate().isEqual(dtEnd.dateTime.toLocalDate());","lastModifiedDate":"2024-02-06"},{"lineNumber":167,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":168,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":169,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":170,"author":{"gitId":"marclamp"},"content":" public String toString() {","lastModifiedDate":"2024-02-06"},{"lineNumber":171,"author":{"gitId":"marclamp"},"content":" if (dateOnly) {","lastModifiedDate":"2024-02-06"},{"lineNumber":172,"author":{"gitId":"marclamp"},"content":" return this.dateTime.format(DateTimeFormatter.ofPattern(\"d/MMM/yyyy\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":173,"author":{"gitId":"marclamp"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":174,"author":{"gitId":"marclamp"},"content":" return this.dateTime.format(DateTimeFormatter.ofPattern(\"d/MMM/yyyy hh:mm a\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":175,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":176,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":177,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"marclamp":177}},{"path":"src/main/java/exceptions/ChaterpillarException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"public class ChaterpillarException extends Exception {","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":" public ChaterpillarException(String message) {","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":" super(message);","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"marclamp":7}},{"path":"src/main/java/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"import exceptions.ChaterpillarException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"import tasks.*;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"import commands.*;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":"public class Parser {","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":" public static Command parse(String input) throws ChaterpillarException {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":" String[] inputSplit \u003d input.split(\" \");","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":" int num;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":" String name;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":" String[] temp;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":" Task currTask;","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" switch(inputSplit[0]) {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" case \"list\":","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":" return new ListAllCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" case \"mark\":","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" num \u003d Integer.parseInt(inputSplit[1]);","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":" return new MarkCommand(num);","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":" num \u003d Integer.parseInt(inputSplit[1]);","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":" return new UnmarkCommand(num);","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":" case \"todo\":","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"marclamp"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"marclamp"},"content":" name \u003d input.substring(5);","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"marclamp"},"content":" currTask \u003d new TodoTask(name);","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"marclamp"},"content":" return new TaskCommand(currTask);","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"marclamp"},"content":" } catch (StringIndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"marclamp"},"content":" throw new ChaterpillarException(","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"marclamp"},"content":" \"Sorry, the name of the task todo cannot be empty.\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"marclamp"},"content":" \"The way to use the command is as such: todo taskname\");","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"marclamp"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"marclamp"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"marclamp"},"content":" temp \u003d input.split(\"/\");","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"marclamp"},"content":" name \u003d temp[0].substring(9);","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"marclamp"},"content":" String date \u003d temp[1].substring(3);","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"marclamp"},"content":" currTask \u003d new DeadlineTask(name, date);","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"marclamp"},"content":" return new TaskCommand(currTask);","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"marclamp"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"marclamp"},"content":" throw new ChaterpillarException(\"Sorry, this command is in the wrong format.\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"marclamp"},"content":" \"The way to use the command is: deadline taskname /by date_and_time\");","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"marclamp"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"marclamp"},"content":" throw new ChaterpillarException(","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"marclamp"},"content":" \"Unable to add task, wrong date/time format!\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"marclamp"},"content":" \"Suggested format: DD/MM/YYY HH:MM\");","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"marclamp"},"content":" case \"event\":","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"marclamp"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"marclamp"},"content":" temp \u003d input.split(\"/\");","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"marclamp"},"content":" name \u003d temp[0].substring(6);","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"marclamp"},"content":" String date1 \u003d temp[1].substring(5);","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"marclamp"},"content":" String date2 \u003d temp[2].substring(3);","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"marclamp"},"content":" currTask \u003d new EventTask(name, date1, date2);","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"marclamp"},"content":" return new TaskCommand(currTask);","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"marclamp"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"marclamp"},"content":" throw new ChaterpillarException(\"Sorry, this command is in the wrong format.\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"marclamp"},"content":" \"The way to use the command is: event taskname /from date_and_time /to date_and_time\");","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"marclamp"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"marclamp"},"content":" throw new ChaterpillarException(","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"marclamp"},"content":" \"Unable to add task, wrong date/time format!\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"marclamp"},"content":" \"Suggested format: DD/MM/YYY HH:MM\");","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"marclamp"},"content":" case \"delete\":","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"marclamp"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"marclamp"},"content":" temp \u003d input.split(\" \");","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"marclamp"},"content":" int index \u003d Integer.parseInt(temp[1])-1;","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"marclamp"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"marclamp"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"marclamp"},"content":" throw new ChaterpillarException(","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"marclamp"},"content":" \"Sorry, there is no number detected.\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"marclamp"},"content":" \"The correct way to use the command is: delete number\");","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"marclamp"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"marclamp"},"content":" throw new ChaterpillarException(","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"marclamp"},"content":" \"Sorry, the format for this command is wrong.\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"marclamp"},"content":" \"The correct way to use the command is: delete number\");","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"marclamp"},"content":" case \"today\":","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"marclamp"},"content":" return new TasksTodayCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"marclamp"},"content":" case \"help\":","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"marclamp"},"content":" return new HelpCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"marclamp"},"content":" case \"bye\":","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"marclamp"},"content":" return new ExitCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"marclamp"},"content":" default:","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"marclamp"},"content":" return new UnrecognisedCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"marclamp":92}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import exceptions.ChaterpillarException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"import tasks.*;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":"import java.nio.charset.Charset;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":"public class Storage {","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" public static final String CHATBOT_PATH_NAME \u003d \"./data\";","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" public static final String CHATBOT_FILE_NAME \u003d \"history.txt\";","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" * Gets the path of the file that stores the list of tasks.","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":" * Creates the directory if it is not found.","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":" * Creates the file if it does not exist.","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":" * @return \u003ccode\u003ePath\u003c/code\u003e of the file","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":" * @throws IOException if there are any input/output errors","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"marclamp"},"content":" public static Path getHistoryFilePath() throws IOException {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"marclamp"},"content":" Path chatbotDataFilePath \u003d Paths.get(CHATBOT_PATH_NAME);","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"marclamp"},"content":" if (!Files.exists(chatbotDataFilePath)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"marclamp"},"content":" Files.createDirectory(chatbotDataFilePath);","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"marclamp"},"content":" Path chatbotFilePath \u003d chatbotDataFilePath.resolve(CHATBOT_FILE_NAME);","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"marclamp"},"content":" if (!Files.exists(chatbotFilePath)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"marclamp"},"content":" Files.createFile(chatbotFilePath);","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"marclamp"},"content":" return chatbotFilePath;","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"marclamp"},"content":" * Loads the contents of the file and inputs it into the listOfTasks.","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"marclamp"},"content":" * @return An \u003ccode\u003eArrayList\u003c/code\u003e of \u003ccode\u003etasks.Task\u003c/code\u003e objects.","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"marclamp"},"content":" * @throws IOException if there are any input/output errors.","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"marclamp"},"content":" public TaskList loadFromFile() throws ChaterpillarException, IOException {","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"marclamp"},"content":" Path path \u003d getHistoryFilePath();","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"marclamp"},"content":" ArrayList\u003cTask\u003e newList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"marclamp"},"content":" try (BufferedReader reader \u003d Files.newBufferedReader(path)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"marclamp"},"content":" String str;","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"marclamp"},"content":" while ((str \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"marclamp"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"marclamp"},"content":" String[] eachLine \u003d str.split(\"\\\\|\");","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"marclamp"},"content":" String taskType \u003d eachLine[0];","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"marclamp"},"content":" boolean isMarked \u003d Boolean.parseBoolean(eachLine[1]);","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"marclamp"},"content":" String taskName \u003d eachLine[2];","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"marclamp"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"marclamp"},"content":" case \"T\": {","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"marclamp"},"content":" Task task \u003d new TodoTask(taskName, isMarked);","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"marclamp"},"content":" newList.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"marclamp"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"marclamp"},"content":" case \"D\": {","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"marclamp"},"content":" String dueDate \u003d eachLine[3];","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"marclamp"},"content":" Task task \u003d new DeadlineTask(taskName, isMarked, dueDate);","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"marclamp"},"content":" newList.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"marclamp"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"marclamp"},"content":" case \"E\": {","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"marclamp"},"content":" String startDate \u003d eachLine[3];","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"marclamp"},"content":" String endDate \u003d eachLine[4];","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"marclamp"},"content":" Task task \u003d new EventTask(taskName, isMarked, startDate, endDate);","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"marclamp"},"content":" newList.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"marclamp"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"marclamp"},"content":" default:","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"marclamp"},"content":" throw new ChaterpillarException(","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"marclamp"},"content":" \"Error in type of task of this line: \\n\" + str);","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"marclamp"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"marclamp"},"content":" throw new ChaterpillarException(\"Error in formatting of this line: \\n\" + str);","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"marclamp"},"content":" return new TaskList(newList);","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"marclamp"},"content":" * Saves the entire list of Tasks into the file, by first clearing its contents.","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"marclamp"},"content":" * @throws IOException if there are any input/output errors.","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"marclamp"},"content":" public void saveAllToFile(TaskList tasks) throws ChaterpillarException, IOException {","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"marclamp"},"content":" Path path \u003d getHistoryFilePath();","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"marclamp"},"content":" try (BufferedWriter writer \u003d Files.newBufferedWriter(path, Charset.defaultCharset())) {","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"marclamp"},"content":" writer.write(\"\"); // clears the file","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"marclamp"},"content":" StringBuilder strBdr \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"marclamp"},"content":" for (Task task : tasks.getTasks()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"marclamp"},"content":" String str \u003d task.stringForSaving();","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"marclamp"},"content":" strBdr.append(str).append(\"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"marclamp"},"content":" writer.write(strBdr.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":102,"author":{"gitId":"marclamp"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"marclamp"},"content":" throw new ChaterpillarException(\"Error in writing to the file.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":106,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"marclamp":106}},{"path":"src/main/java/tasks/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import datetime.DateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"import exceptions.ChaterpillarException;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":" * Represents a task with a deadline. A \u003ccode\u003etasks.DeadlineTask\u003c/code\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":" * object contains its description or name, represented by a String,","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":" * a boolean indicating whether the task is marked, and","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":" * a String representing the date and/or time of deadline.","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":"public class DeadlineTask extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":" public DateTime dateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":" * Basic constructor","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":" * @param taskName name of task to be tracked","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" public DeadlineTask(String taskName, String date_time) throws ChaterpillarException {","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":" super(taskName);","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" this.dateTime \u003d new DateTime(date_time);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" this.hasDate \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":" * Overloaded Constructor with date/time specified","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":" * and marked status","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"marclamp"},"content":" * @param taskname name of task to be tracked","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"marclamp"},"content":" * @param dateTime Date and/or Time of deadline","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"marclamp"},"content":" * @param marked status of task (marked or unmarked)","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"marclamp"},"content":" public DeadlineTask(String taskname, Boolean marked, String dateTime) throws ChaterpillarException {","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"marclamp"},"content":" super(taskname, marked);","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"marclamp"},"content":" this.dateTime \u003d new DateTime(dateTime);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"marclamp"},"content":" public Boolean isWithinDate(DateTime dt) {","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"marclamp"},"content":" return this.dateTime.isSameDay(dt);","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"marclamp"},"content":" public String stringForSaving() {","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"marclamp"},"content":" return \"D|\" + super.stringForSaving() + \"|\" + this.dateTime;","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"marclamp"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"marclamp"},"content":" return \"[D]\" + super.toString() +","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"marclamp"},"content":" String.format(\" (by: %s)\", this.dateTime);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"marclamp":50}},{"path":"src/main/java/tasks/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import datetime.DateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"import exceptions.ChaterpillarException;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":" * Represents a task which is an event. A \u003ccode\u003etasks.EventTask\u003c/code\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":" * object contains its description or name, represented by a String,","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":" * a boolean indicating whether the task is marked,","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":" * a String representing the start date and/or time of the event, and","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":" * a String representing the end date and/or time of the event.","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":"public class EventTask extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":" public DateTime dateTimeFrom;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":" public DateTime dateTimeTo;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":" * Constructor with event start and end","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" * date and/or time specified","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" * @param taskname name of task to be tracked","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":" * @param dateTimeFrom start date and/or time of the event","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" * @param dateTimeTo end date and/or time of the event","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":" public EventTask(String taskname, String dateTimeFrom, String dateTimeTo) throws ChaterpillarException {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":" super(taskname);","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":" this.dateTimeFrom \u003d new DateTime(dateTimeFrom);","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":" this.dateTimeTo \u003d new DateTime(dateTimeTo);","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":" this.hasDate \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"marclamp"},"content":" * Overloaded Constructor with event start and end","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"marclamp"},"content":" * date and/or time specified","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"marclamp"},"content":" * @param taskname name of task to be tracked","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"marclamp"},"content":" * @param isMarked \u003ccode\u003eBoolean\u003c/code\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"marclamp"},"content":" * @param dateTimeFrom start date and/or time of the event","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"marclamp"},"content":" * @param dateTimeTo end date and/or time of the event","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"marclamp"},"content":" public EventTask(String taskname, Boolean isMarked, String dateTimeFrom, String dateTimeTo) throws ChaterpillarException {","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"marclamp"},"content":" super(taskname,isMarked);","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"marclamp"},"content":" this.dateTimeFrom \u003d new DateTime(dateTimeFrom);","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"marclamp"},"content":" this.dateTimeTo \u003d new DateTime(dateTimeTo);","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"marclamp"},"content":" this.hasDate \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"marclamp"},"content":" this.isMarked \u003d isMarked;","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"marclamp"},"content":" public Boolean isWithinDate(DateTime dt) {","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"marclamp"},"content":" return dt.isWithinDate(this.dateTimeFrom, this.dateTimeTo);","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"marclamp"},"content":" public String stringForSaving() {","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"marclamp"},"content":" return \"E|\" + super.stringForSaving() + \"|\"","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"marclamp"},"content":" + this.dateTimeFrom + \"|\"","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"marclamp"},"content":" + this.dateTimeTo;","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"marclamp"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"marclamp"},"content":" return \"[D]\" + super.toString()","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"marclamp"},"content":" + String.format(\" (from: %s to: %s)\", this.dateTimeFrom, this.dateTimeTo);","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"marclamp":60}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import datetime.DateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"/**","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":" * Represents a task. A \u003ccode\u003etasks.Task\u003c/code\u003e object contains its","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":" * description or name, represented by a String, and a boolean","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":" * indicating whether the task is marked.","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":"public class Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":" public String taskName;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":" public boolean isMarked;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":" public boolean hasDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":" * Basic constructor","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":" * @param taskName name of task to be tracked","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" public Task(String taskName) {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":" this.taskName \u003d taskName.trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" this.isMarked \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" this.hasDate \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":" * Overloaded constructor with marked status","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":" * @param taskName name of task to be tracked","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"marclamp"},"content":" * @param isMarked status of task (marked or unmarked)","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"marclamp"},"content":" public Task(String taskName, Boolean isMarked) {","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"marclamp"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"marclamp"},"content":" this.isMarked \u003d isMarked;","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"marclamp"},"content":" * Sets this task as marked, by setting the","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"marclamp"},"content":" * boolean flag to be true.","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"marclamp"},"content":" public void mark() {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"marclamp"},"content":" this.isMarked \u003d true;","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"marclamp"},"content":" * Sets this task as unmarked, by setting the","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"marclamp"},"content":" * boolean flag to be false.","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"marclamp"},"content":" public void unmark() {","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"marclamp"},"content":" this.isMarked \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"marclamp"},"content":" * Returns a formatted string meant for saving into the","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"marclamp"},"content":" * text file.","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"marclamp"},"content":" * @return formatted String, consisting of isMarked status and taskname","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"marclamp"},"content":" public String stringForSaving() {","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"marclamp"},"content":" return this.isMarked + \"|\" + this.taskName;","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"marclamp"},"content":" public Boolean isWithinDate(DateTime dt) {","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"marclamp"},"content":" return false;","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"marclamp"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"marclamp"},"content":" return (this.isMarked ? \"[X] \" : \"[ ] \") + this.taskName;","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"marclamp":66}},{"path":"src/main/java/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import datetime.DateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"import exceptions.ChaterpillarException;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":"public class TaskList {","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":" private final ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":" public TaskList() {","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":" public Task get(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" return this.tasks.get(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":" return this.tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":" public int size() {","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"marclamp"},"content":" return this.tasks.size();","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"marclamp"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"marclamp"},"content":" this.tasks.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"marclamp"},"content":" public void deleteTaskAtIndex(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"marclamp"},"content":" this.tasks.remove(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"marclamp"},"content":" public TaskList getTasksToday() throws ChaterpillarException {","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"marclamp"},"content":" DateTime today \u003d new DateTime(LocalDate.now());","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"marclamp"},"content":" return getTasksOnDate(today);","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"marclamp"},"content":" public TaskList getTasksOnDate(String date) throws ChaterpillarException {","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"marclamp"},"content":" DateTime dt \u003d new DateTime(date);","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"marclamp"},"content":" return getTasksOnDate(dt);","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"marclamp"},"content":" public TaskList getTasksOnDate(DateTime date) {","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"marclamp"},"content":" ArrayList\u003cTask\u003e tasksToDisplayList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"marclamp"},"content":" for (Task task : tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"marclamp"},"content":" if (task.hasDate) {","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"marclamp"},"content":" if(task.isWithinDate(date)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"marclamp"},"content":" tasksToDisplayList.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"marclamp"},"content":" return new TaskList(tasksToDisplayList);","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"marclamp":65}},{"path":"src/main/java/tasks/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"/**","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":" * Represents a task to be done. A \u003ccode\u003eToDoTask\u003c/code\u003e","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":" * object contains its description or name, represented by a String, and","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":" * a boolean indicating whether the task is marked.","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":"public class TodoTask extends Task {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":" * Basic Constructor","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":" * @param taskName name of task to be tracked","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":" public TodoTask(String taskName) {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":" super(taskName);","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" * Overloaded Constructor with isMarked status","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":" * @param taskname name of task to be tracked","lastModifiedDate":"2024-01-30"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" * @param isMarked status of task (marked or unmarked)","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":" public TodoTask(String taskname, Boolean isMarked) {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":" super(taskname, isMarked);","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":" public String stringForSaving() {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"marclamp"},"content":" return \"T|\" + super.stringForSaving();","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"marclamp"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"marclamp"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"marclamp"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"marclamp":34}},{"path":"src/main/java/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"package ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"import java.io.InputStreamReader;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"public class Ui {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":" private static final String LOGO \u003d","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":" \" . .\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":" \" ) (\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":" \" _ _ _ _ _ _ _ _ _ _ _(.--.)\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":" \" {{ { { { { { { { { { { ( \u0027v\u0027)\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":" \" \u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e\u003e`--\u0027\u003e\";","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":" private static final BufferedReader reader \u003d new BufferedReader(","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":" new InputStreamReader((System.in)));","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"marclamp"},"content":" * Prints out the message given in the String argument.","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"marclamp"},"content":" * @param s the message to be printed","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"marclamp"},"content":" public void echo(String s) {","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"marclamp"},"content":" System.out.println(s);","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"marclamp"},"content":" * Prints out a horizontal line, typically used to segment","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"marclamp"},"content":" * the start and end of a message by the chatbot.","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"marclamp"},"content":" public void printHorizontalLine() {","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"marclamp"},"content":" String line \u003d \"-\".repeat(50);","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"marclamp"},"content":" echo(line);","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"marclamp"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"marclamp"},"content":" * Prints the greeting message by the Chaterpillar chatbot.","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"marclamp"},"content":" * It also prints the horizontal lines as dividers before and after the message.","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"marclamp"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"marclamp"},"content":" public void greet() {","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"marclamp"},"content":" printHorizontalLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"marclamp"},"content":" echo(LOGO);","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"marclamp"},"content":" echo(\"Hello! I\u0027m Chaterpillar\");","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"marclamp"},"content":" echo(\"What can I do for you?\");","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"marclamp"},"content":" printHorizontalLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"marclamp"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"marclamp"},"content":" public String readCommand() throws IOException {","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"marclamp"},"content":" return reader.readLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"marclamp"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"marclamp"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"marclamp":49}},{"path":"text-ui-test/data/history.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"T|true|read book","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"D|true|return book|6/Feb/2024","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"E|false|project meeting|8/Feb/2024 02:00 PM|8/Feb/2024 04:00 PM","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"T|true|join sports club","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"D|false|finish this|6/Feb/2024","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"E|false|lunch plans|7/Feb/2024 02:00 PM|7/Feb/2024 04:00 PM","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"marclamp":6}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"marclamp"},"content":"todo read book","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"marclamp"},"content":"deadline return book /by 6 Feb","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"marclamp"},"content":"event project meeting /from 8 Feb 2 PM /to 8 Feb 4 PM","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"marclamp"},"content":"todo join sports club","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"marclamp"},"content":"todo borrow book","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"marclamp"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"marclamp"},"content":"mark 2","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"marclamp"},"content":"mark 4","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"marclamp"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"marclamp"},"content":"delete 5","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"marclamp"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"marclamp"},"content":"deadline finish this /by 6 Feb","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"marclamp"},"content":"event lunch plans /from 2 PM /to 4 PM","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"marclamp"},"content":"list","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"marclamp"},"content":"today","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"marclamp"},"content":"bye","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"marclamp":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":"-"},"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":"marclamp"},"content":"java -classpath ..\\bin Chaterpillar \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-26"},{"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":{"marclamp":1,"-":20}}] diff --git a/marclamp_ip_master/commits.json b/marclamp_ip_master/commits.json index e1fcb322..709733d3 100644 --- a/marclamp_ip_master/commits.json +++ b/marclamp_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"marclamp":[{"date":"2024-01-26","commitResults":[{"hash":"7bd3a326d3f2bef216bfee457aeb4f44a805e5ca","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"fe1305569eddb86e237d218cca277c56cce4b88a","isMergeCommit":false,"messageTitle":"Added Echo Functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":4}}},{"hash":"55e7596c277f67ee3f45f233508526541ced2bf3","isMergeCommit":false,"messageTitle":"Added Add and List Functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":4}}},{"hash":"43aca63ea24b0613bf0d8e888f007ae7a76a0362","isMergeCommit":false,"messageTitle":"Added Mark as Done Functionality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":23}}},{"hash":"c3b84953a5f333559bc44422693a963a0d83f529","isMergeCommit":false,"messageTitle":"Added ToDos, Events, and Deadlines Functionality","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":3}}},{"hash":"5bc7adc6ef259ec3823551005a0dc25778bd4aae","isMergeCommit":false,"messageTitle":"Added Minimial Error Handling Functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":44,"deletions":20}}},{"hash":"0023d0ae7feed44f4ba55ded755f89b11950d8a2","isMergeCommit":false,"messageTitle":"Added Minimial Error Handling Functionality","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":44,"deletions":20}}},{"hash":"c9387e4e8b2ffc706a9f4c5efc9b4342676980aa","isMergeCommit":false,"messageTitle":"Added Delete Functionality","messageBody":"","tags":["Level-6","A-Exceptions"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":20,"deletions":0}}}]},{"date":"2024-01-30","commitResults":[{"hash":"c57486e5cb1a2c5d665dd3ae24a8714e8337776a","isMergeCommit":false,"messageTitle":"Refactored names to fit conventions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":216,"deletions":116}}}]},{"date":"2024-02-02","commitResults":[{"hash":"bff57d8bd3c9d6c53872ff9c3a2cdac5e0a03798","isMergeCommit":false,"messageTitle":"Added saving and loading functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":198,"deletions":32}}},{"hash":"b8bba679ab069e39ab744f2c0b12055820d9ea7a","isMergeCommit":false,"messageTitle":"Added JavaDoc Headers","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":38}}}]},{"date":"2024-02-06","commitResults":[{"hash":"6cb5d04f9a4506307b12c913f19f798119d2c5ef","isMergeCommit":false,"messageTitle":"Added DateTime class for date and time storage","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":167,"deletions":19}}},{"hash":"ff376ebe47a333c200a406277316169de289e700","isMergeCommit":false,"messageTitle":"Added listing by date functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":4},"java":{"insertions":89,"deletions":37}}},{"hash":"84d42cf08a5b194f7005d874ba82d561c70c9bf5","isMergeCommit":false,"messageTitle":"Refactored to fit naming conventions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":35}}},{"hash":"96e0daa38f666041f03a56a4997a04aaeb6bd9ab","isMergeCommit":true,"messageTitle":"Resolved merge conflicts between branch-Level-7 and master","messageBody":"","tags":["Level-8","Level-7"],"fileTypesAndContributionMap":{}},{"hash":"ed6ba42e218e3ed7c6d345df764ab0cf02e96ea0","isMergeCommit":true,"messageTitle":"Resolved merge conflicts between branch-Level-8 and master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"209e558ce650883b6d67b9ef0b194199fc8035bc","isMergeCommit":false,"messageTitle":"Cleaned up the formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":10}}}]}]},"authorFileTypeContributionMap":{"marclamp":{"java":701,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":34}},"authorContributionVariance":{"marclamp":27240.336},"authorDisplayNameMap":{"marclamp":"CS2103-T14-1 LAM ..RCUS"}} +{"authorDailyContributionsMap":{"marclamp":[{"date":"2024-01-26","commitResults":[{"hash":"7bd3a326d3f2bef216bfee457aeb4f44a805e5ca","isMergeCommit":false,"messageTitle":"Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"fe1305569eddb86e237d218cca277c56cce4b88a","isMergeCommit":false,"messageTitle":"Added Echo Functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":28,"deletions":4}}},{"hash":"55e7596c277f67ee3f45f233508526541ced2bf3","isMergeCommit":false,"messageTitle":"Added Add and List Functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":4}}},{"hash":"43aca63ea24b0613bf0d8e888f007ae7a76a0362","isMergeCommit":false,"messageTitle":"Added Mark as Done Functionality","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":23}}},{"hash":"c3b84953a5f333559bc44422693a963a0d83f529","isMergeCommit":false,"messageTitle":"Added ToDos, Events, and Deadlines Functionality","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":73,"deletions":3}}},{"hash":"5bc7adc6ef259ec3823551005a0dc25778bd4aae","isMergeCommit":false,"messageTitle":"Added Minimial Error Handling Functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":44,"deletions":20}}},{"hash":"0023d0ae7feed44f4ba55ded755f89b11950d8a2","isMergeCommit":false,"messageTitle":"Added Minimial Error Handling Functionality","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0},"java":{"insertions":44,"deletions":20}}},{"hash":"c9387e4e8b2ffc706a9f4c5efc9b4342676980aa","isMergeCommit":false,"messageTitle":"Added Delete Functionality","messageBody":"","tags":["Level-6","A-Exceptions"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":20,"deletions":0}}}]},{"date":"2024-01-30","commitResults":[{"hash":"c57486e5cb1a2c5d665dd3ae24a8714e8337776a","isMergeCommit":false,"messageTitle":"Refactored names to fit conventions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":216,"deletions":116}}}]},{"date":"2024-02-02","commitResults":[{"hash":"bff57d8bd3c9d6c53872ff9c3a2cdac5e0a03798","isMergeCommit":false,"messageTitle":"Added saving and loading functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":198,"deletions":32}}},{"hash":"b8bba679ab069e39ab744f2c0b12055820d9ea7a","isMergeCommit":false,"messageTitle":"Added JavaDoc Headers","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":133,"deletions":38}}}]},{"date":"2024-02-06","commitResults":[{"hash":"6cb5d04f9a4506307b12c913f19f798119d2c5ef","isMergeCommit":false,"messageTitle":"Added DateTime class for date and time storage","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":167,"deletions":19}}},{"hash":"ff376ebe47a333c200a406277316169de289e700","isMergeCommit":false,"messageTitle":"Added listing by date functionality","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":4},"java":{"insertions":89,"deletions":37}}},{"hash":"84d42cf08a5b194f7005d874ba82d561c70c9bf5","isMergeCommit":false,"messageTitle":"Refactored to fit naming conventions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":35}}},{"hash":"96e0daa38f666041f03a56a4997a04aaeb6bd9ab","isMergeCommit":true,"messageTitle":"Resolved merge conflicts between branch-Level-7 and master","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"ed6ba42e218e3ed7c6d345df764ab0cf02e96ea0","isMergeCommit":true,"messageTitle":"Resolved merge conflicts between branch-Level-8 and master","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"209e558ce650883b6d67b9ef0b194199fc8035bc","isMergeCommit":false,"messageTitle":"Cleaned up the formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":10}}}]},{"date":"2024-02-07","commitResults":[{"hash":"5586b1ba56bbf2f84b749a03e19929203f9643bd","isMergeCommit":false,"messageTitle":"Added Storage and TaskList, but TaskList is not used yet","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":12,"deletions":0},"java":{"insertions":155,"deletions":92}}},{"hash":"1a0905bf9e6bffe3356004e7049dfde8714c4ae7","isMergeCommit":false,"messageTitle":"Modified to include Command classes, Parser, and Ui, following More OOP standards","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":25},"java":{"insertions":312,"deletions":229}}},{"hash":"60244b63cc6b59013a21bc22e34e08c2413582cc","isMergeCommit":false,"messageTitle":"Added ChaterpillarException for Exception Handling","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":29,"deletions":12}}},{"hash":"99e844101ec7622bc285ebe97fb9ee26b17d1ac0","isMergeCommit":false,"messageTitle":"Organised existing files into packages, A-Packages.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"e3147e8a634b0061ad269351bf32a58e33d2aa6b","isMergeCommit":false,"messageTitle":"Organised existing files into packages, A-Packages.","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":26}}},{"hash":"b611852ff8413d502dcf0b561da5f2ed5349ff3a","isMergeCommit":false,"messageTitle":"Cleaned up exception handling","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":86,"deletions":48}}}]}]},"authorFileTypeContributionMap":{"marclamp":{"java":997,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":22}},"authorContributionVariance":{"marclamp":79791.29},"authorDisplayNameMap":{"marclamp":"CS2103-T14-1 LAM ..RCUS"}} diff --git a/matthewken19_ip_master/authorship.json b/matthewken19_ip_master/authorship.json index e47b60d1..d602dff8 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":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":" LocalDate by;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":" Deadline(String desc, String by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" super(desc);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" this.by \u003d LocalDate.parse(by);","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" Deadline(String desc, boolean isDone, String by) {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":" super(desc, isDone);","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":" this.by \u003d LocalDate.parse(by);","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":" public String toSave() {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":" // need to store status as well","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":" return \"D | \" + super.toSave() + \" | \" + by;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"matthewken19"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"matthewken19"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"matthewken19"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"matthewken19":27}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":"import java.io.File;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":"import java.util.function.ToDoubleFunction;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":" File directory;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":" File file;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":" directory \u003d new File(\"./data\");","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":" if (!directory.exists()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":" directory.mkdirs();","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"matthewken19"},"content":" file \u003d new File(directory, \"duke.txt\");","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"matthewken19"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"matthewken19"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"matthewken19"},"content":" file.createNewFile();","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"matthewken19"},"content":" } catch (IOException ex) {","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"matthewken19"},"content":" System.out.println(ex.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"matthewken19"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"matthewken19"},"content":" list \u003d readFileContents(file);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"matthewken19"},"content":" } catch (FileNotFoundException | DateTimeParseException ex) {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"File corrupted! Failed to create new file.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"matthewken19"},"content":" String line \u003d \"_____________________________________________\";","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"matthewken19"},"content":" String greeting \u003d \"Hello! I\u0027m Donald.\\nWhat can I do for you?\\n\";","lastModifiedDate":"2024-01-29"},{"lineNumber":37,"author":{"gitId":"matthewken19"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"matthewken19"},"content":" System.out.println(greeting + line + \"\\n\");","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":40,"author":{"gitId":"matthewken19"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-29"},{"lineNumber":41,"author":{"gitId":"matthewken19"},"content":" String input;","lastModifiedDate":"2024-01-29"},{"lineNumber":42,"author":{"gitId":"matthewken19"},"content":" int index;","lastModifiedDate":"2024-01-30"},{"lineNumber":43,"author":{"gitId":"matthewken19"},"content":" Task t;","lastModifiedDate":"2024-01-30"},{"lineNumber":44,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":45,"author":{"gitId":"matthewken19"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2024-01-29"},{"lineNumber":46,"author":{"gitId":"matthewken19"},"content":" input \u003d sc.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":47,"author":{"gitId":"matthewken19"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"matthewken19"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":49,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-29"},{"lineNumber":50,"author":{"gitId":"matthewken19"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-01-30"},{"lineNumber":51,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":52,"author":{"gitId":"matthewken19"},"content":" index \u003d 1;","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"matthewken19"},"content":" for (Task s : list) {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"matthewken19"},"content":" System.out.println(index + \".\" + s);","lastModifiedDate":"2024-01-30"},{"lineNumber":55,"author":{"gitId":"matthewken19"},"content":" index++;","lastModifiedDate":"2024-01-30"},{"lineNumber":56,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":57,"author":{"gitId":"matthewken19"},"content":" } else {","lastModifiedDate":"2024-01-30"},{"lineNumber":58,"author":{"gitId":"matthewken19"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":59,"author":{"gitId":"matthewken19"},"content":" processInput(input, list);","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"matthewken19"},"content":" } catch (DukeException de) {","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"matthewken19"},"content":" System.out.println(de.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"matthewken19"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"DukeException: Please input valid integer.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"matthewken19"},"content":" System.out.println(line + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"matthewken19"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"matthewken19"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"matthewken19"},"content":" for (Task task: list) {","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"matthewken19"},"content":" fw.write(task.toSave() + \"\\n\");","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"matthewken19"},"content":" fw.close();","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"matthewken19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Something went wrong.. Failed to save list.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"matthewken19"},"content":" String closing \u003d \"Bye. Hope to see you again soon!\\n\";","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"matthewken19"},"content":" System.out.println(closing + line);","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"matthewken19"},"content":" private static ArrayList\u003cTask\u003e readFileContents(File filePath) throws FileNotFoundException {","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"matthewken19"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"matthewken19"},"content":" Scanner sc \u003d new Scanner(filePath);","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"matthewken19"},"content":" String s;","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"matthewken19"},"content":" String[] stringSplit;","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"matthewken19"},"content":" Task task;","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"matthewken19"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"matthewken19"},"content":" s \u003d sc.nextLine();","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"matthewken19"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"matthewken19"},"content":" stringSplit \u003d s.split(\"\\\\|\");","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"matthewken19"},"content":" for (int i \u003d 0; i \u003c stringSplit.length; i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"matthewken19"},"content":" stringSplit[i] \u003d stringSplit[i].trim();","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"matthewken19"},"content":" System.out.println(stringSplit[i]);","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"matthewken19"},"content":" boolean isDone \u003d Boolean.valueOf(stringSplit[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"matthewken19"},"content":" switch (stringSplit[0]){","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"matthewken19"},"content":" case \"T\":","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"matthewken19"},"content":" task \u003d new ToDo(stringSplit[2], isDone);","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"matthewken19"},"content":" list.add(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"matthewken19"},"content":" case \"D\":","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"matthewken19"},"content":" task \u003d new Deadline(stringSplit[2], isDone, stringSplit[3]);","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"matthewken19"},"content":" list.add(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":106,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":107,"author":{"gitId":"matthewken19"},"content":" case \"E\":","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"matthewken19"},"content":" task \u003d new Event(stringSplit[2], isDone, stringSplit[3], stringSplit[4]);","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"matthewken19"},"content":" list.add(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":111,"author":{"gitId":"matthewken19"},"content":" default:","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Corrupted Data!\");","lastModifiedDate":"2024-02-06"},{"lineNumber":113,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":114,"author":{"gitId":"matthewken19"},"content":" } catch (DukeException de) {","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"matthewken19"},"content":" System.out.println(de.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":118,"author":{"gitId":"matthewken19"},"content":" return list;","lastModifiedDate":"2024-02-06"},{"lineNumber":119,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":120,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":121,"author":{"gitId":"matthewken19"},"content":" private static void processInput(String str, ArrayList\u003cTask\u003e list) throws DukeException {","lastModifiedDate":"2024-02-06"},{"lineNumber":122,"author":{"gitId":"matthewken19"},"content":" String[] stringSplit \u003d str.split(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":123,"author":{"gitId":"matthewken19"},"content":" String command \u003d stringSplit[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":124,"author":{"gitId":"matthewken19"},"content":" String desc;","lastModifiedDate":"2024-01-30"},{"lineNumber":125,"author":{"gitId":"matthewken19"},"content":" int index;","lastModifiedDate":"2024-02-06"},{"lineNumber":126,"author":{"gitId":"matthewken19"},"content":" Task task;","lastModifiedDate":"2024-02-06"},{"lineNumber":127,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":128,"author":{"gitId":"matthewken19"},"content":" switch (command) {","lastModifiedDate":"2024-01-30"},{"lineNumber":129,"author":{"gitId":"matthewken19"},"content":" case \"mark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":130,"author":{"gitId":"matthewken19"},"content":" // Exception handling and splitting the string","lastModifiedDate":"2024-02-06"},{"lineNumber":131,"author":{"gitId":"matthewken19"},"content":" if (stringSplit.length \u003c 2) {","lastModifiedDate":"2024-02-06"},{"lineNumber":132,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Command description cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":133,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":134,"author":{"gitId":"matthewken19"},"content":" desc \u003d str.split(command + \" \")[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":135,"author":{"gitId":"matthewken19"},"content":" stringSplit \u003d str.split(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":136,"author":{"gitId":"matthewken19"},"content":" index \u003d Integer.parseInt(stringSplit[1]) - 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":137,"author":{"gitId":"matthewken19"},"content":" if (index + 1 \u003e list.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":138,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"You only have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":139,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":140,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":141,"author":{"gitId":"matthewken19"},"content":" // get Task, edit and put back to list","lastModifiedDate":"2024-02-06"},{"lineNumber":142,"author":{"gitId":"matthewken19"},"content":" task \u003d list.get(index);","lastModifiedDate":"2024-02-06"},{"lineNumber":143,"author":{"gitId":"matthewken19"},"content":" task.mark();","lastModifiedDate":"2024-02-06"},{"lineNumber":144,"author":{"gitId":"matthewken19"},"content":" list.set(index, task);","lastModifiedDate":"2024-02-06"},{"lineNumber":145,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":146,"author":{"gitId":"matthewken19"},"content":" // Print system message","lastModifiedDate":"2024-02-06"},{"lineNumber":147,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":148,"author":{"gitId":"matthewken19"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":149,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":150,"author":{"gitId":"matthewken19"},"content":" case \"unmark\":","lastModifiedDate":"2024-01-30"},{"lineNumber":151,"author":{"gitId":"matthewken19"},"content":" // Exception handling and splitting the string","lastModifiedDate":"2024-02-06"},{"lineNumber":152,"author":{"gitId":"matthewken19"},"content":" if (stringSplit.length \u003c 2) {","lastModifiedDate":"2024-02-06"},{"lineNumber":153,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Command description cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":154,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":155,"author":{"gitId":"matthewken19"},"content":" desc \u003d str.split(command + \" \")[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":156,"author":{"gitId":"matthewken19"},"content":" stringSplit \u003d str.split(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":157,"author":{"gitId":"matthewken19"},"content":" index \u003d Integer.parseInt(stringSplit[1]) - 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":158,"author":{"gitId":"matthewken19"},"content":" if (index + 1 \u003e list.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":159,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"You only have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":160,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":161,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":162,"author":{"gitId":"matthewken19"},"content":" // get Task, edit and put back to list","lastModifiedDate":"2024-02-06"},{"lineNumber":163,"author":{"gitId":"matthewken19"},"content":" task \u003d list.get(index);","lastModifiedDate":"2024-02-06"},{"lineNumber":164,"author":{"gitId":"matthewken19"},"content":" task.unmark();","lastModifiedDate":"2024-02-06"},{"lineNumber":165,"author":{"gitId":"matthewken19"},"content":" list.set(index, task);","lastModifiedDate":"2024-02-06"},{"lineNumber":166,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":167,"author":{"gitId":"matthewken19"},"content":" // Print system message","lastModifiedDate":"2024-02-06"},{"lineNumber":168,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":169,"author":{"gitId":"matthewken19"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":170,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":171,"author":{"gitId":"matthewken19"},"content":" case \"delete\":","lastModifiedDate":"2024-01-30"},{"lineNumber":172,"author":{"gitId":"matthewken19"},"content":" // Exception handling and splitting the string","lastModifiedDate":"2024-02-06"},{"lineNumber":173,"author":{"gitId":"matthewken19"},"content":" if (stringSplit.length \u003c 2) {","lastModifiedDate":"2024-02-06"},{"lineNumber":174,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Command description cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":175,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":176,"author":{"gitId":"matthewken19"},"content":" desc \u003d str.split(command + \" \")[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":177,"author":{"gitId":"matthewken19"},"content":" stringSplit \u003d str.split(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":178,"author":{"gitId":"matthewken19"},"content":" index \u003d Integer.parseInt(stringSplit[1]) - 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":179,"author":{"gitId":"matthewken19"},"content":" if (index + 1 \u003e list.size()) {","lastModifiedDate":"2024-01-30"},{"lineNumber":180,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"You only have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":181,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":182,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":183,"author":{"gitId":"matthewken19"},"content":" task \u003d list.remove(index); // remove task","lastModifiedDate":"2024-02-06"},{"lineNumber":184,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":185,"author":{"gitId":"matthewken19"},"content":" // Print system message","lastModifiedDate":"2024-02-06"},{"lineNumber":186,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":187,"author":{"gitId":"matthewken19"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":188,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"No-w you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":189,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":190,"author":{"gitId":"matthewken19"},"content":" case \"todo\":","lastModifiedDate":"2024-01-30"},{"lineNumber":191,"author":{"gitId":"matthewken19"},"content":" // Exception handling and splitting the string","lastModifiedDate":"2024-02-06"},{"lineNumber":192,"author":{"gitId":"matthewken19"},"content":" if (stringSplit.length \u003c 2) {","lastModifiedDate":"2024-02-06"},{"lineNumber":193,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Command description cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":194,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":195,"author":{"gitId":"matthewken19"},"content":" desc \u003d str.split(command + \" \")[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":196,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":197,"author":{"gitId":"matthewken19"},"content":" // Create Task and add to list","lastModifiedDate":"2024-02-06"},{"lineNumber":198,"author":{"gitId":"matthewken19"},"content":" task \u003d new ToDo(desc.trim());","lastModifiedDate":"2024-02-06"},{"lineNumber":199,"author":{"gitId":"matthewken19"},"content":" list.add(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":200,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":201,"author":{"gitId":"matthewken19"},"content":" // Print system message","lastModifiedDate":"2024-02-06"},{"lineNumber":202,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":203,"author":{"gitId":"matthewken19"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":204,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in this list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":205,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":206,"author":{"gitId":"matthewken19"},"content":" case \"deadline\":","lastModifiedDate":"2024-01-30"},{"lineNumber":207,"author":{"gitId":"matthewken19"},"content":" // Exception handling and splitting the string","lastModifiedDate":"2024-02-06"},{"lineNumber":208,"author":{"gitId":"matthewken19"},"content":" if (stringSplit.length \u003c 2) {","lastModifiedDate":"2024-02-06"},{"lineNumber":209,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Command description cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":210,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":211,"author":{"gitId":"matthewken19"},"content":" desc \u003d str.split(command + \" \")[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":212,"author":{"gitId":"matthewken19"},"content":" stringSplit \u003d desc.split(\"/by\");","lastModifiedDate":"2024-02-06"},{"lineNumber":213,"author":{"gitId":"matthewken19"},"content":" if (stringSplit.length \u003c 2) {","lastModifiedDate":"2024-02-06"},{"lineNumber":214,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Deadline /by cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":215,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":216,"author":{"gitId":"matthewken19"},"content":" desc \u003d stringSplit[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":217,"author":{"gitId":"matthewken19"},"content":" String by \u003d stringSplit[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":218,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":219,"author":{"gitId":"matthewken19"},"content":" // Create Task and add to list","lastModifiedDate":"2024-02-06"},{"lineNumber":220,"author":{"gitId":"matthewken19"},"content":" task \u003d new Deadline(desc.trim(), by.trim());","lastModifiedDate":"2024-02-06"},{"lineNumber":221,"author":{"gitId":"matthewken19"},"content":" list.add(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":222,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":223,"author":{"gitId":"matthewken19"},"content":" // Print system message","lastModifiedDate":"2024-02-06"},{"lineNumber":224,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":225,"author":{"gitId":"matthewken19"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":226,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in this list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":227,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":228,"author":{"gitId":"matthewken19"},"content":" case \"event\":","lastModifiedDate":"2024-01-30"},{"lineNumber":229,"author":{"gitId":"matthewken19"},"content":" // Exception handling and splitting the string","lastModifiedDate":"2024-02-06"},{"lineNumber":230,"author":{"gitId":"matthewken19"},"content":" if (stringSplit.length \u003c 2) {","lastModifiedDate":"2024-02-06"},{"lineNumber":231,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Command description cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":232,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":233,"author":{"gitId":"matthewken19"},"content":" desc \u003d str.split(command + \" \")[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":234,"author":{"gitId":"matthewken19"},"content":" stringSplit \u003d desc.split(\"/from\");","lastModifiedDate":"2024-02-06"},{"lineNumber":235,"author":{"gitId":"matthewken19"},"content":" if (stringSplit.length \u003c 2) {","lastModifiedDate":"2024-02-06"},{"lineNumber":236,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Event /from cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":237,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":238,"author":{"gitId":"matthewken19"},"content":" desc \u003d stringSplit[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":239,"author":{"gitId":"matthewken19"},"content":" stringSplit \u003d stringSplit[1].split(\"/to\");","lastModifiedDate":"2024-02-06"},{"lineNumber":240,"author":{"gitId":"matthewken19"},"content":" if (stringSplit.length \u003c 2) {","lastModifiedDate":"2024-02-06"},{"lineNumber":241,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Event /to cannot be empty!\");","lastModifiedDate":"2024-01-30"},{"lineNumber":242,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":243,"author":{"gitId":"matthewken19"},"content":" String from \u003d stringSplit[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":244,"author":{"gitId":"matthewken19"},"content":" String to \u003d stringSplit[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":245,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":246,"author":{"gitId":"matthewken19"},"content":" // Create Task and add to list","lastModifiedDate":"2024-02-06"},{"lineNumber":247,"author":{"gitId":"matthewken19"},"content":" task \u003d new Event(desc.trim(), from.trim(), to.trim());","lastModifiedDate":"2024-02-06"},{"lineNumber":248,"author":{"gitId":"matthewken19"},"content":" list.add(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":249,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":250,"author":{"gitId":"matthewken19"},"content":" // Print system message","lastModifiedDate":"2024-02-06"},{"lineNumber":251,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-30"},{"lineNumber":252,"author":{"gitId":"matthewken19"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-02-06"},{"lineNumber":253,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in this list.\");","lastModifiedDate":"2024-01-30"},{"lineNumber":254,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-01-30"},{"lineNumber":255,"author":{"gitId":"matthewken19"},"content":" default:","lastModifiedDate":"2024-01-30"},{"lineNumber":256,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"I\u0027m sorry, I don\u0027t know what that means.\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":257,"author":{"gitId":"matthewken19"},"content":" \"Please input valid commands (i.e. [command] [description]).\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":258,"author":{"gitId":"matthewken19"},"content":" \"You can choose from the following available commands:\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":259,"author":{"gitId":"matthewken19"},"content":" \" * todo [desc]\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":260,"author":{"gitId":"matthewken19"},"content":" \" * event [desc] /from [desc] /to [desc]\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":261,"author":{"gitId":"matthewken19"},"content":" \" * deadline [desc] /by [desc]\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":262,"author":{"gitId":"matthewken19"},"content":" \" * list\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":263,"author":{"gitId":"matthewken19"},"content":" \" * mark [number]\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":264,"author":{"gitId":"matthewken19"},"content":" \" * unmark [number]\\n\" +","lastModifiedDate":"2024-01-30"},{"lineNumber":265,"author":{"gitId":"matthewken19"},"content":" \" * delete [number]\");","lastModifiedDate":"2024-01-30"},{"lineNumber":266,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":267,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":268,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":4,"matthewken19":264}},{"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":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":" private LocalDate start;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":" private LocalDate end;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" Event(String desc, String start, String end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" super(desc);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" this.start \u003d LocalDate.parse(start);","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":" this.end \u003d LocalDate.parse(end);","lastModifiedDate":"2024-02-06"},{"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":" Event(String desc, boolean isDone, String start, String end) {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":" super(desc, isDone);","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":" this.start \u003d LocalDate.parse(start);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":" this.end \u003d LocalDate.parse(end);","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":" public String toSave() {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"matthewken19"},"content":" // need to store status as well","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"matthewken19"},"content":" return \"E | \" + super.toSave() + \" | \" + start + \" | \" + end;","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"matthewken19"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"matthewken19"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"matthewken19"},"content":" return \"[E]\" + super.toString() +","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"matthewken19"},"content":" \" (from: \" + start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) +","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"matthewken19"},"content":" \" to: \" + end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"matthewken19":31}},{"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 boolean isDone;","lastModifiedDate":"2024-02-06"},{"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.isDone \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" Task(String desc, boolean isDone) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":" this.desc \u003d desc;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":" public void mark() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":" public void unmark() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"matthewken19"},"content":" public String toSave() {","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"matthewken19"},"content":" // need to store status as well","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"matthewken19"},"content":" return isDone + \" | \" + desc;","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"matthewken19"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"matthewken19"},"content":" String s \u003d \"[ ]\";","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"matthewken19"},"content":" if (isDone) {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"matthewken19"},"content":" s \u003d \"[X]\";","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"matthewken19"},"content":" return s + \" \" + desc;","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"matthewken19":35}},{"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":" ToDo(String desc, boolean isDone) {","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" super(desc, isDone);","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":" public String toSave() {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" // need to store status as well","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":" return \"T | \" + super.toSave();","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"matthewken19":20}},{"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}}] +[{"path":"src/main/java/AddCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"public class AddCommand implements Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":" private String commandWord;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":" private String description;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":" static String defaultString \u003d \"Got it. I\u0027ve added this task:\";","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":" AddCommand(String commandWord, String description) {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" this.commandWord \u003d commandWord;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" this.description \u003d description;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" public void execute(TaskList tasks, Ui ui) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":" Task task;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":" String[] stringSplit;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":" switch (commandWord) {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":" case \"todo\":","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":" task \u003d new ToDo(description.trim());","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":" ui.addMessage(task.toString(), tasks.size());","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"matthewken19"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"matthewken19"},"content":" stringSplit \u003d description.split(\"/by\");","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"matthewken19"},"content":" if (stringSplit.length \u003c 2) {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Deadline /by cannot be empty!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"matthewken19"},"content":" description \u003d stringSplit[0];","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"matthewken19"},"content":" String by \u003d stringSplit[1];","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"matthewken19"},"content":" // Create Task and add to list","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"matthewken19"},"content":" task \u003d new Deadline(description.trim(), by.trim());","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"matthewken19"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"matthewken19"},"content":" ui.addMessage(task.toString(), tasks.size());","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"matthewken19"},"content":" case \"event\":","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"matthewken19"},"content":" stringSplit \u003d description.split(\"/from\");","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"matthewken19"},"content":" if (stringSplit.length \u003c 2) {","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Event /from cannot be empty!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"matthewken19"},"content":" description \u003d stringSplit[0];","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"matthewken19"},"content":" stringSplit \u003d stringSplit[1].split(\"/to\");","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"matthewken19"},"content":" if (stringSplit.length \u003c 2) {","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Event /to cannot be empty!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"matthewken19"},"content":" String from \u003d stringSplit[0];","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"matthewken19"},"content":" String to \u003d stringSplit[1];","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"matthewken19"},"content":" // Create Task and add to list","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"matthewken19"},"content":" task \u003d new Event(description.trim(), from.trim(), to.trim());","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"matthewken19"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"matthewken19"},"content":" ui.addMessage(task.toString(), tasks.size());","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"matthewken19"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"matthewken19"},"content":" return false;","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"matthewken19":56}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"interface Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":" void execute(TaskList tasks, Ui ui) throws DukeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":" boolean isExit();","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"matthewken19":6}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":" LocalDate by;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":" Deadline(String desc, String by) {","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" super(desc);","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" this.by \u003d LocalDate.parse(by);","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" Deadline(String desc, boolean isDone, String by) {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":" super(desc, isDone);","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":" this.by \u003d LocalDate.parse(by);","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":" public String toStore() {","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":" // need to store status as well","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":" return \"D | \" + super.toStore() + \" | \" + by;","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"matthewken19"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"matthewken19"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"matthewken19"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"matthewken19":27}},{"path":"src/main/java/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"public class DeleteCommand implements Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":" int index;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":" DeleteCommand(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" public void execute(TaskList tasks, Ui ui) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" if (index + 1 \u003e tasks.size()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"You only have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":" tasks.remove(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":" ui.deleteMessage(task.toString(), tasks.size());","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":" return false;","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"matthewken19":20}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":"import java.io.File;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":"import java.util.function.ToDoubleFunction;","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":" private Storage storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":" private Ui ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"matthewken19"},"content":" public void run() {","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"matthewken19"},"content":" ui.open();","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"matthewken19"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"matthewken19"},"content":" while (!isExit) {","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"matthewken19"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"matthewken19"},"content":" String fullCommand \u003d ui.readCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"matthewken19"},"content":" ui.showLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"matthewken19"},"content":" Command c \u003d Parser.parseToCommand(fullCommand);","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"matthewken19"},"content":" c.execute(tasks, ui);","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"matthewken19"},"content":" ui.showLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"matthewken19"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"matthewken19"},"content":" } catch (DukeException ex) {","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"matthewken19"},"content":" System.out.println(ex.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"matthewken19"},"content":" ui.close();","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"matthewken19"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"matthewken19"},"content":" new Duke(\"./data/duke.txt\").run();","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"-":4,"matthewken19":39}},{"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":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":" private LocalDate start;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":" private LocalDate end;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" Event(String desc, String start, String end) {","lastModifiedDate":"2024-01-30"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" super(desc);","lastModifiedDate":"2024-01-30"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" this.start \u003d LocalDate.parse(start);","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":" this.end \u003d LocalDate.parse(end);","lastModifiedDate":"2024-02-06"},{"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":" Event(String desc, boolean isDone, String start, String end) {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":" super(desc, isDone);","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":" this.start \u003d LocalDate.parse(start);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":" this.end \u003d LocalDate.parse(end);","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":" public String toStore() {","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"matthewken19"},"content":" // need to store status as well","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"matthewken19"},"content":" return \"E | \" + super.toStore() + \" | \" + start + \" | \" + end;","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"matthewken19"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"matthewken19"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"matthewken19"},"content":" return \"[E]\" + super.toString() +","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"matthewken19"},"content":" \" (from: \" + start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) +","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"matthewken19"},"content":" \" to: \" + end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"matthewken19":31}},{"path":"src/main/java/ExitCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"class ExitCommand implements Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":" public void execute(TaskList tasks, Ui ui) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":" return true;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"matthewken19":9}},{"path":"src/main/java/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"class ListCommand implements Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":" public void execute(TaskList tasks, Ui ui) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":" ui.listMessage(tasks.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" return false;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"matthewken19":10}},{"path":"src/main/java/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"public class MarkCommand implements Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":" int index;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":" boolean isDone;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":" MarkCommand(int index, boolean isDone) {","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" public void execute(TaskList tasks, Ui ui) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":" if (index + 1 \u003e tasks.size()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"You only have \" + tasks.size() + \" tasks in the list.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":" if (isDone) {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":" task.mark();","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":" ui.markMessage(task.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":" task.unmark();","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":" ui.unmarkMessage(task.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"matthewken19"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"matthewken19"},"content":" return false;","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"matthewken19":27}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"class Parser {","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":" public static Task parseToTask(String line, String splitFormat) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":" Task task;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":" String[] stringSplit \u003d line.split(splitFormat);","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":" for (int i \u003d 0; i \u003c stringSplit.length; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":" stringSplit[i] \u003d stringSplit[i].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" boolean isDone \u003d Boolean.valueOf(stringSplit[1]);","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":" switch (stringSplit[0]) {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" case \"T\":","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":" task \u003d new ToDo(stringSplit[2], isDone);","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":" case \"D\":","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":" task \u003d new Deadline(stringSplit[2], isDone, stringSplit[3]);","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":" case \"E\":","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":" task \u003d new Event(stringSplit[2], isDone, stringSplit[3], stringSplit[4]);","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"matthewken19"},"content":" default:","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Corrupted Data!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"matthewken19"},"content":" return task;","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"matthewken19"},"content":" public static Command parseToCommand(String line) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"matthewken19"},"content":" String[] stringSplit \u003d line.split(\" \");","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"matthewken19"},"content":" String commandWord \u003d stringSplit[0].trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"matthewken19"},"content":" Command command;","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"matthewken19"},"content":" int index;","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"matthewken19"},"content":" switch (commandWord) {","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"matthewken19"},"content":" case \"list\":","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"matthewken19"},"content":" command \u003d new ListCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"matthewken19"},"content":" case \"bye\":","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"matthewken19"},"content":" command \u003d new ExitCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"matthewken19"},"content":" case \"mark\":","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"matthewken19"},"content":" // Exception handling and splitting the string","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"matthewken19"},"content":" if (stringSplit.length !\u003d 2) {","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Invalid input format!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"matthewken19"},"content":" index \u003d Integer.parseInt(stringSplit[1]) - 1;","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"matthewken19"},"content":" command \u003d new MarkCommand(index, true);","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"matthewken19"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"matthewken19"},"content":" // Exception handling and splitting the string","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"matthewken19"},"content":" if (stringSplit.length !\u003d 2) {","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Invalid input format!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"matthewken19"},"content":" index \u003d Integer.parseInt(stringSplit[1]) - 1;","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"matthewken19"},"content":" command \u003d new MarkCommand(index, false);","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"matthewken19"},"content":" case \"delete\":","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"matthewken19"},"content":" if (stringSplit.length \u003c 2) {","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"Invalid input format!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"matthewken19"},"content":" index \u003d Integer.parseInt(stringSplit[1]) - 1;","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"matthewken19"},"content":" command \u003d new DeleteCommand(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"matthewken19"},"content":" case \"event\":","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"matthewken19"},"content":" case \"todo\":","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"matthewken19"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"matthewken19"},"content":" String description \u003d line.split(commandWord + \" \")[1];","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"matthewken19"},"content":" command \u003d new AddCommand(commandWord, description);","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"matthewken19"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"matthewken19"},"content":" default:","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"matthewken19"},"content":" throw new DukeException(\"I\u0027m sorry, I don\u0027t know what that means.\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"matthewken19"},"content":" \"Please input valid commands (i.e. [command] [description]).\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"matthewken19"},"content":" \"You can choose from the following available commands:\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"matthewken19"},"content":" \" * todo [desc]\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"matthewken19"},"content":" \" * event [desc] /from [desc] /to [desc]\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"matthewken19"},"content":" \" * deadline [desc] /by [desc]\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"matthewken19"},"content":" \" * list\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"matthewken19"},"content":" \" * mark [number]\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"matthewken19"},"content":" \" * unmark [number]\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"matthewken19"},"content":" \" * delete [number]\");","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"matthewken19"},"content":" return command;","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"matthewken19":81}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":"import java.io.File;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":"class Storage {","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" private File file;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" Storage(String filePath) {","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":" this.file \u003d new File(filePath);","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":" Storage(File file) {","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":" this.file \u003d file;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":" ArrayList\u003cTask\u003e load() {","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"matthewken19"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"matthewken19"},"content":" // If file doesn\u0027t exist, create the parent directories and the file","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"matthewken19"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"matthewken19"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"matthewken19"},"content":" // Create parent directories","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"matthewken19"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"matthewken19"},"content":" // Create file","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"matthewken19"},"content":" file.createNewFile();","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"matthewken19"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"An error occurred while creating the file.\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"matthewken19"},"content":" \"Program will run without saved file.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"matthewken19"},"content":" return tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"matthewken19"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"matthewken19"},"content":" Scanner sc \u003d new Scanner(file);","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"matthewken19"},"content":" String lineRead;","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"matthewken19"},"content":" while (sc.hasNext()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"matthewken19"},"content":" lineRead \u003d sc.nextLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"matthewken19"},"content":" tasks.add(Parser.parseToTask(lineRead, \"\\\\|\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"matthewken19"},"content":" } catch (FileNotFoundException ex) {","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"An error occurred while opening the file\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"matthewken19"},"content":" \"Program will run without saved file.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"matthewken19"},"content":" return tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"matthewken19"},"content":" } catch (DukeException ex) {","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"An error occurred while reading the file.\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"matthewken19"},"content":" \"File may contain corrupted data!\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"matthewken19"},"content":" \"Program will run without saved file.\");","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"matthewken19"},"content":" return tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"matthewken19"},"content":" return tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"matthewken19"},"content":" void save(TaskList tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"matthewken19"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"matthewken19"},"content":" FileWriter fw \u003d new FileWriter(file);","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"matthewken19"},"content":" fw.write(tasks.toStore());","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"matthewken19"},"content":" fw.close();","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"matthewken19"},"content":" } catch (IOException ex) {","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"matthewken19"},"content":" System.out.println(\"Failed tot save progress!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"matthewken19":64}},{"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 boolean isDone;","lastModifiedDate":"2024-02-06"},{"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.isDone \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" Task(String desc, boolean isDone) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":" this.desc \u003d desc;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":" public void mark() {","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":" public void unmark() {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"matthewken19"},"content":" public String toStore() {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"matthewken19"},"content":" // need to store status as well","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"matthewken19"},"content":" return isDone + \" | \" + desc;","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"matthewken19"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"matthewken19"},"content":" String s \u003d \"[ ]\";","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"matthewken19"},"content":" if (isDone) {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"matthewken19"},"content":" s \u003d \"[X]\";","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"matthewken19"},"content":" return s + \" \" + desc;","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"matthewken19":35}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"import java.util.List;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":"public class TaskList {","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" TaskList(List\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" this.tasks \u003d new ArrayList\u003c\u003e(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" void add(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":" int size() {","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":" return tasks.size();","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":" void remove(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"matthewken19"},"content":" tasks.remove(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"matthewken19"},"content":" Task get(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"matthewken19"},"content":" return tasks.get(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"matthewken19"},"content":" String toStore() {","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"matthewken19"},"content":" String out \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"matthewken19"},"content":" for (Task task: tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"matthewken19"},"content":" out +\u003d task.toStore() + \"\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"matthewken19"},"content":" return out;","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"matthewken19"},"content":" public String toString() {","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"matthewken19"},"content":" int index \u003d 1;","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"matthewken19"},"content":" String out \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"matthewken19"},"content":" for (Task task: tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"matthewken19"},"content":" out +\u003d index + \".\" + task.toString() + \"\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"matthewken19"},"content":" index++;","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"matthewken19"},"content":" return out;","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"matthewken19":44}},{"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":" ToDo(String desc, boolean isDone) {","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" super(desc, isDone);","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":" public String toStore() {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" // need to store status as well","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":" return \"T | \" + super.toStore();","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":" public String toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-30"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"matthewken19":20}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"matthewken19"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"matthewken19"},"content":"public class Ui {","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"matthewken19"},"content":" static String LINE \u003d \"_____________________________________________\";","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"matthewken19"},"content":" public void open() {","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"matthewken19"},"content":" String greeting \u003d \"Hello! I\u0027m Donald.\\nWhat can I do for you?\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"matthewken19"},"content":" String out \u003d LINE + \"\\n\" + greeting + LINE + \"\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"matthewken19"},"content":" System.out.println(out);","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"matthewken19"},"content":" public void close() {","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"matthewken19"},"content":" String closing \u003d \"Bye. Hope to see you again soon!\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"matthewken19"},"content":" String out \u003d closing + LINE + \"\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"matthewken19"},"content":" System.out.println(out);","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"matthewken19"},"content":" String readCommand() {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"matthewken19"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"matthewken19"},"content":" return sc.nextLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"matthewken19"},"content":" void showLine() {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"matthewken19"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"matthewken19"},"content":" void addMessage(String str, int taskSize) {","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"matthewken19"},"content":" String out \u003d \"Got it. I\u0027ve added this task:\\n\" + str","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"matthewken19"},"content":" + \"\\nNow you have \" + taskSize + \" tasks in this list.\";","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"matthewken19"},"content":" System.out.println(out);","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"matthewken19"},"content":" void deleteMessage(String str, int taskSize) {","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"matthewken19"},"content":" String out \u003d \"Noted. I\u0027ve removed this task:\\n\" + str + \"\\nNow you have \" + taskSize + \" tasks in the list.\";","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"matthewken19"},"content":" System.out.println(out);","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"matthewken19"},"content":" void markMessage(String str) {","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"matthewken19"},"content":" String out \u003d \"Nice! I\u0027ve marked this task as done:\\n\" + str;","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"matthewken19"},"content":" System.out.println(out);","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"matthewken19"},"content":" void unmarkMessage(String str) {","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"matthewken19"},"content":" String out \u003d \"OK, I\u0027ve marked this task as not done yet:\\n\" + str;","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"matthewken19"},"content":" System.out.println(out);","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"matthewken19"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"matthewken19"},"content":" void listMessage(String str) {","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"matthewken19"},"content":" String out \u003d \"Here are the tasks in your list:\\n\" + str;","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"matthewken19"},"content":" System.out.print(out);","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"matthewken19"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"matthewken19"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"matthewken19":52}},{"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 bde87921..f53b2d5f 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}}},{"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":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}}]},{"date":"2024-02-04","commitResults":[{"hash":"c50b9d9cab601a45d97bd9d307007c3e1ce96756","isMergeCommit":false,"messageTitle":"indent left switch case to match the checkstyle","messageBody":"","tags":["Level1-6"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":108}}}]},{"date":"2024-02-06","commitResults":[{"hash":"fe454a9c0958d75535389b0b977cb7c6a3b935d1","isMergeCommit":false,"messageTitle":"added function to convert Task object to string that can be stored in text file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":6}}},{"hash":"465cb3de60bce9433b1c4106cd3762147f4a1568","isMergeCommit":false,"messageTitle":"added code for reading from text file, converting it to list of tasks and saving it back as a string in text file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":225,"deletions":116}}},{"hash":"ca594c2ebc60d25dbfcea98e1ced841ef9460b00","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level1-7"],"fileTypesAndContributionMap":{}},{"hash":"74fe79eaccab153d335596e46ed6c1b6c79c5270","isMergeCommit":false,"messageTitle":"changed variable type to LocalDate instead of String and changed toString() method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":15}}},{"hash":"f498d9aafc09738d88d2292414fc010e32ed7b69","isMergeCommit":false,"messageTitle":"changed some naming style of variables","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":40}}},{"hash":"64f428492cef59981d35330c9587c3444f5e6ec7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level1-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"matthewken19":{"java":383,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":13}},"authorContributionVariance":{"matthewken19":21361.479},"authorDisplayNameMap":{"matthewken19":"CS2103-T14-1 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":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}}]},{"date":"2024-02-04","commitResults":[{"hash":"c50b9d9cab601a45d97bd9d307007c3e1ce96756","isMergeCommit":false,"messageTitle":"indent left switch case to match the checkstyle","messageBody":"","tags":["Level1-6"],"fileTypesAndContributionMap":{"java":{"insertions":108,"deletions":108}}}]},{"date":"2024-02-06","commitResults":[{"hash":"fe454a9c0958d75535389b0b977cb7c6a3b935d1","isMergeCommit":false,"messageTitle":"added function to convert Task object to string that can be stored in text file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":6}}},{"hash":"465cb3de60bce9433b1c4106cd3762147f4a1568","isMergeCommit":false,"messageTitle":"added code for reading from text file, converting it to list of tasks and saving it back as a string in text file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":225,"deletions":116}}},{"hash":"ca594c2ebc60d25dbfcea98e1ced841ef9460b00","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level1-7"],"fileTypesAndContributionMap":{}},{"hash":"74fe79eaccab153d335596e46ed6c1b6c79c5270","isMergeCommit":false,"messageTitle":"changed variable type to LocalDate instead of String and changed toString() method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":15}}},{"hash":"f498d9aafc09738d88d2292414fc010e32ed7b69","isMergeCommit":false,"messageTitle":"changed some naming style of variables","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":40}}},{"hash":"64f428492cef59981d35330c9587c3444f5e6ec7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level1-8"],"fileTypesAndContributionMap":{}},{"hash":"6f52bc7b98f823c3bbe22391e4405f5411727f74","isMergeCommit":false,"messageTitle":"created Storage, TaskList, Ui class for more OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}}]},{"date":"2024-02-07","commitResults":[{"hash":"dd545d4de77fff9845408bc474ed9c96a2aacf5d","isMergeCommit":false,"messageTitle":"added command classes for OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":130,"deletions":0}}},{"hash":"8154f768b16c808ea57258b60f20c7db73e847af","isMergeCommit":false,"messageTitle":"added Storage, Parser, TaskList and Ui classes for OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":233,"deletions":12}}},{"hash":"5c840f4b9939ae3717d1f359a08966d28912abc2","isMergeCommit":false,"messageTitle":"changed Duke.java using Storage, Parser, Ui, TaskList class for OOP","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":254}}},{"hash":"6ac9907431486edcca7ea025a909e3f1e0a24f3e","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"matthewken19":{"java":527,"md":0,"fxml":0,"sh":0,"bat":2,"gradle":0,"txt":13}},"authorContributionVariance":{"matthewken19":38126.742},"authorDisplayNameMap":{"matthewken19":"CS2103-T14-1 MATT.. KEN"}} diff --git a/minreiseah_ip_master/authorship.json b/minreiseah_ip_master/authorship.json index f7b9c0dc..459d8023 100644 --- a/minreiseah_ip_master/authorship.json +++ b/minreiseah_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/CommandParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"public class CommandParser {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":" public static CommandType parseCommand(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":" String[] splitInput \u003d userInput.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":" String command \u003d splitInput[0];","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":" return CommandType.valueOf(command.toUpperCase());","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Invalid Command: \" + command);","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"minreiseah"},"content":" public static int parseTaskIndex(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"minreiseah"},"content":" String[] splitInput \u003d userInput.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":" int idx \u003d Integer.parseInt(splitInput[1]) - 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":" return idx;","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"minreiseah"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Please provide a task index\");","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"minreiseah"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Invalid task index: \" + splitInput[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"minreiseah"},"content":" public static String parseToDo(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"minreiseah"},"content":" String[] splitInput \u003d userInput.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"minreiseah"},"content":" String description \u003d splitInput[1];","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"minreiseah"},"content":" return description;","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"minreiseah"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Valid format: todo [description]\");","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"minreiseah"},"content":" public static String[] parseDeadline(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"minreiseah"},"content":" String[] splitInput \u003d userInput.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"minreiseah"},"content":" String[] deadlineDetails \u003d splitInput[1].split(\" /by \", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"minreiseah"},"content":" if (deadlineDetails.length !\u003d 2) {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Valid format: deadline [description] /by [duedate]\");","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"minreiseah"},"content":" return deadlineDetails;","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"minreiseah"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Valid format: deadline [description] /by [duedate]\");","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"minreiseah"},"content":" public static String[] parseEvent(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"minreiseah"},"content":" String[] splitInput \u003d userInput.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"minreiseah"},"content":" String[] eventDetails \u003d splitInput[1].split(\" /from \", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"minreiseah"},"content":" String description \u003d eventDetails[0];","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"minreiseah"},"content":" String[] timings \u003d eventDetails[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"minreiseah"},"content":" String start \u003d timings[0];","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"minreiseah"},"content":" String end \u003d timings[1];","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"minreiseah"},"content":" return new String[]{description, start, end};","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"minreiseah"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Valid format: event [description] /from [start] /to [end]\");","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"minreiseah":61}},{"path":"src/main/java/CommandType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"public enum CommandType {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":" LIST,","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":" MARK,","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":" UNMARK,","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":" DELETE,","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":" TODO,","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":" DEADLINE,","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":" EVENT,","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":" EXIT,","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":" BYE","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"minreiseah":11}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":" private String due;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":" public Deadline(String description, LocalDate due) {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":" this.due \u003d due.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"minreiseah"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"minreiseah"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"minreiseah"},"content":" return \"[D] \" + super.toString() + \" (by: \" + this.due + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"minreiseah":17}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":" private static TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":" private static PersistentStorageHandler persistentStorageHandler \u003d new PersistentStorageHandler();","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":" UserInterface.printWelcome();","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":" if (persistentStorageHandler.ensureTaskFileExists()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":" taskList \u003d persistentStorageHandler.readTaskFileFromDisc();","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"minreiseah"},"content":" int numTasks \u003d taskList.getNumberTasks();","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"minreiseah"},"content":" UserInterface.print(\"Read existing tasks (\" + numTasks + \") from disc\");","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"minreiseah"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"minreiseah"},"content":" UserInterface.showError(e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"minreiseah"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"minreiseah"},"content":" while(!isExit) {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"minreiseah"},"content":" String userInput \u003d UserInterface.getUserInput();","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"minreiseah"},"content":" CommandType commandType \u003d CommandParser.parseCommand(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"minreiseah"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"minreiseah"},"content":" case LIST:","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"minreiseah"},"content":" handleList();","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"minreiseah"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"minreiseah"},"content":" case MARK:","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"minreiseah"},"content":" handleMark(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"minreiseah"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"minreiseah"},"content":" case UNMARK:","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"minreiseah"},"content":" handleUnmark(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"minreiseah"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"minreiseah"},"content":" case DELETE:","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"minreiseah"},"content":" handleDelete(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"minreiseah"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"minreiseah"},"content":" case TODO:","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"minreiseah"},"content":" handleToDo(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"minreiseah"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"minreiseah"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"minreiseah"},"content":" handleDeadline(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"minreiseah"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"minreiseah"},"content":" case EVENT:","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"minreiseah"},"content":" handleEvent(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"minreiseah"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"minreiseah"},"content":" case EXIT:","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"minreiseah"},"content":" isExit \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"minreiseah"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"minreiseah"},"content":" case BYE:","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"minreiseah"},"content":" isExit \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"minreiseah"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"minreiseah"},"content":" default:","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Invalid Command\" + commandType);","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"minreiseah"},"content":" persistentStorageHandler.writeTaskFileToDisc(taskList);","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"minreiseah"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"minreiseah"},"content":" UserInterface.showError(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"minreiseah"},"content":" UserInterface.printExit();","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"minreiseah"},"content":" return;","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":82,"author":{"gitId":"minreiseah"},"content":" private static void handleList() throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":83,"author":{"gitId":"minreiseah"},"content":" taskList.printTasks();","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"minreiseah"},"content":" private static void handleMark(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"minreiseah"},"content":" int idx \u003d CommandParser.parseTaskIndex(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"minreiseah"},"content":" String response \u003d taskList.markTaskDone(idx);","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"minreiseah"},"content":" UserInterface.print(response);","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"minreiseah"},"content":" private static void handleUnmark(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"minreiseah"},"content":" int idx \u003d CommandParser.parseTaskIndex(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"minreiseah"},"content":" String response \u003d taskList.markTaskUndone(idx);","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"minreiseah"},"content":" UserInterface.print(response);","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"minreiseah"},"content":" private static void handleDelete(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"minreiseah"},"content":" int idx \u003d CommandParser.parseTaskIndex(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"minreiseah"},"content":" String response \u003d taskList.deleteTask(idx);","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"minreiseah"},"content":" int totalTasks \u003d taskList.getNumberTasks();","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"minreiseah"},"content":" UserInterface.printTaskDeleted(response, totalTasks);","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"minreiseah"},"content":" private static void handleToDo(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"minreiseah"},"content":" String description \u003d CommandParser.parseToDo(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"minreiseah"},"content":" String response \u003d taskList.addTask(new ToDo(description));","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"minreiseah"},"content":" int totalTasks \u003d taskList.getNumberTasks();","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"minreiseah"},"content":" UserInterface.printTaskAdded(response, totalTasks);","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"minreiseah"},"content":" private static void handleDeadline(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"minreiseah"},"content":" String[] deadlineDetails \u003d CommandParser.parseDeadline(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"minreiseah"},"content":" String description \u003d deadlineDetails[0];","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"minreiseah"},"content":" LocalDate due \u003d LocalDate.parse(deadlineDetails[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":117,"author":{"gitId":"minreiseah"},"content":" String response \u003d taskList.addTask(new Deadline(description, due));","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"minreiseah"},"content":" int totalTasks \u003d taskList.getNumberTasks();","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"minreiseah"},"content":" UserInterface.printTaskAdded(response, totalTasks);","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"minreiseah"},"content":" private static void handleEvent(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"minreiseah"},"content":" String[] eventDetails \u003d CommandParser.parseEvent(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"minreiseah"},"content":" String description \u003d eventDetails[0];","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"minreiseah"},"content":" LocalDate start \u003d LocalDate.parse(eventDetails[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":126,"author":{"gitId":"minreiseah"},"content":" LocalDate end \u003d LocalDate.parse(eventDetails[2]);","lastModifiedDate":"2024-02-06"},{"lineNumber":127,"author":{"gitId":"minreiseah"},"content":" String response \u003d taskList.addTask(new Event(description, start, end));","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"minreiseah"},"content":" int totalTasks \u003d taskList.getNumberTasks();","lastModifiedDate":"2024-01-26"},{"lineNumber":129,"author":{"gitId":"minreiseah"},"content":" UserInterface.printTaskAdded(response, totalTasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"minreiseah":127,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"class DukeException extends Exception {","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":" public DukeException(String msg) {","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":" super(msg);","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"minreiseah":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":" private String start;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":" private String end;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":" public Event(String description, LocalDate start, LocalDate end) {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":" this.start \u003d start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":" this.end \u003d end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"minreiseah"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":" return \"[E] \" + super.toString() + \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"minreiseah":19}},{"path":"src/main/java/PersistentStorageHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"import java.io.File;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"import java.io.FileInputStream;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":"import java.io.ObjectInputStream;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":"import java.io.ObjectOutputStream;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":"class PersistentStorageHandler {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":" private static final String TASKLIST_PATH \u003d \"./tasklist.dat\";","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"minreiseah"},"content":" public PersistentStorageHandler() { }","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":" public boolean ensureTaskFileExists() throws DukeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":" File file \u003d new File(TASKLIST_PATH);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"minreiseah"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"minreiseah"},"content":" file.createNewFile();","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"minreiseah"},"content":" return false;","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"minreiseah"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"minreiseah"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Failed to create persistent task file.\");","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"minreiseah"},"content":" return true;","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"minreiseah"},"content":" private TaskList decode(ObjectInputStream ois) throws DukeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"minreiseah"},"content":" TaskList taskList \u003d (TaskList) ois.readObject();","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"minreiseah"},"content":" return taskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"minreiseah"},"content":" } catch (Exception e) { // todo: look into what exceptions can occur here","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Failed to decode: \" + TASKLIST_PATH);","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"minreiseah"},"content":" public TaskList readTaskFileFromDisc() throws DukeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"minreiseah"},"content":" ObjectInputStream ois \u003d new ObjectInputStream(new FileInputStream(TASKLIST_PATH));","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"minreiseah"},"content":" return decode(ois);","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"minreiseah"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"minreiseah"},"content":" throw new TaskDataNotFoundException(\"File: \" + TASKLIST_PATH + \" not found.\\nWelcome to your new productivity journey.\");","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"minreiseah"},"content":" catch (Exception e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Failed to read file: \" + TASKLIST_PATH);","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"minreiseah"},"content":" public void writeTaskFileToDisc(TaskList taskList) throws DukeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"minreiseah"},"content":" ObjectOutputStream oos \u003d new ObjectOutputStream(new FileOutputStream(TASKLIST_PATH));","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"minreiseah"},"content":" oos.writeObject(taskList);","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"minreiseah"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"minreiseah"},"content":" System.out.println(\"\u003e\u003e: \" + e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Failed to write to file: \" + TASKLIST_PATH);","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"minreiseah":61}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"public abstract class Task implements Serializable {","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":" private String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":" public void markDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"minreiseah"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":" public void markUndone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"minreiseah"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"minreiseah"},"content":" return description;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"minreiseah"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"minreiseah"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"minreiseah"},"content":" return (isDone ? \"[X] \" : \"[ ] \") + description;","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"minreiseah":28}},{"path":"src/main/java/TaskDataNotFoundException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"class TaskDataNotFoundException extends DukeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":" public TaskDataNotFoundException(String msg) {","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":" super(msg);","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"minreiseah":5}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":"public class TaskList implements Serializable {","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":" public static final String INDENT \u003d \" \";","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":" public static final String LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":" public TaskList() {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"minreiseah"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":" public String addTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"minreiseah"},"content":" return task.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"minreiseah"},"content":" public String markTaskDone(int idx) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"minreiseah"},"content":" if (idx \u003e\u003d 0 \u0026\u0026 idx \u003c tasks.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"minreiseah"},"content":" tasks.get(idx).markDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"minreiseah"},"content":" return tasks.get(idx).toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"minreiseah"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Invalid task index: \" + idx);","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"minreiseah"},"content":" public String markTaskUndone(int idx) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"minreiseah"},"content":" if (idx \u003e\u003d 0 \u0026\u0026 idx \u003c tasks.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"minreiseah"},"content":" tasks.get(idx).markUndone();","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"minreiseah"},"content":" return tasks.get(idx).toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"minreiseah"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Invalid task index: \" + idx);","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"minreiseah"},"content":" public String deleteTask(int idx) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"minreiseah"},"content":" if (idx \u003e\u003d 0 \u0026\u0026 idx \u003c tasks.size()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"minreiseah"},"content":" String taskDescription \u003d tasks.get(idx).toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"minreiseah"},"content":" tasks.remove(idx);","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"minreiseah"},"content":" return taskDescription;","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"minreiseah"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Invalid task index: \" + idx);","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"minreiseah"},"content":" public int getNumberTasks() {","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"minreiseah"},"content":" return tasks.size();","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"minreiseah"},"content":" public void printTasks() {","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"minreiseah"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + \"no tasks\");","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"minreiseah"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"minreiseah"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"minreiseah"},"content":" System.out.println(\" \" + (i+1) + \". \" + tasks.get(i));","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE + \"\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"minreiseah":66}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"minreiseah":11}},{"path":"src/main/java/UserInterface.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"public class UserInterface {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":" public static final String INDENT \u003d \" \";","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":" public static final String LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":" private static final String WELCOME_MESSAGE \u003d String.join(","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":" \"\\n\",","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":" \"Hello! I\u0027m DEREK\",","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":" INDENT + \"What can I do for you?\"","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":" );","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"minreiseah"},"content":" private static final String EXIT_MESSAGE \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":" private static final Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"minreiseah"},"content":" public static String getUserInput() {","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"minreiseah"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"minreiseah"},"content":" public static void print(String msg) {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"minreiseah"},"content":" String[] lines \u003d msg.split(\"\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + lines[0]);","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"minreiseah"},"content":" for (int i \u003d 1; i \u003c lines.length; i++) {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + lines[i]);","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"minreiseah"},"content":" public static void printWelcome() {","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + WELCOME_MESSAGE);","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"minreiseah"},"content":" public static void printExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"minreiseah"},"content":" scanner.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + EXIT_MESSAGE);","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"minreiseah"},"content":" public static void printTaskAdded(String msg, int numTasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + \"Added Task:\");","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + \" \" + msg);","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + \"Now you have \" + numTasks + \" tasks in the list.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"minreiseah"},"content":" public static void printTaskDeleted(String msg, int numTasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + \"Deleted Task:\");","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + \" \" + msg);","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + \"Now you have \" + numTasks + \" tasks in the list.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"minreiseah"},"content":" public static void showError(String error) {","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"minreiseah"},"content":" String[] lines \u003d error.split(\"\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + \"Error: \" + lines[0]);","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"minreiseah"},"content":" for (int i \u003d 1; i \u003c lines.length; i++) {","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + lines[i]);","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"minreiseah":70}},{"path":"text-ui-test/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"# How to generate tests","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"To update test expected output, do:","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":"```bash","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":"cd ./text-ui-test","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":"rm EXPECTED.TXT","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":"cd ../src/main/java","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":"java Duke \u003c ../../../text-ui-test/input.txt \u003e ../../../text-ui-test/EXPECTED.txt","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":"```","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"minreiseah":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"todo 1","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":"deadline 2 /by 2022-03-01","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":"unmark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":"event 3 /from 2022-03-01 /to 2024-03-03","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":"mark 3","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":"unmark 3","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":"event 3 asd asdf as fd","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"minreiseah"},"content":"deadline 3 123123 123","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"minreiseah"},"content":"todo","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"minreiseah"},"content":"delete 3","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":"delete 0","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":"delete 12i391023","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"minreiseah"},"content":"unmark 01923","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"minreiseah"},"content":"unmark -123901i2","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"minreiseah"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"minreiseah":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":"minreiseah"},"content":"# delete file persistence output from previous run","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":"if [ -e \"./tasklist.dat\" ]","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":"then","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"minreiseah"},"content":" rm tasklist.dat","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"minreiseah"},"content":"fi","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":{"minreiseah":6,"-":38}}] +[{"path":"src/main/java/duke/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"package duke;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":"import duke.command.CommandParser;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":"import duke.command.CommandType;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":"import duke.commons.exceptions.DukeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":"import duke.storage.PersistentStorageHandler;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":"import duke.task.Deadline;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":"import duke.task.Event;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":"import duke.task.ToDo;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"minreiseah"},"content":"import duke.ui.UserInterface;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"minreiseah"},"content":"public class Main {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":" private static TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"minreiseah"},"content":" private static PersistentStorageHandler persistentStorageHandler \u003d new PersistentStorageHandler();","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"minreiseah"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"minreiseah"},"content":" UserInterface.printWelcome();","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"minreiseah"},"content":" if (persistentStorageHandler.ensureTaskFileExists()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"minreiseah"},"content":" taskList \u003d persistentStorageHandler.readTaskFileFromDisc();","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"minreiseah"},"content":" int numTasks \u003d taskList.getNumberTasks();","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"minreiseah"},"content":" UserInterface.print(\"Read existing tasks (\" + numTasks + \") from disc\");","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"minreiseah"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"minreiseah"},"content":" UserInterface.showError(e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"minreiseah"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"minreiseah"},"content":" while (!isExit) {","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"minreiseah"},"content":" String userInput \u003d UserInterface.getUserInput();","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"minreiseah"},"content":" CommandType commandType \u003d CommandParser.parseCommand(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"minreiseah"},"content":" switch (commandType) {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"minreiseah"},"content":" case LIST:","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"minreiseah"},"content":" handleList();","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"minreiseah"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"minreiseah"},"content":" case MARK:","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"minreiseah"},"content":" handleMark(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"minreiseah"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"minreiseah"},"content":" case UNMARK:","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"minreiseah"},"content":" handleUnmark(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"minreiseah"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"minreiseah"},"content":" case DELETE:","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"minreiseah"},"content":" handleDelete(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"minreiseah"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"minreiseah"},"content":" case TODO:","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"minreiseah"},"content":" handleToDo(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"minreiseah"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"minreiseah"},"content":" case DEADLINE:","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"minreiseah"},"content":" handleDeadline(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"minreiseah"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":66,"author":{"gitId":"minreiseah"},"content":" case EVENT:","lastModifiedDate":"2024-01-26"},{"lineNumber":67,"author":{"gitId":"minreiseah"},"content":" handleEvent(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":68,"author":{"gitId":"minreiseah"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":69,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"minreiseah"},"content":" case EXIT:","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"minreiseah"},"content":" isExit \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":72,"author":{"gitId":"minreiseah"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":73,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":74,"author":{"gitId":"minreiseah"},"content":" case BYE:","lastModifiedDate":"2024-01-26"},{"lineNumber":75,"author":{"gitId":"minreiseah"},"content":" isExit \u003d true;","lastModifiedDate":"2024-01-26"},{"lineNumber":76,"author":{"gitId":"minreiseah"},"content":" break;","lastModifiedDate":"2024-01-26"},{"lineNumber":77,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":78,"author":{"gitId":"minreiseah"},"content":" default:","lastModifiedDate":"2024-01-26"},{"lineNumber":79,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Invalid Command\" + commandType);","lastModifiedDate":"2024-01-26"},{"lineNumber":80,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":81,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"minreiseah"},"content":" persistentStorageHandler.writeTaskFileToDisc(taskList);","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"minreiseah"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":84,"author":{"gitId":"minreiseah"},"content":" UserInterface.showError(e.getMessage());","lastModifiedDate":"2024-01-26"},{"lineNumber":85,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":86,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":87,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":88,"author":{"gitId":"minreiseah"},"content":" UserInterface.printExit();","lastModifiedDate":"2024-01-26"},{"lineNumber":89,"author":{"gitId":"minreiseah"},"content":" return;","lastModifiedDate":"2024-01-26"},{"lineNumber":90,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":91,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":92,"author":{"gitId":"minreiseah"},"content":" private static void handleList() throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":93,"author":{"gitId":"minreiseah"},"content":" taskList.printTasks();","lastModifiedDate":"2024-01-26"},{"lineNumber":94,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":95,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":96,"author":{"gitId":"minreiseah"},"content":" private static void handleMark(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":97,"author":{"gitId":"minreiseah"},"content":" int idx \u003d CommandParser.parseTaskIndex(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":98,"author":{"gitId":"minreiseah"},"content":" String response \u003d taskList.markTaskDone(idx);","lastModifiedDate":"2024-01-26"},{"lineNumber":99,"author":{"gitId":"minreiseah"},"content":" UserInterface.print(response);","lastModifiedDate":"2024-01-26"},{"lineNumber":100,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":101,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":102,"author":{"gitId":"minreiseah"},"content":" private static void handleUnmark(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":103,"author":{"gitId":"minreiseah"},"content":" int idx \u003d CommandParser.parseTaskIndex(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":104,"author":{"gitId":"minreiseah"},"content":" String response \u003d taskList.markTaskUndone(idx);","lastModifiedDate":"2024-01-26"},{"lineNumber":105,"author":{"gitId":"minreiseah"},"content":" UserInterface.print(response);","lastModifiedDate":"2024-01-26"},{"lineNumber":106,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":107,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":108,"author":{"gitId":"minreiseah"},"content":" private static void handleDelete(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":109,"author":{"gitId":"minreiseah"},"content":" int idx \u003d CommandParser.parseTaskIndex(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":110,"author":{"gitId":"minreiseah"},"content":" String response \u003d taskList.deleteTask(idx);","lastModifiedDate":"2024-01-26"},{"lineNumber":111,"author":{"gitId":"minreiseah"},"content":" int totalTasks \u003d taskList.getNumberTasks();","lastModifiedDate":"2024-01-26"},{"lineNumber":112,"author":{"gitId":"minreiseah"},"content":" UserInterface.printTaskDeleted(response, totalTasks);","lastModifiedDate":"2024-01-26"},{"lineNumber":113,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":114,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":115,"author":{"gitId":"minreiseah"},"content":" private static void handleToDo(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":116,"author":{"gitId":"minreiseah"},"content":" String description \u003d CommandParser.parseToDo(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":117,"author":{"gitId":"minreiseah"},"content":" String response \u003d taskList.addTask(new ToDo(description));","lastModifiedDate":"2024-01-26"},{"lineNumber":118,"author":{"gitId":"minreiseah"},"content":" int totalTasks \u003d taskList.getNumberTasks();","lastModifiedDate":"2024-01-26"},{"lineNumber":119,"author":{"gitId":"minreiseah"},"content":" UserInterface.printTaskAdded(response, totalTasks);","lastModifiedDate":"2024-01-26"},{"lineNumber":120,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":121,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":122,"author":{"gitId":"minreiseah"},"content":" private static void handleDeadline(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":123,"author":{"gitId":"minreiseah"},"content":" String[] deadlineDetails \u003d CommandParser.parseDeadline(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":124,"author":{"gitId":"minreiseah"},"content":" String description \u003d deadlineDetails[0];","lastModifiedDate":"2024-01-26"},{"lineNumber":125,"author":{"gitId":"minreiseah"},"content":" LocalDate due \u003d LocalDate.parse(deadlineDetails[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":126,"author":{"gitId":"minreiseah"},"content":" String response \u003d taskList.addTask(new Deadline(description, due));","lastModifiedDate":"2024-01-26"},{"lineNumber":127,"author":{"gitId":"minreiseah"},"content":" int totalTasks \u003d taskList.getNumberTasks();","lastModifiedDate":"2024-01-26"},{"lineNumber":128,"author":{"gitId":"minreiseah"},"content":" UserInterface.printTaskAdded(response, totalTasks);","lastModifiedDate":"2024-01-26"},{"lineNumber":129,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":130,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":131,"author":{"gitId":"minreiseah"},"content":" private static void handleEvent(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":132,"author":{"gitId":"minreiseah"},"content":" String[] eventDetails \u003d CommandParser.parseEvent(userInput);","lastModifiedDate":"2024-01-26"},{"lineNumber":133,"author":{"gitId":"minreiseah"},"content":" String description \u003d eventDetails[0];","lastModifiedDate":"2024-01-26"},{"lineNumber":134,"author":{"gitId":"minreiseah"},"content":" LocalDate start \u003d LocalDate.parse(eventDetails[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":135,"author":{"gitId":"minreiseah"},"content":" LocalDate end \u003d LocalDate.parse(eventDetails[2]);","lastModifiedDate":"2024-02-06"},{"lineNumber":136,"author":{"gitId":"minreiseah"},"content":" String response \u003d taskList.addTask(new Event(description, start, end));","lastModifiedDate":"2024-01-26"},{"lineNumber":137,"author":{"gitId":"minreiseah"},"content":" int totalTasks \u003d taskList.getNumberTasks();","lastModifiedDate":"2024-01-26"},{"lineNumber":138,"author":{"gitId":"minreiseah"},"content":" UserInterface.printTaskAdded(response, totalTasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":139,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":140,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"minreiseah":140}},{"path":"src/main/java/duke/command/CommandParser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"package duke.command;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"import duke.commons.exceptions.DukeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":"public class CommandParser {","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":" public static CommandType parseCommand(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":" String[] splitInput \u003d userInput.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":" String command \u003d splitInput[0];","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":" return CommandType.valueOf(command.toUpperCase());","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Invalid Command: \" + command);","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":" public static int parseTaskIndex(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"minreiseah"},"content":" String[] splitInput \u003d userInput.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"minreiseah"},"content":" int idx \u003d Integer.parseInt(splitInput[1]) - 1;","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"minreiseah"},"content":" return idx;","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"minreiseah"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Please provide a task index\");","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"minreiseah"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Invalid task index: \" + splitInput[1]);","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":28,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":29,"author":{"gitId":"minreiseah"},"content":" public static String parseToDo(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":30,"author":{"gitId":"minreiseah"},"content":" String[] splitInput \u003d userInput.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"minreiseah"},"content":" String description \u003d splitInput[1];","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"minreiseah"},"content":" return description;","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"minreiseah"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Valid format: todo [description]\");","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"minreiseah"},"content":" public static String[] parseDeadline(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"minreiseah"},"content":" String[] splitInput \u003d userInput.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"minreiseah"},"content":" String[] deadlineDetails \u003d splitInput[1].split(\" /by \", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"minreiseah"},"content":" if (deadlineDetails.length !\u003d 2) {","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Valid format: deadline [description] /by [duedate]\");","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"minreiseah"},"content":" return deadlineDetails;","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"minreiseah"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Valid format: deadline [description] /by [duedate]\");","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"minreiseah"},"content":" public static String[] parseEvent(String userInput) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"minreiseah"},"content":" String[] splitInput \u003d userInput.split(\"\\\\s+\", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"minreiseah"},"content":" String[] eventDetails \u003d splitInput[1].split(\" /from \", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"minreiseah"},"content":" String description \u003d eventDetails[0];","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"minreiseah"},"content":" String[] timings \u003d eventDetails[1].split(\" /to \", 2);","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"minreiseah"},"content":" String start \u003d timings[0];","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"minreiseah"},"content":" String end \u003d timings[1];","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"minreiseah"},"content":" return new String[]{description, start, end};","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"minreiseah"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Valid format: event [description] /from [start] /to [end]\");","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":65,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"minreiseah":65}},{"path":"src/main/java/duke/command/CommandType.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"package duke.command;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"public enum CommandType {","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":" LIST,","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":" MARK,","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":" UNMARK,","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":" DELETE,","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":" TODO,","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":" DEADLINE,","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":" EVENT,","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":" EXIT,","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":" BYE","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"minreiseah":13}},{"path":"src/main/java/duke/commons/exceptions/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"package duke.commons.exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":" public DukeException(String msg) {","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":" super(msg);","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"minreiseah":7}},{"path":"src/main/java/duke/commons/exceptions/TaskDataNotFoundException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"package duke.commons.exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"public class TaskDataNotFoundException extends DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":" public TaskDataNotFoundException(String msg) {","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":" super(msg);","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"minreiseah":7}},{"path":"src/main/java/duke/storage/PersistentStorageHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"package duke.storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"import java.io.File;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":"import java.io.FileInputStream;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":"import java.io.ObjectInputStream;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":"import java.io.ObjectOutputStream;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":"import duke.commons.exceptions.DukeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":"import duke.commons.exceptions.TaskDataNotFoundException;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"minreiseah"},"content":"import duke.task.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"minreiseah"},"content":"public class PersistentStorageHandler {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":" private static final String TASKLIST_PATH \u003d \"./tasklist.dat\";","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"minreiseah"},"content":" public PersistentStorageHandler() { }","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"minreiseah"},"content":" public boolean ensureTaskFileExists() throws DukeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"minreiseah"},"content":" File file \u003d new File(TASKLIST_PATH);","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"minreiseah"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"minreiseah"},"content":" file.createNewFile();","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"minreiseah"},"content":" return false;","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"minreiseah"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"minreiseah"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Failed to create persistent task file.\");","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"minreiseah"},"content":" return true;","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"minreiseah"},"content":" private TaskList decode(ObjectInputStream ois) throws DukeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"minreiseah"},"content":" TaskList taskList \u003d (TaskList) ois.readObject();","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"minreiseah"},"content":" return taskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"minreiseah"},"content":" } catch (Exception e) { // todo: look into what exceptions can occur here","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Failed to decode: \" + TASKLIST_PATH);","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"minreiseah"},"content":" public TaskList readTaskFileFromDisc() throws DukeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"minreiseah"},"content":" ObjectInputStream ois \u003d new ObjectInputStream(new FileInputStream(TASKLIST_PATH));","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"minreiseah"},"content":" return decode(ois);","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"minreiseah"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"minreiseah"},"content":" throw new TaskDataNotFoundException(\"File: \" + TASKLIST_PATH + \" not found.\\nWelcome to your new productivity journey.\");","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"minreiseah"},"content":" catch (Exception e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Failed to read file: \" + TASKLIST_PATH);","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"minreiseah"},"content":" public void writeTaskFileToDisc(TaskList taskList) throws DukeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"minreiseah"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"minreiseah"},"content":" ObjectOutputStream oos \u003d new ObjectOutputStream(new FileOutputStream(TASKLIST_PATH));","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"minreiseah"},"content":" oos.writeObject(taskList);","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"minreiseah"},"content":" oos.close();","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"minreiseah"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"minreiseah"},"content":" System.out.println(\"\u003e\u003e: \" + e.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Failed to write to file: \" + TASKLIST_PATH);","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"minreiseah":67}},{"path":"src/main/java/duke/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"package duke.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":" private String due;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":" public Deadline(String description, LocalDate due) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":" this.due \u003d due.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"minreiseah"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":" return \"[D] \" + super.toString() + \" (by: \" + this.due + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"minreiseah":19}},{"path":"src/main/java/duke/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"package duke.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":" private String start;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":" private String end;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":" public Event(String description, LocalDate start, LocalDate end) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":" this.start \u003d start.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"minreiseah"},"content":" this.end \u003d end.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"minreiseah"},"content":" return \"[E] \" + super.toString() + \" (from: \" + this.start + \" to: \" + this.end + \")\";","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"minreiseah":20}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"package duke.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":"public abstract class Task implements Serializable {","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":" private String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"minreiseah"},"content":" public void markDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"minreiseah"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":" public void markUndone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"minreiseah"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"minreiseah"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"minreiseah"},"content":" return description;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"minreiseah"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"minreiseah"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"minreiseah"},"content":" return (isDone ? \"[X] \" : \"[ ] \") + description;","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"minreiseah":29}},{"path":"src/main/java/duke/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"package duke.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":"import duke.commons.exceptions.DukeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":"public class TaskList implements Serializable {","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":" public static final String INDENT \u003d \" \";","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"minreiseah"},"content":" public static final String LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"minreiseah"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":" public TaskList() {","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"minreiseah"},"content":" this.tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"minreiseah"},"content":" public String addTask(Task task) {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"minreiseah"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"minreiseah"},"content":" return task.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"minreiseah"},"content":" public String markTaskDone(int idx) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":27,"author":{"gitId":"minreiseah"},"content":" if (idx \u003e\u003d 0 \u0026\u0026 idx \u003c tasks.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"minreiseah"},"content":" tasks.get(idx).markDone();","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"minreiseah"},"content":" return tasks.get(idx).toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"minreiseah"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Invalid task index: \" + idx);","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"minreiseah"},"content":" public String markTaskUndone(int idx) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"minreiseah"},"content":" if (idx \u003e\u003d 0 \u0026\u0026 idx \u003c tasks.size()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"minreiseah"},"content":" tasks.get(idx).markUndone();","lastModifiedDate":"2024-01-25"},{"lineNumber":38,"author":{"gitId":"minreiseah"},"content":" return tasks.get(idx).toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"minreiseah"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Invalid task index: \" + idx);","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"minreiseah"},"content":" public String deleteTask(int idx) throws DukeException {","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"minreiseah"},"content":" if (idx \u003e\u003d 0 \u0026\u0026 idx \u003c tasks.size()) {","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"minreiseah"},"content":" String taskDescription \u003d tasks.get(idx).toString();","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"minreiseah"},"content":" tasks.remove(idx);","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"minreiseah"},"content":" return taskDescription;","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"minreiseah"},"content":" } else {","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"minreiseah"},"content":" throw new DukeException(\"Invalid task index: \" + idx);","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"minreiseah"},"content":" public int getNumberTasks() {","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"minreiseah"},"content":" return tasks.size();","lastModifiedDate":"2024-01-25"},{"lineNumber":56,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"minreiseah"},"content":" public void printTasks() {","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":61,"author":{"gitId":"minreiseah"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + \"no tasks\");","lastModifiedDate":"2024-01-25"},{"lineNumber":63,"author":{"gitId":"minreiseah"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":64,"author":{"gitId":"minreiseah"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":65,"author":{"gitId":"minreiseah"},"content":" System.out.println(\" \" + (i+1) + \". \" + tasks.get(i));","lastModifiedDate":"2024-01-25"},{"lineNumber":66,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":67,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":68,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE + \"\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":70,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":71,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"minreiseah":71}},{"path":"src/main/java/duke/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"package duke.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":" public ToDo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":" return \"[T] \" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"minreiseah":12}},{"path":"src/main/java/duke/ui/UserInterface.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"package duke.ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":"public class UserInterface {","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":" public static final String INDENT \u003d \" \";","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":" public static final String LINE \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":" private static final String WELCOME_MESSAGE \u003d String.join(","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":" \"\\n\",","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":" \"Hello! I\u0027m DEREK\",","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":" INDENT + \"What can I do for you?\"","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"minreiseah"},"content":" );","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"minreiseah"},"content":" private static final String EXIT_MESSAGE \u003d \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":" private static final Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"minreiseah"},"content":" public static String getUserInput() {","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"minreiseah"},"content":" return scanner.nextLine();","lastModifiedDate":"2024-01-26"},{"lineNumber":21,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":22,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"minreiseah"},"content":" public static void print(String msg) {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"minreiseah"},"content":" String[] lines \u003d msg.split(\"\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + lines[0]);","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"minreiseah"},"content":" for (int i \u003d 1; i \u003c lines.length; i++) {","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + lines[i]);","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":31,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":32,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":33,"author":{"gitId":"minreiseah"},"content":" public static void printWelcome() {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2024-01-26"},{"lineNumber":35,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + WELCOME_MESSAGE);","lastModifiedDate":"2024-01-26"},{"lineNumber":36,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":37,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":38,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":39,"author":{"gitId":"minreiseah"},"content":" public static void printExit() {","lastModifiedDate":"2024-01-26"},{"lineNumber":40,"author":{"gitId":"minreiseah"},"content":" scanner.close();","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + EXIT_MESSAGE);","lastModifiedDate":"2024-01-26"},{"lineNumber":43,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":44,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":46,"author":{"gitId":"minreiseah"},"content":" public static void printTaskAdded(String msg, int numTasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":47,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2024-01-26"},{"lineNumber":48,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + \"Added Task:\");","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + \" \" + msg);","lastModifiedDate":"2024-01-26"},{"lineNumber":50,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + \"Now you have \" + numTasks + \" tasks in the list.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":51,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":54,"author":{"gitId":"minreiseah"},"content":" public static void printTaskDeleted(String msg, int numTasks) {","lastModifiedDate":"2024-01-26"},{"lineNumber":55,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2024-01-26"},{"lineNumber":56,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + \"Deleted Task:\");","lastModifiedDate":"2024-01-26"},{"lineNumber":57,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + \" \" + msg);","lastModifiedDate":"2024-01-26"},{"lineNumber":58,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + \"Now you have \" + numTasks + \" tasks in the list.\");","lastModifiedDate":"2024-01-26"},{"lineNumber":59,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":61,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":62,"author":{"gitId":"minreiseah"},"content":" public static void showError(String error) {","lastModifiedDate":"2024-01-26"},{"lineNumber":63,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE);","lastModifiedDate":"2024-01-26"},{"lineNumber":64,"author":{"gitId":"minreiseah"},"content":" String[] lines \u003d error.split(\"\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + \"Error: \" + lines[0]);","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"minreiseah"},"content":" for (int i \u003d 1; i \u003c lines.length; i++) {","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + lines[i]);","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"minreiseah"},"content":" System.out.println(INDENT + LINE + \"\\n\");","lastModifiedDate":"2024-01-26"},{"lineNumber":70,"author":{"gitId":"minreiseah"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":71,"author":{"gitId":"minreiseah"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"minreiseah":71}},{"path":"text-ui-test/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"# How to generate tests","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"To update test expected output, do:","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":"```bash","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":"cd ./text-ui-test","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":"rm EXPECTED.TXT","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":"cd ../src/main/java","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":"java Duke \u003c ../../../text-ui-test/input.txt \u003e ../../../text-ui-test/EXPECTED.txt","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":"```","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"minreiseah":10}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"minreiseah"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":2,"author":{"gitId":"minreiseah"},"content":"todo 1","lastModifiedDate":"2024-01-26"},{"lineNumber":3,"author":{"gitId":"minreiseah"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":4,"author":{"gitId":"minreiseah"},"content":"mark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"minreiseah"},"content":"deadline 2 /by 2022-03-01","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"minreiseah"},"content":"unmark 1","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"minreiseah"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"minreiseah"},"content":"event 3 /from 2022-03-01 /to 2024-03-03","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"minreiseah"},"content":"mark 3","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"minreiseah"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"minreiseah"},"content":"unmark 3","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"minreiseah"},"content":"event 3 asd asdf as fd","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"minreiseah"},"content":"deadline 3 123123 123","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"minreiseah"},"content":"todo","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"minreiseah"},"content":"delete 3","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":"delete 0","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":"delete 12i391023","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"minreiseah"},"content":"unmark 01923","lastModifiedDate":"2024-01-26"},{"lineNumber":19,"author":{"gitId":"minreiseah"},"content":"unmark -123901i2","lastModifiedDate":"2024-01-26"},{"lineNumber":20,"author":{"gitId":"minreiseah"},"content":"bye","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"minreiseah":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":"minreiseah"},"content":"# delete file persistence output from previous run","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"minreiseah"},"content":"if [ -e \"./tasklist.dat\" ]","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"minreiseah"},"content":"then","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"minreiseah"},"content":" rm tasklist.dat","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"minreiseah"},"content":"fi","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"minreiseah"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"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":{"minreiseah":6,"-":38}}] diff --git a/minreiseah_ip_master/commits.json b/minreiseah_ip_master/commits.json index 8dc51504..e97f2cac 100644 --- a/minreiseah_ip_master/commits.json +++ b/minreiseah_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"minreiseah":[{"date":"2024-01-25","commitResults":[{"hash":"02315a77237b8caae876670f7a1bc60927981c53","isMergeCommit":false,"messageTitle":"Rename chatbot to Derek","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":10}}},{"hash":"b3c6a5f8bec45e677ab4588db69350962dbfb5b9","isMergeCommit":false,"messageTitle":"Echo user input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":7}}},{"hash":"e6bd7c6a292e7d3c7abd1e233502a8f4df1ee96f","isMergeCommit":false,"messageTitle":"Feat: Add, List tasks","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":28}}},{"hash":"c3ee96ad561862d02d05074f227691603f21a12a","isMergeCommit":false,"messageTitle":"Feat: Mark tasks as done/undone","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":3}}},{"hash":"71ef581ea48c6d79e63d8a50e3ec8d2fbeba928b","isMergeCommit":false,"messageTitle":"Chore: Clean message output to console","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":38}}},{"hash":"ca65f749b0e1dec6cea0d0a48c65c3f73f77d25b","isMergeCommit":false,"messageTitle":"Feat: Add ToDo, Deadline, Event task types","messageBody":"","tags":["Level-4","A-Inheritence"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":7}}}]},{"date":"2024-01-26","commitResults":[{"hash":"ad8313c1629e09399c918a6d3073030e5b86cab3","isMergeCommit":false,"messageTitle":"Refactor: user interface, command parser, exception, enums","messageBody":"","tags":["Level-5","A-Exceptions","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":242,"deletions":118}}},{"hash":"e05b8ace8c91d25646daf992a4f710a03796f789","isMergeCommit":false,"messageTitle":"Test: Add automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":0,"deletions":0}}},{"hash":"7e8d8e1a9fc498489a767f16e155e52efd4ed4d4","isMergeCommit":false,"messageTitle":"Feat: Add Delete Task","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":30,"deletions":0}}}]},{"date":"2024-02-01","commitResults":[{"hash":"a3a83e305c0d11448b72b77acca27c1a259e112c","isMergeCommit":false,"messageTitle":"Add persistent task file storage","messageBody":"- TaskList was not persisted before\n- TaskList and Task now implement Serializable\n- Tasks serialized to tasklist.dat\n","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":8}}},{"hash":"08f46c4fc93ce99fdf5fcf05e62a424e494c9b6c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027 for Task Persistence","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"339c858b32fa5c22064a890c7e204384a0ba3493","isMergeCommit":false,"messageTitle":"Feat: Add datetime parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":8}}},{"hash":"69c4676f5a21bd7ff18e1139e796d481fadf44bb","isMergeCommit":false,"messageTitle":"Test: Update datetime testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"sh":{"insertions":7,"deletions":1},"md":{"insertions":10,"deletions":0}}},{"hash":"ec125371f180dbcab0ba1bd548a34c3b1f45bde0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"minreiseah":{"java":481,"md":10,"fxml":0,"sh":6,"bat":0,"gradle":0,"txt":20}},"authorContributionVariance":{"minreiseah":15748.594},"authorDisplayNameMap":{"minreiseah":"CS2103T-T10-2 SEAH..-REI"}} +{"authorDailyContributionsMap":{"minreiseah":[{"date":"2024-01-25","commitResults":[{"hash":"02315a77237b8caae876670f7a1bc60927981c53","isMergeCommit":false,"messageTitle":"Rename chatbot to Derek","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":10}}},{"hash":"b3c6a5f8bec45e677ab4588db69350962dbfb5b9","isMergeCommit":false,"messageTitle":"Echo user input","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":37,"deletions":7}}},{"hash":"e6bd7c6a292e7d3c7abd1e233502a8f4df1ee96f","isMergeCommit":false,"messageTitle":"Feat: Add, List tasks","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":81,"deletions":28}}},{"hash":"c3ee96ad561862d02d05074f227691603f21a12a","isMergeCommit":false,"messageTitle":"Feat: Mark tasks as done/undone","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":3}}},{"hash":"71ef581ea48c6d79e63d8a50e3ec8d2fbeba928b","isMergeCommit":false,"messageTitle":"Chore: Clean message output to console","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":38}}},{"hash":"ca65f749b0e1dec6cea0d0a48c65c3f73f77d25b","isMergeCommit":false,"messageTitle":"Feat: Add ToDo, Deadline, Event task types","messageBody":"","tags":["Level-4","A-Inheritence"],"fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":7}}}]},{"date":"2024-01-26","commitResults":[{"hash":"ad8313c1629e09399c918a6d3073030e5b86cab3","isMergeCommit":false,"messageTitle":"Refactor: user interface, command parser, exception, enums","messageBody":"","tags":["Level-5","A-Exceptions","A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":242,"deletions":118}}},{"hash":"e05b8ace8c91d25646daf992a4f710a03796f789","isMergeCommit":false,"messageTitle":"Test: Add automated testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":15,"deletions":0},"java":{"insertions":1,"deletions":1},"sh":{"insertions":0,"deletions":0}}},{"hash":"7e8d8e1a9fc498489a767f16e155e52efd4ed4d4","isMergeCommit":false,"messageTitle":"Feat: Add Delete Task","messageBody":"","tags":["Level-6","A-Collections"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":30,"deletions":0}}}]},{"date":"2024-02-01","commitResults":[{"hash":"a3a83e305c0d11448b72b77acca27c1a259e112c","isMergeCommit":false,"messageTitle":"Add persistent task file storage","messageBody":"- TaskList was not persisted before\n- TaskList and Task now implement Serializable\n- Tasks serialized to tasklist.dat\n","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":8}}},{"hash":"08f46c4fc93ce99fdf5fcf05e62a424e494c9b6c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-level-7\u0027 for Task Persistence","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-06","commitResults":[{"hash":"339c858b32fa5c22064a890c7e204384a0ba3493","isMergeCommit":false,"messageTitle":"Feat: Add datetime parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":8}}},{"hash":"69c4676f5a21bd7ff18e1139e796d481fadf44bb","isMergeCommit":false,"messageTitle":"Test: Update datetime testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"sh":{"insertions":7,"deletions":1},"md":{"insertions":10,"deletions":0}}},{"hash":"ec125371f180dbcab0ba1bd548a34c3b1f45bde0","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-07","commitResults":[{"hash":"4dfc83508cc43e2f566af6466dc417064a51e289","isMergeCommit":false,"messageTitle":"Refactor: Add packages","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":36}}},{"hash":"b7abd99ec79097d9e8ea402b44a8fae12508477b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"minreiseah":{"java":521,"md":10,"fxml":0,"sh":6,"bat":0,"gradle":0,"txt":20}},"authorContributionVariance":{"minreiseah":15114.349},"authorDisplayNameMap":{"minreiseah":"CS2103T-T10-2 SEAH..-REI"}} diff --git a/moguries_ip_master/authorship.json b/moguries_ip_master/authorship.json index 810f3e13..642e1d03 100644 --- a/moguries_ip_master/authorship.json +++ b/moguries_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"T | 1 | buy bday present","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"D | 1 | watch lecture 3 | Jan 31 2024 6:00pm","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"E | 0 | tchouk ivp | Feb 03 2024 2:00pm | Feb 03 2024 7:00pm","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"D | 0 | do tmrs tut | Feb 02 2024 12:00am","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"T | 1 | buy fatnoms food","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"D | 1 | feed fatnom | Mar 07 2024 12:00am","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"D | 0 | return book | Apr 05 2024 6:35pm","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"E | 0 | fatnoms birthday party | Apr 01 2024 5:30pm | Apr 01 2024 11:15pm","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"moguries":8}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":" * Encapsulates the data and behaviour of a Deadline task.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":" * @author Huang Zhuoyan, Celeste","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":" * @version CS2103T AY24/25 Semester 1, G07","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":" private static DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy h:mma\");","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" * Constructs a new Deadline task with the given name and deadline.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" * @param name The name of the Deadline task.","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" * @param time The LocalDateTime object containing the deadline.","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" public Deadline(String name, LocalDateTime time) {","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" super(name);","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" this.deadline \u003d time;","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" * Formats the deadline of the task according to a standard format.","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" * @param time The LocalDateTime object to be formatted.","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" * @return The formatted deadline, as a String.","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" public String deadlineFormatter(LocalDateTime time) {","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" return time.format(formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" public String printTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" return \"[D]\" + super.printTask() + \" (by: \" + deadlineFormatter(this.deadline) + \")\";","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" public String saveTask() {","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" return \"D | \" + super.saveTask() + \" | \" + deadlineFormatter(this.deadline);","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"moguries":44}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":" * Encapsulates the data and behaviour of the chatbot.","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" * @author Huang Zhuoyan, Celeste","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":" * @version CS2103T AY24/25 Semester 1, G07","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" private static final String NAME \u003d \"Fatnom\";","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" private static Storage storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" private static final int LINE_LENGTH \u003d 60;","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" private static DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" * Creates a line, in the form of a String.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" * @return The line.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" public static String createLine() {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" String line \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" for (int i \u003d 0; i \u003c LINE_LENGTH; i++) {","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" line +\u003d \"_\";","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" return line;","lastModifiedDate":"2024-01-28"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" * Prints a line for UI.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" public static void printLine() {","lastModifiedDate":"2024-01-25"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" for (int i \u003d 0; i \u003c LINE_LENGTH; i++) {","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" System.out.print(\"_\");","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" System.out.print(\"\\n\");","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" * Prints a message bound by 2 lines for UI.","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" * @param message The message to be printed.","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" public static void printMessage(String message) {","lastModifiedDate":"2024-01-25"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" Duke.printLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" System.out.println(message);","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" Duke.printLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" * Prints the message for when a task has successfully been added.","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" * @param taskMessage The message to be printed.","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":" * @param totalNumOfTasks The total number of tasks in the task list after the new task has been added.","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":" public static void printAddedTask(String taskMessage, int totalNumOfTasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" String addedTaskMessage \u003d \"got it!! i\u0027ve added this task:\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":" + \" \" + taskMessage + \"\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" + \"you now have \" + totalNumOfTasks + \" tasks in the task list!\";","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":" Duke.printLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":" System.out.println(addedTaskMessage);","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":" Duke.printLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"moguries"},"content":" * Prints the message for when a task has successfully been deleted.","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":" * @param taskMessage The message to be printed.","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"moguries"},"content":" * @param remainingNumOfTasks The remaining number of tasks in the task list after the task has been deleted.","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":" public static void printDeletedTask(String taskMessage, int remainingNumOfTasks) {","lastModifiedDate":"2024-01-28"},{"lineNumber":76,"author":{"gitId":"moguries"},"content":" String deletedTaskMessage \u003d \"got it!! i\u0027ve deleted this task:\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":" + \" \" + taskMessage + \"\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"moguries"},"content":" + \"you now have \" + remainingNumOfTasks + \" tasks left in the task list!\";","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"moguries"},"content":" Duke.printLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":80,"author":{"gitId":"moguries"},"content":" System.out.println(deletedTaskMessage);","lastModifiedDate":"2024-01-28"},{"lineNumber":81,"author":{"gitId":"moguries"},"content":" Duke.printLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":82,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":83,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":84,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"moguries"},"content":" * Displays a welcome message and loads the save file (if any).","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"moguries"},"content":" * Then, executes the commands inputted by the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"moguries"},"content":" * @param args Command line arguments.","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":91,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":92,"author":{"gitId":"moguries"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":93,"author":{"gitId":"moguries"},"content":" ArrayList\u003cTask\u003e taskList\u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-25"},{"lineNumber":94,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":95,"author":{"gitId":"moguries"},"content":" String welcomeMessage \u003d \"hello! i\u0027m \" + NAME + \"!!!\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"moguries"},"content":" + \"i\u0027m here to manage your tasklist!\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"moguries"},"content":" + \"what can i do for you?\";","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"moguries"},"content":" Duke.printMessage(welcomeMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":99,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"moguries"},"content":" Duke.storage \u003d new Storage();","lastModifiedDate":"2024-02-01"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":" taskList \u003d Storage.loadData();","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"moguries"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"moguries"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":106,"author":{"gitId":"moguries"},"content":" while (true) {","lastModifiedDate":"2024-01-25"},{"lineNumber":107,"author":{"gitId":"moguries"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":108,"author":{"gitId":"moguries"},"content":" String[] inputTokens \u003d input.split(\" \");","lastModifiedDate":"2024-01-28"},{"lineNumber":109,"author":{"gitId":"moguries"},"content":" String[] deadlineFormatChecker \u003d input.split(\"/by\");","lastModifiedDate":"2024-02-01"},{"lineNumber":110,"author":{"gitId":"moguries"},"content":" String[] eventFormatChecker \u003d input.split(\"/from\");","lastModifiedDate":"2024-02-01"},{"lineNumber":111,"author":{"gitId":"moguries"},"content":" String command \u003d inputTokens[0];","lastModifiedDate":"2024-01-28"},{"lineNumber":112,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":113,"author":{"gitId":"moguries"},"content":" //command: bye","lastModifiedDate":"2024-01-28"},{"lineNumber":114,"author":{"gitId":"moguries"},"content":" if (command.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":115,"author":{"gitId":"moguries"},"content":" Duke.printMessage(\"bye!! come visit me again! :D\");","lastModifiedDate":"2024-01-28"},{"lineNumber":116,"author":{"gitId":"moguries"},"content":" break;","lastModifiedDate":"2024-01-25"},{"lineNumber":117,"author":{"gitId":"moguries"},"content":" //command: list","lastModifiedDate":"2024-01-28"},{"lineNumber":118,"author":{"gitId":"moguries"},"content":" } else if (command.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":119,"author":{"gitId":"moguries"},"content":" String listMessage \u003d \"alright! here is your task list:\\n\";","lastModifiedDate":"2024-01-28"},{"lineNumber":120,"author":{"gitId":"moguries"},"content":" if (taskList.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":121,"author":{"gitId":"moguries"},"content":" listMessage +\u003d \".\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"moguries"},"content":" + \".\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"moguries"},"content":" + \".\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"moguries"},"content":" + \".\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":125,"author":{"gitId":"moguries"},"content":" + \".\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"moguries"},"content":" + \".\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":127,"author":{"gitId":"moguries"},"content":" + \"SURPRISE!! nothing at all! what a good life!\";","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":129,"author":{"gitId":"moguries"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2024-01-25"},{"lineNumber":130,"author":{"gitId":"moguries"},"content":" int index \u003d i + 1;","lastModifiedDate":"2024-01-25"},{"lineNumber":131,"author":{"gitId":"moguries"},"content":" String taskMessage \u003d taskList.get(i).printTask();","lastModifiedDate":"2024-01-28"},{"lineNumber":132,"author":{"gitId":"moguries"},"content":" if (i \u003d\u003d taskList.size() - 1) {","lastModifiedDate":"2024-01-25"},{"lineNumber":133,"author":{"gitId":"moguries"},"content":" listMessage +\u003d index + \". \" + taskMessage;","lastModifiedDate":"2024-01-28"},{"lineNumber":134,"author":{"gitId":"moguries"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":135,"author":{"gitId":"moguries"},"content":" listMessage +\u003d index + \". \" + taskMessage + \"\\n\";","lastModifiedDate":"2024-01-28"},{"lineNumber":136,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":137,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":138,"author":{"gitId":"moguries"},"content":" Duke.printMessage(listMessage);","lastModifiedDate":"2024-01-25"},{"lineNumber":139,"author":{"gitId":"moguries"},"content":" //command: mark","lastModifiedDate":"2024-01-28"},{"lineNumber":140,"author":{"gitId":"moguries"},"content":" } else if (command.equalsIgnoreCase(\"mark\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":141,"author":{"gitId":"moguries"},"content":" int taskNum \u003d Integer.parseInt(inputTokens[1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":142,"author":{"gitId":"moguries"},"content":" if (taskNum \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":143,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Duke.createLine() + \"\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":144,"author":{"gitId":"moguries"},"content":" + \"task 0? how can i mark a task that doesn\u0027t exist?!\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":145,"author":{"gitId":"moguries"},"content":" + Duke.createLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":146,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-01-28"},{"lineNumber":147,"author":{"gitId":"moguries"},"content":" } else if (taskNum \u003e taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":148,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Duke.createLine() + \"\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"moguries"},"content":" + \"hahaha! you only have \" + taskList.size() + \" tasks in your task list!!\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":150,"author":{"gitId":"moguries"},"content":" + \"there\u0027s no task \" + taskNum + \"!\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":151,"author":{"gitId":"moguries"},"content":" + Duke.createLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":152,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-01-28"},{"lineNumber":153,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":154,"author":{"gitId":"moguries"},"content":" taskList.get(taskNum - 1).complete();","lastModifiedDate":"2024-01-28"},{"lineNumber":155,"author":{"gitId":"moguries"},"content":" String markedMessage \u003d \"good job!!! i\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":156,"author":{"gitId":"moguries"},"content":" + \" \" + taskList.get(taskNum - 1).printTask();","lastModifiedDate":"2024-01-31"},{"lineNumber":157,"author":{"gitId":"moguries"},"content":" Duke.printMessage(markedMessage);","lastModifiedDate":"2024-01-28"},{"lineNumber":158,"author":{"gitId":"moguries"},"content":" Storage.saveData(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":159,"author":{"gitId":"moguries"},"content":" //command: unmark","lastModifiedDate":"2024-01-28"},{"lineNumber":160,"author":{"gitId":"moguries"},"content":" } else if (command.equalsIgnoreCase(\"unmark\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":161,"author":{"gitId":"moguries"},"content":" int taskNum \u003d Integer.parseInt(inputTokens[1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":162,"author":{"gitId":"moguries"},"content":" if (taskNum \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":163,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Duke.createLine() + \"\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":164,"author":{"gitId":"moguries"},"content":" + \"task 0? how can i unmark a task that doesn\u0027t exist?!\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":165,"author":{"gitId":"moguries"},"content":" + Duke.createLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":166,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-01-28"},{"lineNumber":167,"author":{"gitId":"moguries"},"content":" } else if (taskNum \u003e taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Duke.createLine() + \"\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":169,"author":{"gitId":"moguries"},"content":" + \"hahaha! you only have \" + taskList.size() + \" tasks in your task list!!\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":170,"author":{"gitId":"moguries"},"content":" + \"there\u0027s no task \" + taskNum + \"!\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":171,"author":{"gitId":"moguries"},"content":" + Duke.createLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":172,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-01-28"},{"lineNumber":173,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":174,"author":{"gitId":"moguries"},"content":" taskList.get(taskNum - 1).unmark();","lastModifiedDate":"2024-01-28"},{"lineNumber":175,"author":{"gitId":"moguries"},"content":" String unmarkedMessage \u003d \"okay! i\u0027ve unmarked this task:\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":176,"author":{"gitId":"moguries"},"content":" + \" \" + taskList.get(taskNum - 1).printTask();","lastModifiedDate":"2024-01-31"},{"lineNumber":177,"author":{"gitId":"moguries"},"content":" Duke.printMessage(unmarkedMessage);","lastModifiedDate":"2024-01-28"},{"lineNumber":178,"author":{"gitId":"moguries"},"content":" Storage.saveData(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":179,"author":{"gitId":"moguries"},"content":" //command: delete","lastModifiedDate":"2024-01-28"},{"lineNumber":180,"author":{"gitId":"moguries"},"content":" } else if (command.equalsIgnoreCase(\"delete\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":181,"author":{"gitId":"moguries"},"content":" int taskNum \u003d Integer.parseInt(inputTokens[1]);","lastModifiedDate":"2024-01-28"},{"lineNumber":182,"author":{"gitId":"moguries"},"content":" if (taskNum \u003d\u003d 0) {","lastModifiedDate":"2024-01-28"},{"lineNumber":183,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Duke.createLine() + \"\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":184,"author":{"gitId":"moguries"},"content":" + \"error: there\u0027s no such thing as task 0!\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":185,"author":{"gitId":"moguries"},"content":" + Duke.createLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":186,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-01-28"},{"lineNumber":187,"author":{"gitId":"moguries"},"content":" } else if (taskNum \u003e taskList.size()) {","lastModifiedDate":"2024-01-28"},{"lineNumber":188,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Duke.createLine() + \"\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":189,"author":{"gitId":"moguries"},"content":" + \"error! you only have \" + taskList.size() + \" tasks in your task list!!\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":190,"author":{"gitId":"moguries"},"content":" + \"there\u0027s no task \" + taskNum + \"!\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":191,"author":{"gitId":"moguries"},"content":" + Duke.createLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":192,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-01-28"},{"lineNumber":193,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":194,"author":{"gitId":"moguries"},"content":" Task deletedTask \u003d taskList.get(taskNum - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":195,"author":{"gitId":"moguries"},"content":" String deletedTaskMessage \u003d deletedTask.printTask();","lastModifiedDate":"2024-01-28"},{"lineNumber":196,"author":{"gitId":"moguries"},"content":" taskList.remove(taskNum - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":197,"author":{"gitId":"moguries"},"content":" int remainingNumOfTasks \u003d taskList.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":198,"author":{"gitId":"moguries"},"content":" Duke.printDeletedTask(deletedTaskMessage, remainingNumOfTasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":199,"author":{"gitId":"moguries"},"content":" Storage.saveData(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":200,"author":{"gitId":"moguries"},"content":" //command: todo","lastModifiedDate":"2024-01-28"},{"lineNumber":201,"author":{"gitId":"moguries"},"content":" } else if (command.equalsIgnoreCase(\"todo\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":202,"author":{"gitId":"moguries"},"content":" int len \u003d inputTokens.length;","lastModifiedDate":"2024-01-28"},{"lineNumber":203,"author":{"gitId":"moguries"},"content":" if (len \u003d\u003d 1) {","lastModifiedDate":"2024-01-28"},{"lineNumber":204,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Duke.createLine() + \"\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":205,"author":{"gitId":"moguries"},"content":" + \"you didn\u0027t specify what you want to do! use this format instead:\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":206,"author":{"gitId":"moguries"},"content":" + \"todo [task description]\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":207,"author":{"gitId":"moguries"},"content":" + Duke.createLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":208,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-01-28"},{"lineNumber":209,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":210,"author":{"gitId":"moguries"},"content":" String todoName \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":211,"author":{"gitId":"moguries"},"content":" for (int i \u003d 1; i \u003c len; i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":212,"author":{"gitId":"moguries"},"content":" todoName +\u003d \" \" + inputTokens[i];","lastModifiedDate":"2024-01-28"},{"lineNumber":213,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":214,"author":{"gitId":"moguries"},"content":" ToDo addedTask \u003d new ToDo(todoName);","lastModifiedDate":"2024-01-28"},{"lineNumber":215,"author":{"gitId":"moguries"},"content":" taskList.add(addedTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":216,"author":{"gitId":"moguries"},"content":" int totalNumOfTasks \u003d taskList.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":217,"author":{"gitId":"moguries"},"content":" Duke.printAddedTask(addedTask.printTask(), totalNumOfTasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":218,"author":{"gitId":"moguries"},"content":" Storage.saveData(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":219,"author":{"gitId":"moguries"},"content":" //command: deadline","lastModifiedDate":"2024-01-28"},{"lineNumber":220,"author":{"gitId":"moguries"},"content":" } else if (command.equalsIgnoreCase(\"deadline\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":221,"author":{"gitId":"moguries"},"content":" if (deadlineFormatChecker.length !\u003d 2) {","lastModifiedDate":"2024-02-01"},{"lineNumber":222,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Duke.createLine() + \"\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":223,"author":{"gitId":"moguries"},"content":" + \"error! please specify the deadline task in this format:\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":224,"author":{"gitId":"moguries"},"content":" + \"deadline [task description] /by [YYYY-MM-DD HH:MM]\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":225,"author":{"gitId":"moguries"},"content":" + Duke.createLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":226,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-01-28"},{"lineNumber":227,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":228,"author":{"gitId":"moguries"},"content":" int len \u003d inputTokens.length;","lastModifiedDate":"2024-02-01"},{"lineNumber":229,"author":{"gitId":"moguries"},"content":" String deadlineName \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":230,"author":{"gitId":"moguries"},"content":" LocalDateTime deadline \u003d LocalDateTime.of(2023, 12, 5, 16, 0);","lastModifiedDate":"2024-02-01"},{"lineNumber":231,"author":{"gitId":"moguries"},"content":" for (int i \u003d 1; i \u003c len; i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":232,"author":{"gitId":"moguries"},"content":" if (inputTokens[i].equals(\"/by\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":233,"author":{"gitId":"moguries"},"content":" String dateTimeString \u003d inputTokens[i + 1] + \" \" + inputTokens[i + 2];","lastModifiedDate":"2024-02-01"},{"lineNumber":234,"author":{"gitId":"moguries"},"content":" deadline \u003d LocalDateTime.parse(dateTimeString, formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":235,"author":{"gitId":"moguries"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":236,"author":{"gitId":"moguries"},"content":" } else {","lastModifiedDate":"2024-01-25"},{"lineNumber":237,"author":{"gitId":"moguries"},"content":" deadlineName +\u003d \" \" + inputTokens[i];","lastModifiedDate":"2024-01-28"},{"lineNumber":238,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":239,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":240,"author":{"gitId":"moguries"},"content":" Deadline addedTask \u003d new Deadline(deadlineName, deadline);","lastModifiedDate":"2024-01-28"},{"lineNumber":241,"author":{"gitId":"moguries"},"content":" taskList.add(addedTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":242,"author":{"gitId":"moguries"},"content":" int totalNumOfTasks \u003d taskList.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":243,"author":{"gitId":"moguries"},"content":" Duke.printAddedTask(addedTask.printTask(), totalNumOfTasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":244,"author":{"gitId":"moguries"},"content":" Storage.saveData(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":245,"author":{"gitId":"moguries"},"content":" //command: event","lastModifiedDate":"2024-01-28"},{"lineNumber":246,"author":{"gitId":"moguries"},"content":" } else if (command.equalsIgnoreCase(\"event\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":247,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Duke.createLine() + \"\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":248,"author":{"gitId":"moguries"},"content":" + \"error! please specify the event task in this format:\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":249,"author":{"gitId":"moguries"},"content":" + \"event [task description] /from [YYYY-MM-DD HH:MM] /to [YYYY-MM-DD HH:MM]\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":250,"author":{"gitId":"moguries"},"content":" + Duke.createLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":251,"author":{"gitId":"moguries"},"content":" if (eventFormatChecker.length !\u003d 2) {","lastModifiedDate":"2024-02-01"},{"lineNumber":252,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-02-01"},{"lineNumber":253,"author":{"gitId":"moguries"},"content":" } else if (eventFormatChecker[1].split(\"to\").length !\u003d 2) {","lastModifiedDate":"2024-02-01"},{"lineNumber":254,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-01-28"},{"lineNumber":255,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":256,"author":{"gitId":"moguries"},"content":" int len \u003d inputTokens.length;","lastModifiedDate":"2024-02-01"},{"lineNumber":257,"author":{"gitId":"moguries"},"content":" String eventName \u003d \"\";","lastModifiedDate":"2024-01-28"},{"lineNumber":258,"author":{"gitId":"moguries"},"content":" LocalDateTime start \u003d LocalDateTime.of(2023, 12, 5, 16, 0);","lastModifiedDate":"2024-02-01"},{"lineNumber":259,"author":{"gitId":"moguries"},"content":" LocalDateTime end \u003d LocalDateTime.of(2023, 12, 5, 16, 0);","lastModifiedDate":"2024-02-01"},{"lineNumber":260,"author":{"gitId":"moguries"},"content":" for (int i \u003d 1; i \u003c len; i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":261,"author":{"gitId":"moguries"},"content":" if (inputTokens[i].equals(\"/from\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":262,"author":{"gitId":"moguries"},"content":" String startString \u003d inputTokens[i + 1] + \" \" + inputTokens[i + 2];","lastModifiedDate":"2024-02-01"},{"lineNumber":263,"author":{"gitId":"moguries"},"content":" String endString \u003d inputTokens[i + 4] + \" \" + inputTokens[i + 5];","lastModifiedDate":"2024-02-01"},{"lineNumber":264,"author":{"gitId":"moguries"},"content":" start \u003d LocalDateTime.parse(startString, formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":265,"author":{"gitId":"moguries"},"content":" end \u003d LocalDateTime.parse(endString, formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":266,"author":{"gitId":"moguries"},"content":" break;","lastModifiedDate":"2024-01-28"},{"lineNumber":267,"author":{"gitId":"moguries"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":268,"author":{"gitId":"moguries"},"content":" eventName +\u003d \" \" + inputTokens[i];","lastModifiedDate":"2024-01-28"},{"lineNumber":269,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":270,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":271,"author":{"gitId":"moguries"},"content":" Event addedTask \u003d new Event(eventName, start, end);","lastModifiedDate":"2024-01-28"},{"lineNumber":272,"author":{"gitId":"moguries"},"content":" taskList.add(addedTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":273,"author":{"gitId":"moguries"},"content":" int totalNumOfTasks \u003d taskList.size();","lastModifiedDate":"2024-01-28"},{"lineNumber":274,"author":{"gitId":"moguries"},"content":" Duke.printAddedTask(addedTask.printTask(), totalNumOfTasks);","lastModifiedDate":"2024-01-28"},{"lineNumber":275,"author":{"gitId":"moguries"},"content":" Storage.saveData(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":276,"author":{"gitId":"moguries"},"content":" } else {","lastModifiedDate":"2024-01-28"},{"lineNumber":277,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Duke.createLine() + \"\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":278,"author":{"gitId":"moguries"},"content":" + \"hm? i don\u0027t understand what that means :(\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":279,"author":{"gitId":"moguries"},"content":" + \"you can try any of these commands instead!!\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":280,"author":{"gitId":"moguries"},"content":" + \"list\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":281,"author":{"gitId":"moguries"},"content":" + \"mark\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":282,"author":{"gitId":"moguries"},"content":" + \"unmark\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":283,"author":{"gitId":"moguries"},"content":" + \"delete\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":284,"author":{"gitId":"moguries"},"content":" + \"todo\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":285,"author":{"gitId":"moguries"},"content":" + \"deadline\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":286,"author":{"gitId":"moguries"},"content":" + \"event\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":287,"author":{"gitId":"moguries"},"content":" + \"bye\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":288,"author":{"gitId":"moguries"},"content":" + Duke.createLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":289,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-01-28"},{"lineNumber":290,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":291,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":292,"author":{"gitId":"moguries"},"content":" sc.close();","lastModifiedDate":"2024-01-25"},{"lineNumber":293,"author":{"gitId":"moguries"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":294,"author":{"gitId":"moguries"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-28"},{"lineNumber":295,"author":{"gitId":"moguries"},"content":" } catch (DateTimeParseException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":296,"author":{"gitId":"moguries"},"content":" System.out.println(\"invalid date time format! please use YYYY-MM-DD HH:MM format!\");","lastModifiedDate":"2024-02-01"},{"lineNumber":297,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":298,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":299,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":300,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"moguries":296,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":" * Encapsulates the exceptions specific to the chatbot.","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":" * @author Huang Zhuoyan, Celeste","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":" * @version CS2103T AY24/25 Semester 1, G07","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":" * Constructs a new DukeException with the specified error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" * @param message The specified error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" super(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"moguries":16}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":" * Encapsulates the data and behaviour of an Event task.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":" * @author Huang Zhuoyan, Celeste","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":" * @version CS2103T AY24/25 Semester 1, G07","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" private static DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy h:mma\");","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" * Constructs a new Event task with the given name, start date and end date.","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" * @param name The name of the Deadline task.","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" * @param start The LocalDateTime object containing the start date.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" * @param end The LocalDateTime object containing the end date.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" public Event(String name, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" super(name);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" * Formats the deadline of the task according to a standard format.","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" * @param time The LocalDateTime object to be formatted.","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" * @return The formatted deadline, as a String.","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" public String deadlineFormatter(LocalDateTime time) {","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" return time.format(formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" public String printTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" return \"[E]\" + super.printTask() + \" (from: \" + deadlineFormatter(this.start)","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" + \" to: \" + deadlineFormatter(this.end) + \")\";","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" public String saveTask() {","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" return \"E | \" + super.saveTask() + \" | \" + deadlineFormatter(this.start) + \" | \" + deadlineFormatter(this.end);","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"moguries":48}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import java.io.File;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" * Encapsulates the data and behaviour of the user\u0027s save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" * @author Huang Zhuoyan, Celeste","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" * @version CS2103T AY24/25 Semester 1, G07","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":"public class Storage {","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" private static final String PATH_DIRECTORY \u003d \"./data/\";","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" private static final String PATH_FILE \u003d \"./data/duke.txt\";","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" private static final Pattern PATTERN_TODO \u003d Pattern.compile(\"([A-Z]) \\\\| (\\\\d) \\\\| (.*?)\");","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" private static final Pattern PATTERN_DEADLINE \u003d Pattern.compile(\"([A-Z]) \\\\| (\\\\d) \\\\| (.*?) \\\\| (.*?)\");","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" private static final Pattern PATTERN_EVENT \u003d Pattern.compile(\"([A-Z]) \\\\| (\\\\d) \\\\| (.*?) \\\\| (.*?) \\\\| (.*?)\");","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" private static DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy h:mma\");","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" * Constructs a new Storage object.","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" * Initialises the new Storage object by creating a directory and file if they do not already exist.","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" * @throws IOException if an I/O error occurs during creation of the file.","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" public Storage() throws IOException {","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" File file \u003d new File(PATH_FILE);","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" File directory \u003d new File(PATH_DIRECTORY);","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" if (!directory.exists()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" boolean isCreated \u003d directory.mkdirs();","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" if (!isCreated) {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" System.out.println(\"Failed to create directory: \" + PATH_DIRECTORY);","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" System.out.println(\"Error creating file: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":" * Saves any modified data in the task list into the save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" * @param taskList The ArrayList containing the task list\u0027s data.","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" public static void saveData(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" BufferedWriter bw \u003d new BufferedWriter(new FileWriter(PATH_FILE));","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" String taskMessage \u003d task.saveTask();","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":" bw.write(taskMessage);","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" bw.newLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":" bw.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"moguries"},"content":" System.out.println(\"Error saving data to file: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":" * Loads the data in the save file into an ArrayList.","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"moguries"},"content":" * @return The ArrayList containing the saved data of the user\u0027s task list.","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"moguries"},"content":" public static ArrayList\u003cTask\u003e loadData() {","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"moguries"},"content":" BufferedReader br \u003d new BufferedReader(new FileReader(PATH_FILE));","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"moguries"},"content":" String line;","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"moguries"},"content":" while ((line \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"moguries"},"content":" Task task \u003d parseTask(line);","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"moguries"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"moguries"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"moguries"},"content":" br.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"moguries"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"moguries"},"content":" System.out.println(\"Error loading data from file: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"moguries"},"content":" return taskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"moguries"},"content":" * Parses the inputted line for the task data.","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"moguries"},"content":" * @param line The line to be parsed.","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"moguries"},"content":" * @return The Task containing the task data.","lastModifiedDate":"2024-02-01"},{"lineNumber":99,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":100,"author":{"gitId":"moguries"},"content":" private static Task parseTask(String line) {","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":" Matcher todoMatcher \u003d PATTERN_TODO.matcher(line);","lastModifiedDate":"2024-02-01"},{"lineNumber":102,"author":{"gitId":"moguries"},"content":" Matcher deadlineMatcher \u003d PATTERN_DEADLINE.matcher(line);","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"moguries"},"content":" Matcher eventMatcher \u003d PATTERN_EVENT.matcher(line);","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"moguries"},"content":" if (eventMatcher.matches()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"moguries"},"content":" boolean isCompleted \u003d eventMatcher.group(2).equals(\"1\");","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"moguries"},"content":" String taskName \u003d \" \" + eventMatcher.group(3);","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"moguries"},"content":" LocalDateTime start \u003d LocalDateTime.parse(eventMatcher.group(4), formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":108,"author":{"gitId":"moguries"},"content":" LocalDateTime end \u003d LocalDateTime.parse(eventMatcher.group(5), formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":109,"author":{"gitId":"moguries"},"content":" Event eventTask \u003d new Event(taskName, start, end);","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"moguries"},"content":" if (isCompleted) {","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"moguries"},"content":" eventTask.complete();","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"moguries"},"content":" return eventTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"moguries"},"content":" } else if (deadlineMatcher.matches()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"moguries"},"content":" boolean isCompleted \u003d deadlineMatcher.group(2).equals(\"1\");","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"moguries"},"content":" String taskName \u003d \" \" + deadlineMatcher.group(3);","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"moguries"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(deadlineMatcher.group(4), formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":118,"author":{"gitId":"moguries"},"content":" Deadline deadlineTask \u003d new Deadline(taskName, deadline);","lastModifiedDate":"2024-01-31"},{"lineNumber":119,"author":{"gitId":"moguries"},"content":" if (isCompleted) {","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"moguries"},"content":" deadlineTask.complete();","lastModifiedDate":"2024-01-31"},{"lineNumber":121,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"moguries"},"content":" return deadlineTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"moguries"},"content":" } else if (todoMatcher.matches()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"moguries"},"content":" boolean isCompleted \u003d todoMatcher.group(2).equals(\"1\");","lastModifiedDate":"2024-01-31"},{"lineNumber":125,"author":{"gitId":"moguries"},"content":" String taskName \u003d \" \" + todoMatcher.group(3);","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"moguries"},"content":" ToDo todoTask \u003d new ToDo(taskName);","lastModifiedDate":"2024-01-31"},{"lineNumber":127,"author":{"gitId":"moguries"},"content":" if (isCompleted) {","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"moguries"},"content":" todoTask.complete();","lastModifiedDate":"2024-01-31"},{"lineNumber":129,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"moguries"},"content":" return todoTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"moguries"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"moguries"},"content":" System.out.println(\"Line does not match expected pattern: \" + line);","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"moguries"},"content":" return null;","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":136,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"moguries":136}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":" * Encapsulates the data and behaviour of a Task.","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":" * @author Huang Zhuoyan, Celeste","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":" * @version CS2103T AY24/25 Semester 1, G07","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":" private String name;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":" private boolean completed;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":" * Constructs a new Task with the given name.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" * @param name The name or descriptor of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" this.completed \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" * Marks the task as complete.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" public void complete() {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" this.completed \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" * Marks the task as incomplete.","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" public void unmark() {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" this.completed \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" * Returns a string description of the task name and its completion status.","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" * @return A String describing the task name and completion status.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" public String printTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" String taskMessage \u003d this.completed ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" taskMessage +\u003d this.name;","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" return taskMessage;","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" * Returns a string description of the task name and its completion status in the correct format of the save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" * @return A String describing the task name and completion status.","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" public String saveTask() {","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" String taskMessage \u003d this.completed ? \"1\" : \"0\";","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":" taskMessage +\u003d \" |\" + this.name;","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" return taskMessage;","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"moguries":57}},{"path":"src/main/java/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":" * Encapsulates the data and behaviour of a ToDo task.","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":" * @author Huang Zhuoyan, Celeste","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":" * @version CS2103T AY24/25 Semester 1, G07","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":" * Constructs a new ToDo task with the given name.","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":" * @param name The name of the ToDo task.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" super(name);","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" public String printTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" return \"[T]\" + super.printTask();","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" public String saveTask() {","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" return \"T | \" + super.saveTask();","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"moguries":25}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"todo borrow book","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"deadline return book /by Sunday 5pm","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"event project meeting /from Mon 6th Nov 2pm /to Sun 28th Feb 4pm","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"mark 3","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"unmark 3","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"deadline borrow materials /by not too sure :-(","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"bye","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"moguries":10}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"# chatbot.Duke project template","lastModifiedDate":"2024-02-07"},{"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":"moguries"},"content":"3. After that, locate the `src/main/java/chatbot.Duke.java` file, right-click it, and choose `Run chatbot.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-02-07"},{"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":{"moguries":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":"moguries"},"content":" mainClass.set(\"chatbot.Duke\")","lastModifiedDate":"2024-02-07"},{"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":"moguries"},"content":" archiveBaseName \u003d \"Duke\"","lastModifiedDate":"2024-02-07"},{"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":{"moguries":2,"-":40}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"T | 1 | buy bday present","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"D | 1 | watch lecture 3 | Jan 31 2024 6:00pm","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"E | 0 | tchouk ivp | Feb 03 2024 2:00pm | Feb 03 2024 7:00pm","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"D | 0 | do tmrs tut | Feb 02 2024 12:00am","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"T | 1 | buy fatnoms food","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"D | 1 | feed fatnom | Mar 07 2024 12:00am","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"D | 0 | return book | Apr 05 2024 6:35pm","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"E | 0 | fatnoms birthday party | Apr 01 2024 5:30pm | Apr 01 2024 11:15pm","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"moguries":8}},{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"T | 1 | have dinner","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"E | 0 | fatnoms bday | Mar 01 2024 6:00pm | Mar 01 2024 9:00pm","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"D | 1 | buy fatnoms present | Feb 27 2024 7:33pm","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"T | 0 | fish","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"E | 0 | convention | Jun 30 2024 6:45pm | Jul 02 2024 5:55pm","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"D | 1 | study for finals | Apr 27 2024 4:00pm","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"moguries":6}},{"path":"src/main/java/chatbot/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package chatbot;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import chatbot.exception.DukeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import chatbot.parser.Parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"import chatbot.storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"import chatbot.task.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"import chatbot.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" * Encapsulates the data and behaviour of Fatnom.","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" * Fatnom is a chatbot application designed to help users manage their task lists.","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" * It provides functionalities to add, delete, mark, unmark, list and find tasks.","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" * @author Huang Zhuoyan, Celeste","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" * @version CS2103T AY24/25 Semester 1, G07","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" private static final String NAME \u003d \"Fatnom\";","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" private static Storage storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" private Ui ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" * Constructs a new Duke object.","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" * @param filepath The file path of the storage file containing task data.","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" * @throws DukeException For initialisation errors while loading data from storage.","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" public Duke(String filepath) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" storage \u003d new Storage(filepath);","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" tasks \u003d new TaskList(storage.loadData());","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" Ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" * Runs the Fatnom application.","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" * Initialises the necessary components, displays a welcome message,","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" * loads data from storage (if any), and continuously reads and","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" * processes user input until the user exits the application.","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" public void run() {","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" Ui.printWelcomeMessage(NAME);","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" Parser parser \u003d new Parser(tasks, ui);","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" while (!isExit) {","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2024-01-25"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" isExit \u003d parser.parseUserInput(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" Ui.printErrorMessage(e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":" } catch (DateTimeParseException | ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Ui.createLine() + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":" + \"invalid date time format! please use YYYY-MM-DD HH:MM format!\" + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" + Ui.createLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":" Ui.printErrorMessage(exceptionMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"moguries"},"content":" * Starts the Fatnom application.","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":" * Initialises a Duke object and runs the application.","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"moguries"},"content":" * @param args The command-line arguments.","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"moguries"},"content":" * @throws DukeException For initialisation errors.","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"moguries"},"content":" public static void main(String[] args) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":" new Duke(\"data/tasks.txt\").run();","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"moguries":76,"-":3}},{"path":"src/main/java/chatbot/exception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package chatbot.exception;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":" * Encapsulates the exceptions specific to the chatbot.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":" * @author Huang Zhuoyan, Celeste","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":" * @version CS2103T AY24/25 Semester 1, G07","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" * Constructs a new chatbot.exception.DukeException with the specified error message.","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" * @param message The specified error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" public DukeException(String message) {","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" super(message);","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"moguries":18}},{"path":"src/main/java/chatbot/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package chatbot.parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import chatbot.exception.DukeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import chatbot.task.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"import chatbot.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" * Encapsulates the data and behaviour of the parser which parses user input.","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" * @author Huang Zhuoyan, Celeste","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" * @version CS2103T AY24/25 Semester 1, G07","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":"public class Parser {","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" private Ui ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" private static DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" * Constructs a new Parser.","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" * @param tasks The TaskList object containing the user\u0027s task list.","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" * @param ui The Ui object that handles user interface interactions.","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" public Parser(TaskList tasks, Ui ui) {","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" this.ui \u003d ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" * Parses user input and executes corresponding commands.","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" * @param input The user input to be parsed.","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" * @return True if the application should exit, false otherwise.","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" * @throws DukeException The error that occurs during parsing or execution of the command.","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" public boolean parseUserInput(String input) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" String[] inputTokens \u003d input.split(\" \");","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" String[] deadlineFormatChecker \u003d input.split(\"/by\");","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" String[] eventFormatChecker \u003d input.split(\"/from\");","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" String command \u003d inputTokens[0].toLowerCase();","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" switch (command) {","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" case \"bye\":","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" Ui.printByeMessage();","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" return true;","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" //Fallthrough","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" case \"list\":","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" Ui.printListTasks(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":" case \"mark\":","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" int taskNum \u003d Integer.parseInt(inputTokens[1]);","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" tasks.markTask(taskNum);","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":" int taskNum2 \u003d Integer.parseInt(inputTokens[1]);","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" tasks.unmarkTask(taskNum2);","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" case \"delete\":","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":" int taskNum3 \u003d Integer.parseInt(inputTokens[1]);","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" tasks.deleteTask(taskNum3);","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":" case \"todo\":","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":" int len \u003d inputTokens.length;","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"moguries"},"content":" if (len \u003d\u003d 1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Ui.createLine() + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":" + \"you didn\u0027t specify what you want to do! use this format instead:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"moguries"},"content":" + \"todo [task description]\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":" + Ui.createLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"moguries"},"content":" String todoName \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":" for (int i \u003d 1; i \u003c len; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"moguries"},"content":" todoName +\u003d \" \" + inputTokens[i];","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"moguries"},"content":" tasks.addTodoTask(todoName);","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"moguries"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"moguries"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"moguries"},"content":" if (deadlineFormatChecker.length !\u003d 2) {","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Ui.createLine() + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"moguries"},"content":" + \"error! please specify the deadline task in this format:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"moguries"},"content":" + \"deadline [task description] /by [YYYY-MM-DD HH:MM]\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"moguries"},"content":" + Ui.createLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"moguries"},"content":" int len2 \u003d inputTokens.length;","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"moguries"},"content":" String deadlineName \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"moguries"},"content":" LocalDateTime deadline \u003d LocalDateTime.of(2023, 12, 5, 16, 0);","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"moguries"},"content":" for (int i \u003d 1; i \u003c len2; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"moguries"},"content":" if (inputTokens[i].equals(\"/by\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"moguries"},"content":" String dateTimeString \u003d inputTokens[i + 1] + \" \" + inputTokens[i + 2];","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"moguries"},"content":" deadline \u003d LocalDateTime.parse(dateTimeString, formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"moguries"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"moguries"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"moguries"},"content":" deadlineName +\u003d \" \" + inputTokens[i];","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"moguries"},"content":" tasks.addDeadlineTask(deadlineName, deadline);","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":102,"author":{"gitId":"moguries"},"content":" case \"event\":","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Ui.createLine() + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"moguries"},"content":" + \"error! please specify the event task in this format:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"moguries"},"content":" + \"event [task description] /from [YYYY-MM-DD HH:MM] /to [YYYY-MM-DD HH:MM]\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":106,"author":{"gitId":"moguries"},"content":" + Ui.createLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":107,"author":{"gitId":"moguries"},"content":" if (eventFormatChecker.length !\u003d 2) {","lastModifiedDate":"2024-02-07"},{"lineNumber":108,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":109,"author":{"gitId":"moguries"},"content":" } else if (eventFormatChecker[1].split(\"to\").length !\u003d 2) {","lastModifiedDate":"2024-02-07"},{"lineNumber":110,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":111,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":112,"author":{"gitId":"moguries"},"content":" int len3 \u003d inputTokens.length;","lastModifiedDate":"2024-02-07"},{"lineNumber":113,"author":{"gitId":"moguries"},"content":" String eventName \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":114,"author":{"gitId":"moguries"},"content":" LocalDateTime start \u003d LocalDateTime.of(2023, 12, 5, 16, 0);","lastModifiedDate":"2024-02-07"},{"lineNumber":115,"author":{"gitId":"moguries"},"content":" LocalDateTime end \u003d LocalDateTime.of(2023, 12, 5, 16, 0);","lastModifiedDate":"2024-02-07"},{"lineNumber":116,"author":{"gitId":"moguries"},"content":" for (int i \u003d 1; i \u003c len3; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":117,"author":{"gitId":"moguries"},"content":" if (inputTokens[i].equals(\"/from\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":118,"author":{"gitId":"moguries"},"content":" String startString \u003d inputTokens[i + 1] + \" \" + inputTokens[i + 2];","lastModifiedDate":"2024-02-07"},{"lineNumber":119,"author":{"gitId":"moguries"},"content":" String endString \u003d inputTokens[i + 4] + \" \" + inputTokens[i + 5];","lastModifiedDate":"2024-02-07"},{"lineNumber":120,"author":{"gitId":"moguries"},"content":" start \u003d LocalDateTime.parse(startString, formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":121,"author":{"gitId":"moguries"},"content":" end \u003d LocalDateTime.parse(endString, formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":122,"author":{"gitId":"moguries"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":123,"author":{"gitId":"moguries"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":124,"author":{"gitId":"moguries"},"content":" eventName +\u003d \" \" + inputTokens[i];","lastModifiedDate":"2024-02-07"},{"lineNumber":125,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":126,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":127,"author":{"gitId":"moguries"},"content":" tasks.addEventTask(eventName, start, end);","lastModifiedDate":"2024-02-07"},{"lineNumber":128,"author":{"gitId":"moguries"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":129,"author":{"gitId":"moguries"},"content":" default:","lastModifiedDate":"2024-02-07"},{"lineNumber":130,"author":{"gitId":"moguries"},"content":" Ui.printUnknownCommand();","lastModifiedDate":"2024-02-07"},{"lineNumber":131,"author":{"gitId":"moguries"},"content":" //Fallthrough","lastModifiedDate":"2024-02-07"},{"lineNumber":132,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":133,"author":{"gitId":"moguries"},"content":" return false;","lastModifiedDate":"2024-02-07"},{"lineNumber":134,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":135,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"moguries":135}},{"path":"src/main/java/chatbot/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package chatbot.storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import chatbot.exception.DukeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import chatbot.task.Deadline;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"import chatbot.task.Event;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"import chatbot.task.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"import chatbot.task.ToDo;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":"import java.io.File;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" * Encapsulates the data and behaviour of the user\u0027s save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" * @author Huang Zhuoyan, Celeste","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" * @version CS2103T AY24/25 Semester 1, G07","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":"public class Storage {","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" private static String PATH_FILE;","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" private static final Pattern PATTERN_TODO \u003d Pattern.compile(\"([A-Z]) \\\\| (\\\\d) \\\\| (.*?)\");","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" private static final Pattern PATTERN_DEADLINE \u003d Pattern.compile(\"([A-Z]) \\\\| (\\\\d) \\\\| (.*?) \\\\| (.*?)\");","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" private static final Pattern PATTERN_EVENT \u003d Pattern.compile(","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" \"([A-Z]) \\\\| (\\\\d) \\\\| (.*?) \\\\| (.*?) \\\\| (.*?)\");","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" private static DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy h:mma\");","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" * Constructs a new chatbot.storage.Storage object.","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" * Initialises the new chatbot.storage.Storage object by creating a directory and file if they do not already exist.","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" * @throws IOException if an I/O error occurs during creation of the file.","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" public Storage(String filePath) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" File file \u003d new File(filePath);","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" PATH_FILE \u003d filePath;","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" file.getParentFile().mkdirs();","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" file.createNewFile();","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d \"Error creating file: \" + e.getMessage();","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" * Saves any modified data in the task list into the save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":" * @param taskList The ArrayList containing the task list\u0027s data.","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":" public static void saveData(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":" BufferedWriter bw \u003d new BufferedWriter(new FileWriter(PATH_FILE));","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":" String taskMessage \u003d task.saveTask();","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":" bw.write(taskMessage);","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":" bw.newLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":" bw.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"moguries"},"content":" System.out.println(\"Error saving data to file: \" + e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":" * Loads the data in the save file into an ArrayList.","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":" * @return The ArrayList containing the saved data of the user\u0027s task list.","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"moguries"},"content":" public static ArrayList\u003cTask\u003e loadData() throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"moguries"},"content":" ArrayList\u003cTask\u003e taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"moguries"},"content":" BufferedReader br \u003d new BufferedReader(new FileReader(PATH_FILE));","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"moguries"},"content":" String line;","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"moguries"},"content":" while ((line \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"moguries"},"content":" Task task \u003d parseTask(line);","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"moguries"},"content":" if (task !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"moguries"},"content":" taskList.add(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"moguries"},"content":" br.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"moguries"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d \"Error loading data from file: \" + e.getMessage();","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"moguries"},"content":" return taskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":99,"author":{"gitId":"moguries"},"content":" * Parses the inputted line for the task data.","lastModifiedDate":"2024-02-01"},{"lineNumber":100,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":" * @param line The line to be parsed.","lastModifiedDate":"2024-02-01"},{"lineNumber":102,"author":{"gitId":"moguries"},"content":" * @return The chatbot.task.Task containing the task data.","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"moguries"},"content":" private static Task parseTask(String line) {","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"moguries"},"content":" Matcher todoMatcher \u003d PATTERN_TODO.matcher(line);","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"moguries"},"content":" Matcher deadlineMatcher \u003d PATTERN_DEADLINE.matcher(line);","lastModifiedDate":"2024-02-01"},{"lineNumber":107,"author":{"gitId":"moguries"},"content":" Matcher eventMatcher \u003d PATTERN_EVENT.matcher(line);","lastModifiedDate":"2024-02-01"},{"lineNumber":108,"author":{"gitId":"moguries"},"content":" if (eventMatcher.matches()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"moguries"},"content":" boolean isCompleted \u003d eventMatcher.group(2).equals(\"1\");","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"moguries"},"content":" String taskName \u003d \" \" + eventMatcher.group(3);","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"moguries"},"content":" LocalDateTime start \u003d LocalDateTime.parse(eventMatcher.group(4), formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":112,"author":{"gitId":"moguries"},"content":" LocalDateTime end \u003d LocalDateTime.parse(eventMatcher.group(5), formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":113,"author":{"gitId":"moguries"},"content":" Event eventTask \u003d new Event(taskName, start, end);","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"moguries"},"content":" if (isCompleted) {","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"moguries"},"content":" eventTask.complete();","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"moguries"},"content":" return eventTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":118,"author":{"gitId":"moguries"},"content":" } else if (deadlineMatcher.matches()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":119,"author":{"gitId":"moguries"},"content":" boolean isCompleted \u003d deadlineMatcher.group(2).equals(\"1\");","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"moguries"},"content":" String taskName \u003d \" \" + deadlineMatcher.group(3);","lastModifiedDate":"2024-01-31"},{"lineNumber":121,"author":{"gitId":"moguries"},"content":" LocalDateTime deadline \u003d LocalDateTime.parse(deadlineMatcher.group(4), formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":122,"author":{"gitId":"moguries"},"content":" Deadline deadlineTask \u003d new Deadline(taskName, deadline);","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"moguries"},"content":" if (isCompleted) {","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"moguries"},"content":" deadlineTask.complete();","lastModifiedDate":"2024-01-31"},{"lineNumber":125,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"moguries"},"content":" return deadlineTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":127,"author":{"gitId":"moguries"},"content":" } else if (todoMatcher.matches()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"moguries"},"content":" boolean isCompleted \u003d todoMatcher.group(2).equals(\"1\");","lastModifiedDate":"2024-01-31"},{"lineNumber":129,"author":{"gitId":"moguries"},"content":" String taskName \u003d \" \" + todoMatcher.group(3);","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"moguries"},"content":" ToDo todoTask \u003d new ToDo(taskName);","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"moguries"},"content":" if (isCompleted) {","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"moguries"},"content":" todoTask.complete();","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"moguries"},"content":" return todoTask;","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"moguries"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":136,"author":{"gitId":"moguries"},"content":" System.out.println(\"Line does not match expected pattern: \" + line);","lastModifiedDate":"2024-01-31"},{"lineNumber":137,"author":{"gitId":"moguries"},"content":" return null;","lastModifiedDate":"2024-01-31"},{"lineNumber":138,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":139,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":140,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"moguries":140}},{"path":"src/main/java/chatbot/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package chatbot.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":" * Encapsulates the data and behaviour of a chatbot.task.Deadline task.","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":" * @author Huang Zhuoyan, Celeste","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":" * @version CS2103T AY24/25 Semester 1, G07","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" private static DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy h:mma\");","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" * Constructs a new chatbot.task.Deadline task with the given name and deadline.","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" * @param name The name of the chatbot.task.Deadline task.","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" * @param time The LocalDateTime object containing the deadline.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" public Deadline(String name, LocalDateTime time) {","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" super(name);","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" this.deadline \u003d time;","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" * Formats the deadline of the task according to a standard format.","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" * @param time The LocalDateTime object to be formatted.","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" * @return The formatted deadline, as a String.","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" public String formatDeadline(LocalDateTime time) {","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" return time.format(formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" public String printTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" return \"[D]\" + super.printTask() + \" (by: \" + formatDeadline(this.deadline) + \")\";","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" public String saveTask() {","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" return \"D | \" + super.saveTask() + \" | \" + formatDeadline(this.deadline);","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"moguries":46}},{"path":"src/main/java/chatbot/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package chatbot.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":" * Encapsulates the data and behaviour of an chatbot.task.Event task.","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":" * @author Huang Zhuoyan, Celeste","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":" * @version CS2103T AY24/25 Semester 1, G07","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" private LocalDateTime start;","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" private LocalDateTime end;","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" private static DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy h:mma\");","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" * Constructs a new chatbot.task.Event task with the given name, start date and end date.","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" * @param name The name of the chatbot.task.Deadline task.","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" * @param start The LocalDateTime object containing the start date.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" * @param end The LocalDateTime object containing the end date.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" public Event(String name, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" super(name);","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" this.start \u003d start;","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" this.end \u003d end;","lastModifiedDate":"2024-01-28"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" * Formats the deadline of the task according to a standard format.","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" * @param time The LocalDateTime object to be formatted.","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" * @return The formatted deadline, as a String.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" public String formatDeadline(LocalDateTime time) {","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" return time.format(formatter);","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" public String printTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" return \"[E]\" + super.printTask() + \" (from: \" + formatDeadline(this.start)","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" + \" to: \" + formatDeadline(this.end) + \")\";","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" public String saveTask() {","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" return \"E | \" + super.saveTask() + \" | \" + formatDeadline(this.start) + \" | \" + formatDeadline(this.end);","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"moguries":50}},{"path":"src/main/java/chatbot/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package chatbot.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":" * Encapsulates the data and behaviour of a chatbot.task.Task.","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":" * @author Huang Zhuoyan, Celeste","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":" * @version CS2103T AY24/25 Semester 1, G07","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":" private String name;","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" private boolean completed;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" * Constructs a new chatbot.task.Task with the given name.","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" * @param name The name or descriptor of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" public Task(String name) {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" this.completed \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" * Marks the task as complete.","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" public void complete() {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" this.completed \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" * Marks the task as incomplete.","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" public void unmark() {","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" this.completed \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" * Returns a string description of the task name and its completion status.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" * @return A String describing the task name and completion status.","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" public String printTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" String taskMessage \u003d this.completed ? \"[X]\" : \"[ ]\";","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" taskMessage +\u003d this.name;","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" return taskMessage;","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" * Returns a string description of the task name and its completion status in the correct format of the save file.","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" * @return A String describing the task name and completion status.","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":" public String saveTask() {","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" String taskMessage \u003d this.completed ? \"1\" : \"0\";","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" taskMessage +\u003d \" |\" + this.name;","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" return taskMessage;","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"moguries":59}},{"path":"src/main/java/chatbot/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package chatbot.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import chatbot.exception.DukeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import chatbot.storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"import chatbot.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" * Encapsulates the data and behaviour of a task list.","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" * @author Huang Zhuoyan, Celeste","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" * @version CS2103T AY24/25 Semester 1, G07","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":"public class TaskList {","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" * Constructs a new TaskList.","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" * Initialises a new TaskList with an empty list of tasks.","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" public TaskList() {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" ArrayList\u003cTask\u003e newTaskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" this.tasks \u003d newTaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" * Constructs a TaskList with the specified list of tasks.","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" * @param tasks The list of tasks to initialise the TaskList with.","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" * Returns the number of tasks in the task list.","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" * @return The number of tasks in the task list.","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" public int getNumOfTasks() {","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" return tasks.size();","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" * Prints the task description of the specified task.","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" * @param taskNum The index of the task to retrieve.","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" * @return The task description of the specified task.","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" public String printTask(int taskNum) {","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":" return tasks.get(taskNum - 1).printTask();","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" * Marks the specified task as completed.","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" * @param taskNum The index of the task to be marked.","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":" * @throws DukeException For an invalid task index.","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":" public void markTask(int taskNum) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" if (taskNum \u003d\u003d 0) {","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Ui.createLine() + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":" + \"task 0? how can i mark a task that doesn\u0027t exist?!\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":" + Ui.createLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":" } else if (taskNum \u003e tasks.size()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Ui.createLine() + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"moguries"},"content":" + \"hahaha! you only have \" + tasks.size() + \" tasks in your task list!!\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":" + \"there\u0027s no task \" + taskNum + \"!\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":" + Ui.createLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":" tasks.get(taskNum - 1).complete();","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"moguries"},"content":" Storage.saveData(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":" Ui.printMarkedTask(this, taskNum);","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"moguries"},"content":" * Unmarks the specified task.","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"moguries"},"content":" * @param taskNum The index of the task to be unmarked.","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"moguries"},"content":" * @throws DukeException For an invalid task index.","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"moguries"},"content":" public void unmarkTask(int taskNum) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"moguries"},"content":" if (taskNum \u003d\u003d 0) {","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Ui.createLine() + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"moguries"},"content":" + \"task 0? how can i unmark a task that doesn\u0027t exist?!\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"moguries"},"content":" + Ui.createLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"moguries"},"content":" } else if (taskNum \u003e tasks.size()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Ui.createLine() + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"moguries"},"content":" + \"hahaha! you only have \" + tasks.size() + \" tasks in your task list!!\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"moguries"},"content":" + \"there\u0027s no task \" + taskNum + \"!\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"moguries"},"content":" + Ui.createLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"moguries"},"content":" tasks.get(taskNum - 1).unmark();","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"moguries"},"content":" Storage.saveData(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":" Ui.printUnmarkedTask(this, taskNum);","lastModifiedDate":"2024-02-07"},{"lineNumber":102,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"moguries"},"content":" * Deletes the specified task.","lastModifiedDate":"2024-02-07"},{"lineNumber":106,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":107,"author":{"gitId":"moguries"},"content":" * @param taskNum The index of the task to be deleted.","lastModifiedDate":"2024-02-07"},{"lineNumber":108,"author":{"gitId":"moguries"},"content":" * @throws DukeException For an invalid task index.","lastModifiedDate":"2024-02-07"},{"lineNumber":109,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":110,"author":{"gitId":"moguries"},"content":" public void deleteTask(int taskNum) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":111,"author":{"gitId":"moguries"},"content":" if (taskNum \u003d\u003d 0) {","lastModifiedDate":"2024-02-07"},{"lineNumber":112,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Ui.createLine() + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":113,"author":{"gitId":"moguries"},"content":" + \"error: there\u0027s no such thing as task 0!\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":114,"author":{"gitId":"moguries"},"content":" + Ui.createLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":115,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":116,"author":{"gitId":"moguries"},"content":" } else if (taskNum \u003e tasks.size()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":117,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Ui.createLine() + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":118,"author":{"gitId":"moguries"},"content":" + \"error! you only have \" + tasks.size() + \" tasks in your task list!!\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":119,"author":{"gitId":"moguries"},"content":" + \"there\u0027s no task \" + taskNum + \"!\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":120,"author":{"gitId":"moguries"},"content":" + Ui.createLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":121,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":122,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":123,"author":{"gitId":"moguries"},"content":" Task deletedTask \u003d tasks.get(taskNum - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":124,"author":{"gitId":"moguries"},"content":" String deletedTaskMessage \u003d deletedTask.printTask();","lastModifiedDate":"2024-02-07"},{"lineNumber":125,"author":{"gitId":"moguries"},"content":" tasks.remove(taskNum - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":126,"author":{"gitId":"moguries"},"content":" int remainingNumOfTasks \u003d tasks.size();","lastModifiedDate":"2024-02-07"},{"lineNumber":127,"author":{"gitId":"moguries"},"content":" Storage.saveData(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":128,"author":{"gitId":"moguries"},"content":" Ui.printDeletedTask(deletedTaskMessage, remainingNumOfTasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":129,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":130,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":131,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":132,"author":{"gitId":"moguries"},"content":" * Adds a new ToDo task with the specified task description.","lastModifiedDate":"2024-02-07"},{"lineNumber":133,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":134,"author":{"gitId":"moguries"},"content":" * @param name The task description of the ToDo task.","lastModifiedDate":"2024-02-07"},{"lineNumber":135,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":136,"author":{"gitId":"moguries"},"content":" public void addTodoTask(String name) {","lastModifiedDate":"2024-02-07"},{"lineNumber":137,"author":{"gitId":"moguries"},"content":" ToDo addedTask \u003d new ToDo(name);","lastModifiedDate":"2024-02-07"},{"lineNumber":138,"author":{"gitId":"moguries"},"content":" tasks.add(addedTask);","lastModifiedDate":"2024-02-07"},{"lineNumber":139,"author":{"gitId":"moguries"},"content":" int totalNumOfTasks \u003d tasks.size();","lastModifiedDate":"2024-02-07"},{"lineNumber":140,"author":{"gitId":"moguries"},"content":" Ui.printAddedTask(addedTask.printTask(), totalNumOfTasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":141,"author":{"gitId":"moguries"},"content":" Storage.saveData(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":142,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":143,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":144,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":145,"author":{"gitId":"moguries"},"content":" * Adds a new Deadline task with the specified task description and deadline.","lastModifiedDate":"2024-02-07"},{"lineNumber":146,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":147,"author":{"gitId":"moguries"},"content":" * @param name The task description of the Deadline task.","lastModifiedDate":"2024-02-07"},{"lineNumber":148,"author":{"gitId":"moguries"},"content":" * @param deadline The LocalDateTime object containing the deadline of the task.","lastModifiedDate":"2024-02-07"},{"lineNumber":149,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":150,"author":{"gitId":"moguries"},"content":" public void addDeadlineTask(String name, LocalDateTime deadline) {","lastModifiedDate":"2024-02-07"},{"lineNumber":151,"author":{"gitId":"moguries"},"content":" Deadline addedTask \u003d new Deadline(name, deadline);","lastModifiedDate":"2024-02-07"},{"lineNumber":152,"author":{"gitId":"moguries"},"content":" tasks.add(addedTask);","lastModifiedDate":"2024-02-07"},{"lineNumber":153,"author":{"gitId":"moguries"},"content":" int totalNumOfTasks \u003d tasks.size();","lastModifiedDate":"2024-02-07"},{"lineNumber":154,"author":{"gitId":"moguries"},"content":" Ui.printAddedTask(addedTask.printTask(), totalNumOfTasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":155,"author":{"gitId":"moguries"},"content":" Storage.saveData(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":156,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":157,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":158,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":159,"author":{"gitId":"moguries"},"content":" * Adds a new Event task with the specified task description, start and end dates.","lastModifiedDate":"2024-02-07"},{"lineNumber":160,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":161,"author":{"gitId":"moguries"},"content":" * @param name The task description of the Event task.","lastModifiedDate":"2024-02-07"},{"lineNumber":162,"author":{"gitId":"moguries"},"content":" * @param start The LocalDateTime object containing the start date of the task.","lastModifiedDate":"2024-02-07"},{"lineNumber":163,"author":{"gitId":"moguries"},"content":" * @param end The LocalDateTime object containing the end date of the task.","lastModifiedDate":"2024-02-07"},{"lineNumber":164,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":165,"author":{"gitId":"moguries"},"content":" public void addEventTask(String name, LocalDateTime start, LocalDateTime end) {","lastModifiedDate":"2024-02-07"},{"lineNumber":166,"author":{"gitId":"moguries"},"content":" Event addedTask \u003d new Event(name, start, end);","lastModifiedDate":"2024-02-07"},{"lineNumber":167,"author":{"gitId":"moguries"},"content":" tasks.add(addedTask);","lastModifiedDate":"2024-02-07"},{"lineNumber":168,"author":{"gitId":"moguries"},"content":" int totalNumOfTasks \u003d tasks.size();","lastModifiedDate":"2024-02-07"},{"lineNumber":169,"author":{"gitId":"moguries"},"content":" Ui.printAddedTask(addedTask.printTask(), totalNumOfTasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":170,"author":{"gitId":"moguries"},"content":" Storage.saveData(tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":171,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":172,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"moguries":172}},{"path":"src/main/java/chatbot/task/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package chatbot.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":" * Encapsulates the data and behaviour of a chatbot.task.ToDo task.","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":" * @author Huang Zhuoyan, Celeste","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":" * @version CS2103T AY24/25 Semester 1, G07","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" * Constructs a new chatbot.task.ToDo task with the given name.","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":" * @param name The name of the chatbot.task.ToDo task.","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" public ToDo(String name) {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" super(name);","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" public String printTask() {","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" return \"[T]\" + super.printTask();","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" public String saveTask() {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" return \"T | \" + super.saveTask();","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"moguries":27}},{"path":"src/main/java/chatbot/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package chatbot.ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import chatbot.exception.DukeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import chatbot.task.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"public class Ui {","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":" private static final int LINE_LENGTH \u003d 60;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":" * Creates a line, in the form of a String.","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":" * @return The line.","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":" public static String createLine() {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":" String line \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" for (int i \u003d 0; i \u003c LINE_LENGTH; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" line +\u003d \"_\";","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" return line;","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" * Prints a line for UI.","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" public static void printLine() {","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" for (int i \u003d 0; i \u003c LINE_LENGTH; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" System.out.print(\"_\");","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" System.out.print(\"\\n\");","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" * Prints a message bound by 2 lines for UI.","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" * @param message The message to be printed.","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" public static void printMessage(String message) {","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" Ui.printLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" System.out.println(message);","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" Ui.printLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" public static void printWelcomeMessage(String name) {","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" String welcomeMessage \u003d \"hello! i\u0027m \" + name + \"!!!\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":" + \"i\u0027m here to manage your task list!\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" + \"what can i do for you?\";","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" Ui.printMessage(welcomeMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" public static void printByeMessage() {","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" Ui.printMessage(\"bye!! come visit me again! :D\");","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" public static void printListTasks(TaskList tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" String listMessage \u003d \"alright! here is your task list:\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" if (tasks.getNumOfTasks() \u003d\u003d 0) {","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" listMessage +\u003d \".\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":" + \".\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" + \".\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":" + \".\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" + \".\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":" + \".\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" + \"SURPRISE!! nothing at all! what a good life!\";","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":" for (int i \u003d 0; i \u003c tasks.getNumOfTasks(); i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":" int index \u003d i + 1;","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"moguries"},"content":" String taskMessage \u003d tasks.printTask(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":" if (i \u003d\u003d tasks.getNumOfTasks() - 1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":" listMessage +\u003d index + \". \" + taskMessage;","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"moguries"},"content":" } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":" listMessage +\u003d index + \". \" + taskMessage + \"\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"moguries"},"content":" Ui.printMessage(listMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":" public static void printMarkedTask(TaskList tasks, int taskNum) {","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"moguries"},"content":" String markedMessage \u003d \"good job!!! i\u0027ve marked this task as done:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"moguries"},"content":" + \" \" + tasks.printTask(taskNum);","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"moguries"},"content":" Ui.printMessage(markedMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"moguries"},"content":" public static void printUnmarkedTask(TaskList tasks, int taskNum) {","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"moguries"},"content":" String unmarkedMessage \u003d \"okay! i\u0027ve unmarked this task:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"moguries"},"content":" + \" \" + tasks.printTask(taskNum);","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"moguries"},"content":" Ui.printMessage(unmarkedMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"moguries"},"content":" * Prints the message for when a task has successfully been added.","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"moguries"},"content":" * @param taskMessage The message to be printed.","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"moguries"},"content":" * @param totalNumOfTasks The total number of tasks in the task list after the new task has been added.","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"moguries"},"content":" public static void printAddedTask(String taskMessage, int totalNumOfTasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"moguries"},"content":" String addedTaskMessage \u003d \"got it!! i\u0027ve added this task:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"moguries"},"content":" + \" \" + taskMessage + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"moguries"},"content":" + \"you now have \" + totalNumOfTasks + \" tasks in the task list!\";","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"moguries"},"content":" Ui.printLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"moguries"},"content":" System.out.println(addedTaskMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":" Ui.printLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":102,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"moguries"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"moguries"},"content":" * Prints the message for when a task has successfully been deleted.","lastModifiedDate":"2024-02-07"},{"lineNumber":106,"author":{"gitId":"moguries"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":107,"author":{"gitId":"moguries"},"content":" * @param taskMessage The message to be printed.","lastModifiedDate":"2024-02-07"},{"lineNumber":108,"author":{"gitId":"moguries"},"content":" * @param remainingNumOfTasks The remaining number of tasks in the task list after the task has been deleted.","lastModifiedDate":"2024-02-07"},{"lineNumber":109,"author":{"gitId":"moguries"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":110,"author":{"gitId":"moguries"},"content":" public static void printDeletedTask(String taskMessage, int remainingNumOfTasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":111,"author":{"gitId":"moguries"},"content":" String deletedTaskMessage \u003d \"got it!! i\u0027ve deleted this task:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":112,"author":{"gitId":"moguries"},"content":" + \" \" + taskMessage + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":113,"author":{"gitId":"moguries"},"content":" + \"you now have \" + remainingNumOfTasks + \" tasks left in the task list!\";","lastModifiedDate":"2024-02-07"},{"lineNumber":114,"author":{"gitId":"moguries"},"content":" Ui.printLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":115,"author":{"gitId":"moguries"},"content":" System.out.println(deletedTaskMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":116,"author":{"gitId":"moguries"},"content":" Ui.printLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":117,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":118,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":119,"author":{"gitId":"moguries"},"content":" public static void printUnknownCommand() throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":120,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Ui.createLine() + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":121,"author":{"gitId":"moguries"},"content":" + \"hm? i don\u0027t understand what that means :(\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":122,"author":{"gitId":"moguries"},"content":" + \"you can try any of these commands instead!!\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":123,"author":{"gitId":"moguries"},"content":" + \"list\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":124,"author":{"gitId":"moguries"},"content":" + \"mark\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":125,"author":{"gitId":"moguries"},"content":" + \"unmark\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":126,"author":{"gitId":"moguries"},"content":" + \"delete\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":127,"author":{"gitId":"moguries"},"content":" + \"todo\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":128,"author":{"gitId":"moguries"},"content":" + \"deadline\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":129,"author":{"gitId":"moguries"},"content":" + \"event\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":130,"author":{"gitId":"moguries"},"content":" + \"bye\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":131,"author":{"gitId":"moguries"},"content":" + Ui.createLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":132,"author":{"gitId":"moguries"},"content":" throw new DukeException(exceptionMessage);","lastModifiedDate":"2024-02-07"},{"lineNumber":133,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":134,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":135,"author":{"gitId":"moguries"},"content":" public static void printErrorMessage(String message) {","lastModifiedDate":"2024-02-07"},{"lineNumber":136,"author":{"gitId":"moguries"},"content":" System.out.println(message);","lastModifiedDate":"2024-02-07"},{"lineNumber":137,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":138,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"moguries":138}},{"path":"src/test/java/chatbot/parser/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package chatbot.parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import chatbot.exception.DukeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import chatbot.storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"import chatbot.task.TaskList;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"import chatbot.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":"import java.io.File;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":"public class ParserTest {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" private Ui ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" private Parser parser;","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":" private Storage storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":" private static final String TEST_PATH_FILE \u003d \"./out/test.txt\";","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" @BeforeEach","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" public void setUp() throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":" this.parser \u003d new Parser(tasks, ui);","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" this.storage \u003d new Storage(TEST_PATH_FILE);","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" @AfterEach","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" public void tearDown() {","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":" File file \u003d new File(TEST_PATH_FILE);","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" file.delete();","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" public void testParseUserInput_byeCommand() throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":" assertTrue(parser.parseUserInput(\"bye\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" public void testParseUserInput_listCommand() throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" assertFalse(parser.parseUserInput(\"list\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" public void testParseUserInput_todoCommand_success() throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" assertFalse(parser.parseUserInput(\"todo test\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" assertEquals(1, tasks.getNumOfTasks());","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":" public void testParseUserInput_todoCommand_exceptionThrown() {","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" parser.parseUserInput(\"todo\");","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" fail();","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Ui.createLine() + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" + \"you didn\u0027t specify what you want to do! use this format instead:\\ntodo [task description]\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":" + Ui.createLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" assertEquals(exceptionMessage, e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":" public void testParseUserInput_deadlineCommand_success() throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"moguries"},"content":" assertFalse(parser.parseUserInput(\"deadline test /by 2023-12-31 23:59\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":" assertEquals(1, tasks.getNumOfTasks());","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":" public void testParseUserInput_deadlineCommand_exceptionThrown() {","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"moguries"},"content":" parser.parseUserInput(\"deadline test\");","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":" fail();","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"moguries"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Ui.createLine() + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"moguries"},"content":" + \"error! please specify the deadline task in this format:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"moguries"},"content":" + \"deadline [task description] /by [YYYY-MM-DD HH:MM]\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"moguries"},"content":" + Ui.createLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"moguries"},"content":" assertEquals(exceptionMessage, e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"moguries"},"content":" public void testParseUserInput_eventCommand_success() throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"moguries"},"content":" assertFalse(parser.parseUserInput(\"event test /from 2023-12-31 12:00 /to 2023-12-31 14:00\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"moguries"},"content":" assertEquals(1, tasks.getNumOfTasks());","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"moguries"},"content":" public void testParseUserInput_eventCommand_exceptionThrown() {","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"moguries"},"content":" parser.parseUserInput(\"event test /from sat\");","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"moguries"},"content":" fail();","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"moguries"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Ui.createLine() + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"moguries"},"content":" + \"error! please specify the event task in this format:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"moguries"},"content":" + \"event [task description] /from [YYYY-MM-DD HH:MM] /to [YYYY-MM-DD HH:MM]\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"moguries"},"content":" + Ui.createLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":" assertEquals(exceptionMessage, e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":102,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"moguries":104}},{"path":"src/test/java/chatbot/task/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"package chatbot.task;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"import chatbot.exception.DukeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"import chatbot.storage.Storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"import chatbot.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"import org.junit.jupiter.api.AfterEach;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"import java.io.File;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"moguries"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"moguries"},"content":"import static org.junit.jupiter.api.Assertions.*;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"moguries"},"content":"public class TaskListTest {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"moguries"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"moguries"},"content":" private Storage storage;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"moguries"},"content":" private static final String TEST_PATH_FILE \u003d \"./out/test.txt\";","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"moguries"},"content":" @BeforeEach","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"moguries"},"content":" public void setUp() throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"moguries"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"moguries"},"content":" this.storage \u003d new Storage(TEST_PATH_FILE);","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"moguries"},"content":" @AfterEach","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"moguries"},"content":" public void tearDown() {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"moguries"},"content":" File file \u003d new File(TEST_PATH_FILE);","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"moguries"},"content":" file.delete();","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"moguries"},"content":" public void addTodoTask_success() {","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"moguries"},"content":" tasks.addTodoTask(\"add todo task test\");","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"moguries"},"content":" assertEquals(1, tasks.getNumOfTasks());","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"moguries"},"content":" public void addDeadlineTask_success() {","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"moguries"},"content":" LocalDateTime deadline \u003d LocalDateTime.now().plusDays(1);","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"moguries"},"content":" tasks.addDeadlineTask(\"add deadline task test\", deadline);","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"moguries"},"content":" assertEquals(1, tasks.getNumOfTasks());","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"moguries"},"content":" public void addEventTask_success() {","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"moguries"},"content":" LocalDateTime start \u003d LocalDateTime.now();","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"moguries"},"content":" LocalDateTime end \u003d start.plusHours(2);","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"moguries"},"content":" tasks.addEventTask(\"add event task test\", start, end);","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"moguries"},"content":" assertEquals(1, tasks.getNumOfTasks());","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"moguries"},"content":" public void testDeleteTask_success() throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"moguries"},"content":" tasks.addTodoTask(\"todo task\");","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"moguries"},"content":" tasks.deleteTask(1);","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"moguries"},"content":" assertEquals(0, tasks.getNumOfTasks());","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"moguries"},"content":" public void testDeleteTask_exceptionThrown() {","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"moguries"},"content":" tasks.deleteTask(0);","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"moguries"},"content":" fail();","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"moguries"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Ui.createLine() + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"moguries"},"content":" + \"error: there\u0027s no such thing as task 0!\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"moguries"},"content":" + Ui.createLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"moguries"},"content":" assertEquals(exceptionMessage, e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"moguries"},"content":" public void testMarkTask_success() throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"moguries"},"content":" tasks.addTodoTask(\"todo task\");","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"moguries"},"content":" tasks.markTask(1);","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"moguries"},"content":" assertTrue(tasks.printTask(1).contains(\"[X]\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"moguries"},"content":" public void testMarkTask_exceptionThrown() {","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"moguries"},"content":" tasks.markTask(0);","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"moguries"},"content":" fail();","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"moguries"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Ui.createLine() + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"moguries"},"content":" + \"task 0? how can i mark a task that doesn\u0027t exist?!\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"moguries"},"content":" + Ui.createLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"moguries"},"content":" assertEquals(exceptionMessage, e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"moguries"},"content":" public void testUnmarkTask_success() throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"moguries"},"content":" tasks.addTodoTask(\"todo task\");","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"moguries"},"content":" tasks.markTask(1);","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"moguries"},"content":" tasks.unmarkTask(1);","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"moguries"},"content":" assertFalse(tasks.printTask(1).contains(\"[X]\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"moguries"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":102,"author":{"gitId":"moguries"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"moguries"},"content":" public void testUnmarkTask_exceptionThrown() throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"moguries"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"moguries"},"content":" tasks.unmarkTask(1);","lastModifiedDate":"2024-02-07"},{"lineNumber":106,"author":{"gitId":"moguries"},"content":" fail();","lastModifiedDate":"2024-02-07"},{"lineNumber":107,"author":{"gitId":"moguries"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":108,"author":{"gitId":"moguries"},"content":" String exceptionMessage \u003d Ui.createLine() + \"\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":109,"author":{"gitId":"moguries"},"content":" + \"hahaha! you only have 0 tasks in your task list!!\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":110,"author":{"gitId":"moguries"},"content":" + \"there\u0027s no task 1!\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":111,"author":{"gitId":"moguries"},"content":" + Ui.createLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":112,"author":{"gitId":"moguries"},"content":" assertEquals(exceptionMessage, e.getMessage());","lastModifiedDate":"2024-02-07"},{"lineNumber":113,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":114,"author":{"gitId":"moguries"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":115,"author":{"gitId":"moguries"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"moguries":115}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"moguries"},"content":"todo borrow book","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"moguries"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"moguries"},"content":"deadline return book /by Sunday 5pm","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"moguries"},"content":"event project meeting /from Mon 6th Nov 2pm /to Sun 28th Feb 4pm","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"moguries"},"content":"mark 3","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"moguries"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"moguries"},"content":"unmark 3","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"moguries"},"content":"deadline borrow materials /by not too sure :-(","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"moguries"},"content":"list","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"moguries"},"content":"bye","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"moguries":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":"moguries"},"content":"java -classpath ..\\bin chatbot.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-07"},{"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":{"moguries":1,"-":20}}] diff --git a/moguries_ip_master/commits.json b/moguries_ip_master/commits.json index 9d93400f..8ac40c3b 100644 --- a/moguries_ip_master/commits.json +++ b/moguries_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"moguries":[{"date":"2024-01-25","commitResults":[{"hash":"8e06bf934cc69a8ce9aa8b55aed2ddfefb5ca73d","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":6}}},{"hash":"cf76d39ca08f823ce63d233f9e6dfe29fbaec854","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":3}}},{"hash":"3d62e1583f206374f848f2c5b6f3f7f83c5db0df","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":2}}}]},{"date":"2024-01-28","commitResults":[{"hash":"54a17c60c63e071262b07c429727af024d166a2b","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":10}}},{"hash":"d031b246f00f13524d5c7f42b6008918997576a8","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":9}}},{"hash":"bcd8a4fc36cd0db3551463f114c6ba714e7e39a9","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"a1e5851c646d7ae8c07466fb179e786be379d521","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":186,"deletions":100}}},{"hash":"dd3f3aa4ae408a659cd03d317fd8ee26f79f66a2","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":2}}}]},{"date":"2024-01-31","commitResults":[{"hash":"353cb8deb504c56ceec9391a7ca175c1cd7781f0","isMergeCommit":false,"messageTitle":"Add Storage.java","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":207,"deletions":74}}},{"hash":"53f29e99b285d38ed57814b603763fca0ad2c070","isMergeCommit":true,"messageTitle":"Merge Level-7","messageBody":"Merge branch \u0027branch-Level-7\u0027\n","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-01","commitResults":[{"hash":"07b6ffb0db32621652150397880f259a56d50f93","isMergeCommit":false,"messageTitle":"Store dates and times as LocalDateTime objects","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":8},"java":{"insertions":240,"deletions":82}}},{"hash":"81d0850f58678b96a962f58e4a78648d146c4a2d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"Merge branch \u0027branch-Level-8\u0027\n","tags":["Level-8"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"moguries":{"java":622,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":18}},"authorContributionVariance":{"moguries":25722.63},"authorDisplayNameMap":{"moguries":"CS2103T-W09-1 HUAN..ESTE"}} +{"authorDailyContributionsMap":{"moguries":[{"date":"2024-01-25","commitResults":[{"hash":"8e06bf934cc69a8ce9aa8b55aed2ddfefb5ca73d","isMergeCommit":false,"messageTitle":"Level-0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":6}}},{"hash":"cf76d39ca08f823ce63d233f9e6dfe29fbaec854","isMergeCommit":false,"messageTitle":"Level-1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":3}}},{"hash":"3d62e1583f206374f848f2c5b6f3f7f83c5db0df","isMergeCommit":false,"messageTitle":"Level-2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":42,"deletions":2}}}]},{"date":"2024-01-28","commitResults":[{"hash":"54a17c60c63e071262b07c429727af024d166a2b","isMergeCommit":false,"messageTitle":"Level-3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":10}}},{"hash":"d031b246f00f13524d5c7f42b6008918997576a8","isMergeCommit":false,"messageTitle":"Level-4","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":119,"deletions":9}}},{"hash":"bcd8a4fc36cd0db3551463f114c6ba714e7e39a9","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":10,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"a1e5851c646d7ae8c07466fb179e786be379d521","isMergeCommit":false,"messageTitle":"Level-5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":186,"deletions":100}}},{"hash":"dd3f3aa4ae408a659cd03d317fd8ee26f79f66a2","isMergeCommit":false,"messageTitle":"Level-6","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":2}}}]},{"date":"2024-01-31","commitResults":[{"hash":"353cb8deb504c56ceec9391a7ca175c1cd7781f0","isMergeCommit":false,"messageTitle":"Add Storage.java","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":0},"java":{"insertions":207,"deletions":74}}},{"hash":"53f29e99b285d38ed57814b603763fca0ad2c070","isMergeCommit":true,"messageTitle":"Merge Level-7","messageBody":"Merge branch \u0027branch-Level-7\u0027\n","tags":["Level-7"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-01","commitResults":[{"hash":"07b6ffb0db32621652150397880f259a56d50f93","isMergeCommit":false,"messageTitle":"Store dates and times as LocalDateTime objects","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":8,"deletions":8},"java":{"insertions":240,"deletions":82}}},{"hash":"81d0850f58678b96a962f58e4a78648d146c4a2d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"Merge branch \u0027branch-Level-8\u0027\n","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-07","commitResults":[{"hash":"3e1f2149d6f23681f208104a7479f9f0689231a8","isMergeCommit":false,"messageTitle":"Add more OOP","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":385,"deletions":288}}},{"hash":"be9ee6b70c6edc14d274ceeeb02ce2e2b55b7df0","isMergeCommit":true,"messageTitle":"Add more OOP","messageBody":"OOP paradigm can provide better abstraction and organisation for Duke.\n\nExtract Ui, Storage, Parser and TaskList classes.\n\nMerge branch \u0027branch-A-MoreOOP\u0027\n","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"07c206f0ceeaa2fec07ffc7c7e20d75942cb9e03","isMergeCommit":false,"messageTitle":"Add packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":1},"java":{"insertions":58,"deletions":22},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"c3fcf97e640314757fd9b9897e0fdf0ec75cc46a","isMergeCommit":true,"messageTitle":"Organise classes into packages","messageBody":"Every class should be part of a package.\n\nAdd packages exception, parser, storage, task and ui under main package chatbot.\n\nMerge branch \u0027branch-A-Packages\u0027\n","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"7d5afa0211bda165da6b9be1e018f4a1e0e29717","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"Merge is necessary to add gradle support.\n","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"00e595f4538376d509ab81a38c2bab53379210f0","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":219,"deletions":0}}},{"hash":"e7752e91a686fe0aa4888e0f5acceb652ce65225","isMergeCommit":true,"messageTitle":"Add JUnit tests","messageBody":"We must test the behaviour of the code with JUnit.\n\nAdd ParserTest and TaskListTest classes.\n\nMerge branch \u0027branch-A-JUnit\u0027\n","tags":["v0.1","A-JUnit"],"fileTypesAndContributionMap":{}},{"hash":"a6f073f49ee2c3dea390737ec25c94c5521d5bd0","isMergeCommit":false,"messageTitle":"Package app as JAR file","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2}}},{"hash":"c399df7fa1c312da9e3cb9b0c90844bc373bcde7","isMergeCommit":true,"messageTitle":"Package the app as a JAR file","messageBody":"The app should be packaged and distributed for use.\n\nMerge branch \u0027branch-A-Jar\u0027\n","tags":["A-Jar"],"fileTypesAndContributionMap":{}},{"hash":"8001d25a52250db2dfbead73872a66c1ef885faa","isMergeCommit":false,"messageTitle":"Add JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":103,"deletions":1}}},{"hash":"dc19ea59b705fdd61d8b11d68a0849182ee570ae","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"f3af34492f2bec9ce88e0f00d9ad80f7ddc5aa2f","isMergeCommit":false,"messageTitle":"Follow the coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":8}}},{"hash":"87d2bbbb5840d1f120df7b9e0262d3fbec13a797","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"moguries":{"java":1080,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":2,"txt":24}},"authorContributionVariance":{"moguries":71629.26},"authorDisplayNameMap":{"moguries":"CS2103T-W09-1 HUAN..ESTE"}} diff --git a/raysonchia_ip_master/authorship.json b/raysonchia_ip_master/authorship.json index 19ff8b83..1761ec23 100644 --- a/raysonchia_ip_master/authorship.json +++ b/raysonchia_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":"raysonchia"},"content":" mainClass.set(\"podz.Podz\")","lastModifiedDate":"2024-02-04"},{"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":{"raysonchia":1,"-":41}},{"path":"data/podz.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"T | 0 | read book","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"D | 0 | return book | 2024-01-05 1800","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"T | 0 | join sports club","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"T | 1 | borrow book","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":4}},{"path":"src/main/java/podz/Podz.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.commands.ByeCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.commands.Command;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"import podz.parser.Parser;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"import podz.storage.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"import podz.task.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":"public class Podz {","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" private Storage storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" private Ui ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" private Parser parser;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" private Podz() {","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" storage \u003d new Storage(\"./data/podz.txt\");","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" tasks \u003d new TaskList(this.storage.loadTasks());","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" parser \u003d new Parser();","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" Podz podz \u003d new Podz();","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" podz.run();","lastModifiedDate":"2024-02-04"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" public void run() {","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" ui.printGreeting();","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" while (true) {","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" String input \u003d this.ui.getInput();","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":" Command command \u003d this.parser.parseCommand(input);","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":" command.setTasks(this.tasks);","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":" command.execute(this.ui);","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":" if (command instanceof ByeCommand) {","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":" isExit \u003d true;","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":41,"author":{"gitId":"raysonchia"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":42,"author":{"gitId":"raysonchia"},"content":" this.ui.printError(e);","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":44,"author":{"gitId":"raysonchia"},"content":" if (isExit) {","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"raysonchia"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"raysonchia"},"content":" } ","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"raysonchia":48,"-":1}},{"path":"src/main/java/podz/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" public void execute(Ui ui) {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" ui.printBye();","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":11}},{"path":"src/main/java/podz/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.exceptions.PodzException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.task.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"public abstract class Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" protected TaskList taskList;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" public void setTasks (TaskList taskList) {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" public abstract void execute(Ui ui) throws PodzException;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":15}},{"path":"src/main/java/podz/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.task.Deadline;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" private Deadline deadline;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" public DeadlineCommand (Deadline deadline) {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" public void execute(Ui ui) {","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" super.taskList.addTask(deadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" ui.printToUser(\"\\tGot it. I\u0027ve added this task:\",","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" \"\\t\" + this.deadline,","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" super.taskList.getListCounter());","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":20}},{"path":"src/main/java/podz/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.exceptions.PodzException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.task.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" private int index;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" public void execute(Ui ui) throws PodzException {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" if (this.index \u003c 0 || this.index \u003e\u003d super.taskList.getSize()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"Oh no!!! Invalid task index!\");","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" Task taskDeleted \u003d super.taskList.getTask(this.index);","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" super.taskList.deleteTask(this.index);","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" ui.printToUser(\"\\tNoted. I\u0027ve removed this task:\",","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" \"\\t\" + taskDeleted,","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" super.taskList.getListCounter());","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" } ","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"raysonchia":26}},{"path":"src/main/java/podz/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.task.Event;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" private Event event;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" public EventCommand (Event event) {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" this.event \u003d event;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" public void execute(Ui ui) {","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" super.taskList.addTask(event);","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" ui.printToUser(\"\\tGot it. I\u0027ve added this task:\",","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" \"\\t\" + this.event,","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" super.taskList.getListCounter());","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":20}},{"path":"src/main/java/podz/commands/IncorrectCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"public class IncorrectCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":" private Exception e;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" public IncorrectCommand (Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" this.e \u003d e;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" public void execute(Ui ui) {","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" ui.printError(e);","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":16}},{"path":"src/main/java/podz/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" public void execute (Ui ui) {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" ui.printToUser(super.taskList.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":11}},{"path":"src/main/java/podz/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.exceptions.PodzException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" private int index;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" public MarkCommand (int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" public void execute (Ui ui) throws PodzException {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" if (index \u003c 0 || index \u003e\u003d super.taskList.getSize()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"Oh no!!! Invalid task index!\");","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" super.taskList.markTask(index);","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" ui.printMarked(super.taskList.getTask(index));","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"raysonchia":21}},{"path":"src/main/java/podz/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.task.Todo;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" private Todo todo;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" public TodoCommand (Todo todo) {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" this.todo \u003d todo;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" public void execute(Ui ui) {","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" super.taskList.addTask(this.todo);","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" ui.printToUser(\"\\tGot it. I\u0027ve added this task:\",","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" \"\\t\" + this.todo,","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" super.taskList.getListCounter());","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":20}},{"path":"src/main/java/podz/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.exceptions.PodzException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" private int index;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" public UnmarkCommand (int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" public void execute (Ui ui) throws PodzException {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" if (index \u003c 0 || index \u003e\u003d super.taskList.getSize()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"Oh no!!! Invalid task index!\");","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" super.taskList.unmarkTask(index);","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" ui.printUnmarked(super.taskList.getTask(index));","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"raysonchia":21}},{"path":"src/main/java/podz/exceptions/PodzException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.exceptions;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"public class PodzException extends Exception {","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":" public PodzException(String msg) {","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":" super(msg);","lastModifiedDate":"2024-01-26"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" return super.getMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"raysonchia":11}},{"path":"src/main/java/podz/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.parser;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.commands.ByeCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.commands.Command;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"import podz.commands.DeadlineCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"import podz.commands.DeleteCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"import podz.commands.EventCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"import podz.commands.IncorrectCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"import podz.commands.ListCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":"import podz.commands.MarkCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"import podz.commands.TodoCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":"import podz.commands.UnmarkCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":"import podz.exceptions.PodzException;","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":"import podz.task.Deadline;","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":"import podz.task.Event;","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":"import podz.task.Todo;","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":"public class Parser {","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" public enum Commands {","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" LIST,","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" MARK,","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" UNMARK,","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" TODO,","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" DEADLINE,","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" EVENT,","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" DELETE,","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" BYE,","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" UNKNOWN;","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" public static Commands valueOfOrElse(String command) {","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" return Commands.valueOf(command);","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" return UNKNOWN;","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":" public Command parseCommand(String userInput) {","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":" String inputs[] \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"raysonchia"},"content":" String command \u003d inputs[0];","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"raysonchia"},"content":" Commands cmd \u003d Commands.valueOfOrElse(command.toUpperCase());","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"raysonchia"},"content":" switch (cmd) {","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"raysonchia"},"content":" case LIST:","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"raysonchia"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"raysonchia"},"content":" case MARK:","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"raysonchia"},"content":" return prepareMark(inputs);","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"raysonchia"},"content":" case UNMARK:","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"raysonchia"},"content":" return prepareUnmark(inputs);","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"raysonchia"},"content":" case TODO:","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"raysonchia"},"content":" return prepareTodo(inputs);","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"raysonchia"},"content":" case DEADLINE:","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"raysonchia"},"content":" return prepareDeadline(inputs);","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"raysonchia"},"content":" case EVENT:","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"raysonchia"},"content":" return prepareEvent(inputs);","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"raysonchia"},"content":" case DELETE:","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"raysonchia"},"content":" return prepareDelete(inputs);","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"raysonchia"},"content":" case BYE:","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"raysonchia"},"content":" return new ByeCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"raysonchia"},"content":" default:","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"raysonchia"},"content":" return new IncorrectCommand(","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"raysonchia"},"content":" new PodzException(","lastModifiedDate":"2024-02-04"},{"lineNumber":73,"author":{"gitId":"raysonchia"},"content":" \"ERROR!! The system did not recognize the command you entered.\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"raysonchia"},"content":" private Command prepareMark(String[] inputs) {","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"raysonchia"},"content":" if (inputs.length !\u003d 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"Wrong mark command format!!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":81,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"raysonchia"},"content":" int taskIndex \u003d parseTaskIndex(inputs[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"raysonchia"},"content":" return new MarkCommand(taskIndex);","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"raysonchia"},"content":" } catch (PodzException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":86,"author":{"gitId":"raysonchia"},"content":" return new IncorrectCommand(e);","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"raysonchia"},"content":" private Command prepareUnmark(String[] inputs) {","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"raysonchia"},"content":" if (inputs.length !\u003d 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"Wrong unmark command format!!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":94,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"raysonchia"},"content":" int taskIndex \u003d parseTaskIndex(inputs[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"raysonchia"},"content":" return new UnmarkCommand(taskIndex);","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"raysonchia"},"content":" } catch (PodzException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":99,"author":{"gitId":"raysonchia"},"content":" return new IncorrectCommand(e);","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"raysonchia"},"content":" private int parseTaskIndex(String input) throws PodzException {","lastModifiedDate":"2024-02-04"},{"lineNumber":104,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"raysonchia"},"content":" return Integer.parseInt(input.strip()) - 1;","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"raysonchia"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"Invalid task index format.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":108,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"raysonchia"},"content":" private Command prepareTodo(String[] inputs) {","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"raysonchia"},"content":" if (inputs.length !\u003d 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":114,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"Oh no! Your todo command is \"","lastModifiedDate":"2024-02-04"},{"lineNumber":115,"author":{"gitId":"raysonchia"},"content":" + \"incomplete!!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":116,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":117,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":118,"author":{"gitId":"raysonchia"},"content":" Todo todo \u003d new Todo(inputs[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"raysonchia"},"content":" return new TodoCommand(todo);","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"raysonchia"},"content":" } catch (PodzException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":121,"author":{"gitId":"raysonchia"},"content":" return new IncorrectCommand(e);","lastModifiedDate":"2024-02-03"},{"lineNumber":122,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":123,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":124,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":125,"author":{"gitId":"raysonchia"},"content":" private Command prepareDeadline(String[] inputs) {","lastModifiedDate":"2024-02-03"},{"lineNumber":126,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":127,"author":{"gitId":"raysonchia"},"content":" if (inputs.length !\u003d 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":128,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"OOPS!!! The deadline task \"","lastModifiedDate":"2024-02-04"},{"lineNumber":129,"author":{"gitId":"raysonchia"},"content":" + \"cannot be empty.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":130,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":131,"author":{"gitId":"raysonchia"},"content":" // separate to description: deadlineInfo[0]: return book ","lastModifiedDate":"2024-02-03"},{"lineNumber":132,"author":{"gitId":"raysonchia"},"content":" // and deadline: deadlineInfo[1]: by Sunday","lastModifiedDate":"2024-02-03"},{"lineNumber":133,"author":{"gitId":"raysonchia"},"content":" String[] deadlineInfo \u003d inputs[1].split(\"/by\", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":134,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":135,"author":{"gitId":"raysonchia"},"content":" if (deadlineInfo.length !\u003d 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":136,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"OOPS!!! Please add \"","lastModifiedDate":"2024-02-04"},{"lineNumber":137,"author":{"gitId":"raysonchia"},"content":" + \"a valid deadline.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":138,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":139,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":140,"author":{"gitId":"raysonchia"},"content":" Deadline deadline \u003d new Deadline(deadlineInfo[0].strip(), ","lastModifiedDate":"2024-02-03"},{"lineNumber":141,"author":{"gitId":"raysonchia"},"content":" deadlineInfo[1].strip());","lastModifiedDate":"2024-02-03"},{"lineNumber":142,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":143,"author":{"gitId":"raysonchia"},"content":" return new DeadlineCommand(deadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":144,"author":{"gitId":"raysonchia"},"content":" } catch (PodzException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":145,"author":{"gitId":"raysonchia"},"content":" return new IncorrectCommand(e);","lastModifiedDate":"2024-02-03"},{"lineNumber":146,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":147,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":148,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":149,"author":{"gitId":"raysonchia"},"content":" private Command prepareEvent(String[] inputs) {","lastModifiedDate":"2024-02-03"},{"lineNumber":150,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":151,"author":{"gitId":"raysonchia"},"content":" if (inputs.length !\u003d 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":152,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"OOPS!!! The event task \"","lastModifiedDate":"2024-02-04"},{"lineNumber":153,"author":{"gitId":"raysonchia"},"content":" + \"cannot be empty.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":154,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":155,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":156,"author":{"gitId":"raysonchia"},"content":" String[] eventInfo \u003d inputs[1].split(\"/\", 3);","lastModifiedDate":"2024-02-03"},{"lineNumber":157,"author":{"gitId":"raysonchia"},"content":" if (eventInfo.length !\u003d 3) {","lastModifiedDate":"2024-02-03"},{"lineNumber":158,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"OOPS!!! Please check \"","lastModifiedDate":"2024-02-04"},{"lineNumber":159,"author":{"gitId":"raysonchia"},"content":" + \"the event format again.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":160,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":161,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":162,"author":{"gitId":"raysonchia"},"content":" Event event \u003d new Event(eventInfo[0].strip(), ","lastModifiedDate":"2024-02-03"},{"lineNumber":163,"author":{"gitId":"raysonchia"},"content":" eventInfo[1].replaceFirst(\"from\", \"\").strip(),","lastModifiedDate":"2024-02-03"},{"lineNumber":164,"author":{"gitId":"raysonchia"},"content":" eventInfo[2].replaceFirst(\"to\", \"\").strip());","lastModifiedDate":"2024-02-03"},{"lineNumber":165,"author":{"gitId":"raysonchia"},"content":" return new EventCommand(event);","lastModifiedDate":"2024-02-03"},{"lineNumber":166,"author":{"gitId":"raysonchia"},"content":" } catch (PodzException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":167,"author":{"gitId":"raysonchia"},"content":" return new IncorrectCommand(e);","lastModifiedDate":"2024-02-03"},{"lineNumber":168,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":169,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":170,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":171,"author":{"gitId":"raysonchia"},"content":" private Command prepareDelete(String[] inputs) {","lastModifiedDate":"2024-02-03"},{"lineNumber":172,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":173,"author":{"gitId":"raysonchia"},"content":" if (inputs.length !\u003d 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":174,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"OOPS!!! The delete command \"","lastModifiedDate":"2024-02-04"},{"lineNumber":175,"author":{"gitId":"raysonchia"},"content":" + \"cannot be empty.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":176,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":177,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":178,"author":{"gitId":"raysonchia"},"content":" int index \u003d Integer.parseInt(inputs[1]) - 1;","lastModifiedDate":"2024-02-03"},{"lineNumber":179,"author":{"gitId":"raysonchia"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-02-03"},{"lineNumber":180,"author":{"gitId":"raysonchia"},"content":" } catch (PodzException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":181,"author":{"gitId":"raysonchia"},"content":" return new IncorrectCommand(e);","lastModifiedDate":"2024-02-03"},{"lineNumber":182,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":183,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":184,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":184}},{"path":"src/main/java/podz/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import java.io.File;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":"import podz.task.Deadline;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"import podz.task.Event;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":"import podz.task.Task;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":"import podz.task.Todo;","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":"public class Storage {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" private static String FILE_PATH;","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" public Storage (String filePath) {","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" Storage.FILE_PATH \u003d filePath;","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" public static void updateSaved(ArrayList\u003cTask\u003e AL) {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" File data \u003d initDataFile();","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(data));","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" for (Task t : AL) {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" writer.write(t.savedFormat());","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" writer.newLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" writer.close();","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":" public ArrayList\u003cTask\u003e loadTasks() {","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":" ArrayList\u003cTask\u003e taskAL \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"raysonchia"},"content":" File data \u003d initDataFile();","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"raysonchia"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(data));","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"raysonchia"},"content":" String task;","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"raysonchia"},"content":" while ((task \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"raysonchia"},"content":" String[] taskInfo \u003d task.split(\" \\\\| \");","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"raysonchia"},"content":" if (taskInfo[0].equals(\"T\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"raysonchia"},"content":" Todo todo \u003d new Todo(taskInfo[2]);","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"raysonchia"},"content":" if (Integer.parseInt(taskInfo[1]) \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"raysonchia"},"content":" todo.mark();","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"raysonchia"},"content":" taskAL.add(todo);","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"raysonchia"},"content":" } else if (taskInfo[0].equals(\"D\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"raysonchia"},"content":" Deadline deadline \u003d new Deadline(taskInfo[2], taskInfo[3]);","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"raysonchia"},"content":" if (Integer.parseInt(taskInfo[1]) \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"raysonchia"},"content":" deadline.mark();","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"raysonchia"},"content":" taskAL.add(deadline);","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"raysonchia"},"content":" } else if (taskInfo[0].equals(\"E\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":61,"author":{"gitId":"raysonchia"},"content":" Event event \u003d new Event(taskInfo[2], taskInfo[3], taskInfo[4]);","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"raysonchia"},"content":" if (Integer.parseInt(taskInfo[1]) \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"raysonchia"},"content":" event.mark();","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"raysonchia"},"content":" taskAL.add(event);","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"raysonchia"},"content":" reader.close();","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"raysonchia"},"content":" return taskAL;","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"raysonchia"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"raysonchia"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"raysonchia"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"raysonchia"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"raysonchia"},"content":" return taskAL;","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"raysonchia"},"content":" private static File initDataFile () throws IOException {","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"raysonchia"},"content":" File data \u003d new File(FILE_PATH);","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"raysonchia"},"content":" if (!data.getParentFile().exists()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"raysonchia"},"content":" data.getParentFile().mkdirs();","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"raysonchia"},"content":" if (!data.exists()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"raysonchia"},"content":" data.createNewFile();","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"raysonchia"},"content":" return data;","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":90,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"raysonchia":90}},{"path":"src/main/java/podz/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" protected String by, formattedBy, time;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" String dateAndTime[] \u003d by.split(\" \");","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" if (dateAndTime.length \u003e\u003d 2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" LocalDate d1 \u003d LocalDate.parse(dateAndTime[0]);","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" int hour \u003d Integer.parseInt(dateAndTime[1].substring(0, 2));","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" int minute \u003d Integer.parseInt(dateAndTime[1].substring(2));","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" LocalDateTime dateTime \u003d d1.atTime(hour, minute);","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMMM dd yyyy HH:mm\");","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" String formattedString \u003d dateTime.format(formatter);","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" this.formattedBy \u003d formattedString;","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" LocalDate d1 \u003d LocalDate.parse(dateAndTime[0]);","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMMM dd yyyy\");","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" String formattedString \u003d d1.format(formatter);","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" this.formattedBy \u003d formattedString;","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" public String savedFormat() {","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":" return \"D \" + \"|\" + super.savedFormat() + \" | \" + this.by;","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.formattedBy + \")\";","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"raysonchia":42}},{"path":"src/main/java/podz/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" protected String from, to, formattedFrom, formattedTo;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" String fromDT[] \u003d from.split(\" \");","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" String toDT[] \u003d to.split(\" \");","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" this.formattedFrom \u003d formatDT(fromDT);","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" this.formattedTo \u003d formatDT(toDT);","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" private String formatDT(String[] dateAndTime) {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" String formattedString;","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" if (dateAndTime.length \u003e\u003d 2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" LocalDate d1 \u003d LocalDate.parse(dateAndTime[0]);","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" int hour \u003d Integer.parseInt(dateAndTime[1].substring(0, 2));","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" int minute \u003d Integer.parseInt(dateAndTime[1].substring(2));","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" LocalDateTime dateTime \u003d d1.atTime(hour, minute);","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMMM dd yyyy HH:mm\");","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" formattedString \u003d dateTime.format(formatter);","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" LocalDate d1 \u003d LocalDate.parse(dateAndTime[0]);","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMMM dd yyyy\");","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":" formattedString \u003d d1.format(formatter);","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":" return formattedString;","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"raysonchia"},"content":" public String savedFormat() {","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"raysonchia"},"content":" return \"E \" + \"|\" + super.savedFormat() + \" | \" + this.from + \" | \" + this.to;","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":47,"author":{"gitId":"raysonchia"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":48,"author":{"gitId":"raysonchia"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.formattedFrom + \" to: \" + this.formattedTo + \")\";","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":50,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"raysonchia":50}},{"path":"src/main/java/podz/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" public void mark() {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" public void unmark() {","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" public String savedFormat() {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" String isDoneStr \u003d \" 0 \";","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" if (isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" isDoneStr \u003d \" 1 \";","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" return isDoneStr + \"| \" + description;","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"raysonchia":36}},{"path":"src/main/java/podz/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.storage.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"public class TaskList {","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" protected ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" public void addTask(Task t) {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" this.tasks.add(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" Storage.updateSaved(tasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" public void deleteTask(int i) {","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" this.tasks.remove(i);","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" Storage.updateSaved(tasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" public Task getTask(int i) {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" return this.tasks.get(i);","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" public int getSize() {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" return this.tasks.size();","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" public void markTask(int i) {","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" this.tasks.get(i).mark();","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" Storage.updateSaved(tasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":" public void unmarkTask(int i) {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":" this.tasks.get(i).unmark();","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":" Storage.updateSaved(tasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"raysonchia"},"content":" public String getListCounter() {","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"raysonchia"},"content":" return \"\\tNow you have \" + this.tasks.size() + \" tasks in the list.\";","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"raysonchia"},"content":" public String toString() {","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"raysonchia"},"content":" String taskStr \u003d \"\\tHere are the tasks in your list:\";","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"raysonchia"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"raysonchia"},"content":" int num \u003d i + 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"raysonchia"},"content":" String nextTask \u003d \"\\t\" + num + \". \" + tasks.get(i);","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"raysonchia"},"content":" taskStr +\u003d \"\\n\" + nextTask;","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"raysonchia"},"content":" return taskStr;","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"raysonchia":55}},{"path":"src/main/java/podz/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" public String savedFormat() {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" return \"T \" + \"|\" + super.savedFormat();","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"raysonchia":16}},{"path":"src/main/java/podz/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.task.Task;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"public class Ui {","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" private static final String DIV \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" private Scanner sc;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" public Ui() {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" public String getInput() {","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" return sc.nextLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" public void printGreeting() {","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" printDiv();","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" System.out.println(\"\\tHello! I\u0027m Podz.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" System.out.println(\"\\tWhat can I do for you?\");","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" printDiv();","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" public void printBye() {","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" printToUser(\"\\tBye. Hope to see you again soon!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" public void printToUser(String... message) {","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" printDiv();","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" for (String m : message) {","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" System.out.println(m);","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" printDiv();","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":" public void printError(Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":" printToUser(\"\\t\" + e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"raysonchia"},"content":" public void printMarked(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"raysonchia"},"content":" printToUser(\"\\tNice! I\u0027ve marked this task as done: \",","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"raysonchia"},"content":" \"\\t\" + task);","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"raysonchia"},"content":" public void printUnmarked(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"raysonchia"},"content":" printToUser(\"\\tOK, I\u0027ve marked this task as not done yet: \",","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"raysonchia"},"content":" \"\\t\" + task);","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"raysonchia"},"content":" private void printDiv() {","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"raysonchia"},"content":" System.out.println(\"\\t\" + DIV);","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":54}},{"path":"src/test/java/podz/commands/DeleteCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"import podz.exceptions.PodzException;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"import podz.stubs.TaskListStub;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"import podz.task.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" public void execute_validIndex_success() {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" TaskListStub taskListStub \u003d new TaskListStub(new ArrayList\u003cTask\u003e());","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" // taskList will have 3 tasks, so valid index from 0-2","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" taskListStub.initDataThreeTasks();","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" int initSize \u003d taskListStub.getSize();","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" int indexDeleted \u003d 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" Task taskDeleted \u003d taskListStub.getTask(indexDeleted);","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" DeleteCommand cmd \u003d new DeleteCommand(indexDeleted);","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" cmd.setTasks(taskListStub);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" cmd.execute(new Ui());","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" } catch (PodzException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" fail(); // should not throw error","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":" // check if a task was deleted","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":" assertEquals(initSize - 1, taskListStub.getSize());","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":" // check if the correct task was deleted","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":" assertFalse(taskListStub.getTaskList().contains(taskDeleted));","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"raysonchia"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"raysonchia"},"content":" public void execute_indexOutOfRange_exceptionThrown() {","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"raysonchia"},"content":" TaskListStub taskListStub \u003d new TaskListStub(new ArrayList\u003cTask\u003e());","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"raysonchia"},"content":" taskListStub.initDataThreeTasks();","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"raysonchia"},"content":" // index \u003c 0","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"raysonchia"},"content":" DeleteCommand cmd \u003d new DeleteCommand(-1);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"raysonchia"},"content":" cmd.setTasks(taskListStub);","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"raysonchia"},"content":" Exception tc1 \u003d assertThrows(","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"raysonchia"},"content":" PodzException.class, ","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"raysonchia"},"content":" () -\u003e cmd.execute(new Ui())","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"raysonchia"},"content":" );","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"raysonchia"},"content":" assertEquals(\"Oh no!!! Invalid task index!\", tc1.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"raysonchia"},"content":" // index \u003e size","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"raysonchia"},"content":" Command cmd2 \u003d new DeleteCommand(taskListStub.getSize());","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"raysonchia"},"content":" cmd2.setTasks(taskListStub);","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"raysonchia"},"content":" Exception tc2 \u003d assertThrows(","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"raysonchia"},"content":" PodzException.class, ","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"raysonchia"},"content":" () -\u003e cmd2.execute(new Ui())","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"raysonchia"},"content":" );","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"raysonchia"},"content":" assertEquals(\"Oh no!!! Invalid task index!\", tc2.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"raysonchia":68}},{"path":"src/test/java/podz/commands/MarkCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"import podz.exceptions.PodzException;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"import podz.stubs.TaskListStub;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"import podz.task.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":"public class MarkCommandTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" public void execute_validIndex_success() {","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" TaskListStub taskListStub \u003d new TaskListStub(new ArrayList\u003cTask\u003e());","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" // taskList will have 3 tasks, so valid index from 0-2","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" taskListStub.initDataThreeTasks();","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" int indexMarked \u003d 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" Task taskMarked \u003d taskListStub.getTask(indexMarked);","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" MarkCommand cmd \u003d new MarkCommand(indexMarked);","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" cmd.setTasks(taskListStub);","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" cmd.execute(new Ui());","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" } catch (PodzException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" fail();","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":" // check if task marked","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":" assertEquals(\"X\", taskMarked.getStatusIcon());","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":" public void execute_indexOutOfRange_exceptionThrown() {","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"raysonchia"},"content":" TaskListStub taskListStub \u003d new TaskListStub(new ArrayList\u003cTask\u003e());","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"raysonchia"},"content":" taskListStub.initDataThreeTasks();","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"raysonchia"},"content":" // index \u003c 0","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"raysonchia"},"content":" MarkCommand cmd \u003d new MarkCommand(-1);","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"raysonchia"},"content":" cmd.setTasks(taskListStub);","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"raysonchia"},"content":" Exception tc1 \u003d assertThrows(","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"raysonchia"},"content":" PodzException.class, ","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"raysonchia"},"content":" () -\u003e cmd.execute(new Ui())","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"raysonchia"},"content":" );","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"raysonchia"},"content":" assertEquals(\"Oh no!!! Invalid task index!\", tc1.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"raysonchia"},"content":" // index \u003e size","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"raysonchia"},"content":" Command cmd2 \u003d new MarkCommand(taskListStub.getSize());","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"raysonchia"},"content":" cmd2.setTasks(taskListStub);","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"raysonchia"},"content":" Exception tc2 \u003d assertThrows(","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"raysonchia"},"content":" PodzException.class, ","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"raysonchia"},"content":" () -\u003e cmd2.execute(new Ui())","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"raysonchia"},"content":" );","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"raysonchia"},"content":" assertEquals(\"Oh no!!! Invalid task index!\", tc2.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"raysonchia":65}},{"path":"src/test/java/podz/stubs/TaskListStub.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.stubs;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"import podz.task.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"import podz.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"import podz.task.Todo;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"public class TaskListStub extends TaskList {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" public TaskListStub(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" super(tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" public void deleteTask(int i) {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" super.tasks.remove(i);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" public void markTask(int i) {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" super.tasks.get(i).mark();","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" public void initDataThreeTasks() {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" super.tasks.add(new Todo(\"eat chicken\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" super.tasks.add(new Todo(\"sleep\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" super.tasks.add(new Todo(\"read\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" return super.tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"raysonchia":33}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"todo read book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"deadline return book /by 2024-01-05 1800","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"event project meeting /from 2024-02-01 1200 /to 2024-02-01 1600","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"todo join sports club","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"mark 5","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"delete 3","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":"delete 10","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":"todo","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":"blah","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":"deadline run","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":"event sleep /from Mon 10pm","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"raysonchia":18}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":"if ! find ../src/main/java/podz -name \u0027*.java\u0027 -type f -print0 | xargs -0 javac -d ../bin -Xlint:none; ","lastModifiedDate":"2024-02-04"},{"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":"raysonchia"},"content":"java -classpath ../bin podz.Podz \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-06"},{"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":{"raysonchia":2,"-":36}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" mainClass.set(\"podz.Podz\")","lastModifiedDate":"2024-02-04"},{"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":"raysonchia"},"content":" archiveBaseName \u003d \"podz\"","lastModifiedDate":"2024-02-07"},{"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":{"raysonchia":2,"-":40}},{"path":"data/podz.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"T | 0 | read book","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"D | 0 | return book | 2024-01-05 1800","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"T | 0 | join sports club","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"T | 1 | borrow book","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":4}},{"path":"src/main/java/podz/Podz.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.commands.ByeCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.commands.Command;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"import podz.parser.Parser;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"import podz.storage.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"import podz.task.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" * Represents the entry of a task management application.","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":"public class Podz {","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" private Storage storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" private Ui ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" private Parser parser;","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" private Podz() {","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" storage \u003d new Storage(\"./data/podz.txt\");","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" tasks \u003d new TaskList(this.storage.loadTasks());","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" parser \u003d new Parser();","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" * The main method to start the Podz application.","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" * @param args the command line arguments","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" Podz podz \u003d new Podz();","lastModifiedDate":"2024-02-04"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" podz.run();","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":" * Runs the Podz application, allowing user to interact with the task manager.","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":" public void run() {","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":" ui.printGreeting();","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"raysonchia"},"content":" while (true) {","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"raysonchia"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-01-26"},{"lineNumber":45,"author":{"gitId":"raysonchia"},"content":" String input \u003d this.ui.getInput();","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"raysonchia"},"content":" Command command \u003d this.parser.parseCommand(input);","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"raysonchia"},"content":" command.setTasks(this.tasks);","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"raysonchia"},"content":" command.execute(this.ui);","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"raysonchia"},"content":" if (command instanceof ByeCommand) {","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"raysonchia"},"content":" isExit \u003d true;","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":52,"author":{"gitId":"raysonchia"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-01-26"},{"lineNumber":53,"author":{"gitId":"raysonchia"},"content":" this.ui.printError(e);","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":55,"author":{"gitId":"raysonchia"},"content":" if (isExit) {","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"raysonchia"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"raysonchia"},"content":" } ","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"raysonchia":59,"-":1}},{"path":"src/main/java/podz/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":" * Represents a command to say goodbye in the task manager.","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" * Executes the command to say goodbye to the user.","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" * @param ui the user interface for interaction","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" public void execute(Ui ui) {","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" ui.printBye();","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":18}},{"path":"src/main/java/podz/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.exceptions.PodzException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.task.TaskList;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" * Represents a command to be executed in the task manager.","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":"public abstract class Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" protected TaskList taskList;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" * Sets the task list for the command.","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" * @param taskList the task list to be set","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" public void setTasks(TaskList taskList) {","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" * Executes the command with the provided user interface.","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" * @param ui the user interface for interaction","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" * @throws PodzException if there is an issue executing the command","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" public abstract void execute(Ui ui) throws PodzException;","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":29}},{"path":"src/main/java/podz/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.task.Deadline;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" * Represents a command to add a deadline task to the task manager.","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" private Deadline deadline;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" * Constructs a DeadlineCommand with the specified Deadline task.","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" * @param deadline the deadline task to be added","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" public DeadlineCommand (Deadline deadline) {","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" * Executes the deadline command to add the Deadline task to the task manager.","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" public void execute(Ui ui) {","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" super.taskList.addTask(deadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" ui.printToUser(\"\\tGot it. I\u0027ve added this task:\",","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" \"\\t\" + this.deadline,","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" super.taskList.getListCounter());","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":31}},{"path":"src/main/java/podz/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.exceptions.PodzException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.task.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" * Represents a command to delete a task from the task manager.","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" private int index;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" * Constructs a DeleteCommand object with the specified task index.","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" * @param index the index of the task to be deleted","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" public DeleteCommand(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" * Executes the delete command to remove a task from the task manager.","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" * @param ui the user interface that interacts with the user","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" * @throws PodzException if the task index is invalid","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" public void execute(Ui ui) throws PodzException {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" if (this.index \u003c 0 || this.index \u003e\u003d super.taskList.getSize()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"Oh no!!! Invalid task index!\");","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" Task taskDeleted \u003d super.taskList.getTask(this.index);","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" super.taskList.deleteTask(this.index);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":" ui.printToUser(\"\\tNoted. I\u0027ve removed this task:\",","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":" \"\\t\" + taskDeleted,","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":" super.taskList.getListCounter());","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":" } ","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"raysonchia":40}},{"path":"src/main/java/podz/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.task.Event;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" * Represents a command to add an event task in the task manager.","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" private Event event;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" * Constructs an EventCommand object with the specified event task.","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" * @param event the event task to be added","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" public EventCommand(Event event) {","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" this.event \u003d event;","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" * Executes the event command to add an event task.","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" * @param ui the user interface that interacts with the user","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" public void execute(Ui ui) {","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" super.taskList.addTask(event);","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" ui.printToUser(\"\\tGot it. I\u0027ve added this task:\",","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" \"\\t\" + this.event,","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" super.taskList.getListCounter());","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":33}},{"path":"src/main/java/podz/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":" * Represents a command to find tasks based on a keyword.","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" private String keyword;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" * Constructs a FindCommand object with the specified keyword.","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" * @param keyword the keyword to search for","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" public FindCommand(String keyword) {","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" * Executes the find command to search for tasks with the keyword.","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" * @param ui The user interface to interact with the user.","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" public void execute(Ui ui) {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" ui.printToUser(","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" super.taskList","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" .findTasks(this.keyword));","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"raysonchia":31}},{"path":"src/main/java/podz/commands/IncorrectCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":" * Represents a command to handle incorrect commands in the task manager.","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"public class IncorrectCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" private Exception e;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" * Constructs an IncorrectCommand object with the specified exception.","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" * @param e the exception to be handled","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" public IncorrectCommand(Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" this.e \u003d e;","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" * Executes the incorrect command to print the error message.","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" * @param ui the user interface that interacts with the user","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" public void execute(Ui ui) {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" ui.printError(e);","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":29}},{"path":"src/main/java/podz/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":" * Represents a command to list all tasks in the task manager.","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" * Executes the list command to display all tasks to the user.","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" * @param ui the user interface that interacts with the user","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" public void execute(Ui ui) {","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" ui.printToUser(super.taskList.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":19}},{"path":"src/main/java/podz/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.exceptions.PodzException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" * Represents a command to mark a task as completed in the task manager.","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" private int index;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" * Constructs a MarkCommand object with the specified task index.","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" * @param index the index of the task to be marked","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" public MarkCommand(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" * Executes the mark command to mark a task as completed.","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" * @param ui the user interface that interacts with the user","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" * @throws PodzException if the task index is invalid","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" public void execute(Ui ui) throws PodzException {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" if (index \u003c 0 || index \u003e\u003d super.taskList.getSize()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"Oh no!!! Invalid task index!\");","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" super.taskList.markTask(index);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" ui.printMarked(super.taskList.getTask(index));","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"raysonchia":35}},{"path":"src/main/java/podz/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.task.Todo;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" * Represents a command to add a todo task in the task manager.","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" private Todo todo;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" * Constructs a TodoCommand object with the specified todo task.","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" * @param todo the todo task to be added","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" public TodoCommand(Todo todo) {","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" this.todo \u003d todo;","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" * Executes the todo command to add a todo task.","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" * @param ui the user interface that interacts with the user","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" public void execute(Ui ui) {","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" super.taskList.addTask(this.todo);","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" ui.printToUser(\"\\tGot it. I\u0027ve added this task:\",","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" \"\\t\" + this.todo,","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" super.taskList.getListCounter());","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":33}},{"path":"src/main/java/podz/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.exceptions.PodzException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" * Represents a command to unmark a task in the task manager.","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" private int index;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" * Constructs an UnmarkCommand object with the specified task index.","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" * @param index the index of the task to be unmarked","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" public UnmarkCommand(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" this.index \u003d index;","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" * Executes the unmark command to unmark a task.","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" * @param ui the user interface that interacts with the user","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" * @throws PodzException if the task index is invalid","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" public void execute(Ui ui) throws PodzException {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" if (index \u003c 0 || index \u003e\u003d super.taskList.getSize()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"Oh no!!! Invalid task index!\");","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" super.taskList.unmarkTask(index);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" ui.printUnmarked(super.taskList.getTask(index));","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"raysonchia":35}},{"path":"src/main/java/podz/exceptions/PodzException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.exceptions;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":" * Represents a custom exception for Podz application.","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"public class PodzException extends Exception {","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" * Constructs a PodzException object with the specified error message.","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" * @param msg the error message for the exception","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" public PodzException(String msg) {","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" super(msg);","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" * Returns a string representation of the exception.","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" * @return a string representing the exception","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-01-26"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" public String toString() {","lastModifiedDate":"2024-01-26"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" return super.getMessage();","lastModifiedDate":"2024-01-26"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-26"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-01-26"}],"authorContributionMap":{"raysonchia":26}},{"path":"src/main/java/podz/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.parser;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import podz.commands.ByeCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.commands.Command;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"import podz.commands.DeadlineCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"import podz.commands.DeleteCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"import podz.commands.EventCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"import podz.commands.FindCommand;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"import podz.commands.IncorrectCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":"import podz.commands.ListCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"import podz.commands.MarkCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":"import podz.commands.TodoCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":"import podz.commands.UnmarkCommand;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":"import podz.exceptions.PodzException;","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":"import podz.task.Deadline;","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":"import podz.task.Event;","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":"import podz.task.Todo;","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" * Represents the parser of the user\u0027s input.","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":"public class Parser {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" public enum Commands {","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" LIST,","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" MARK,","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" UNMARK,","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" TODO,","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" DEADLINE,","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" EVENT,","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" DELETE,","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" FIND,","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" BYE,","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" UNKNOWN;","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":" * Returns the enum value corresponding to command input or a default value.","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":" * @param command the string to be converted into an enum value","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":" * @return the enum value representing the string","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"raysonchia"},"content":" public static Commands valueOfOrElse(String command) {","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"raysonchia"},"content":" return Commands.valueOf(command);","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"raysonchia"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"raysonchia"},"content":" return UNKNOWN;","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"raysonchia"},"content":" * Returns the \u003ccode\u003eCommand\u003c/code\u003e based on the user\u0027s input.","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"raysonchia"},"content":" * @param userInput the input of the user","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"raysonchia"},"content":" * @return the \u003ccode\u003eCommand\u003c/code\u003e based on specified input","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"raysonchia"},"content":" public Command parseCommand(String userInput) {","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"raysonchia"},"content":" String[] inputs \u003d userInput.split(\" \", 2);","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"raysonchia"},"content":" String command \u003d inputs[0];","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"raysonchia"},"content":" Commands cmd \u003d Commands.valueOfOrElse(command.toUpperCase());","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"raysonchia"},"content":" switch (cmd) {","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"raysonchia"},"content":" case LIST:","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"raysonchia"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"raysonchia"},"content":" case MARK:","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"raysonchia"},"content":" return prepareMark(inputs);","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"raysonchia"},"content":" case UNMARK:","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"raysonchia"},"content":" return prepareUnmark(inputs);","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"raysonchia"},"content":" case TODO:","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"raysonchia"},"content":" return prepareTodo(inputs);","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"raysonchia"},"content":" case DEADLINE:","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"raysonchia"},"content":" return prepareDeadline(inputs);","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"raysonchia"},"content":" case EVENT:","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"raysonchia"},"content":" return prepareEvent(inputs);","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"raysonchia"},"content":" case DELETE:","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"raysonchia"},"content":" return prepareDelete(inputs);","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"raysonchia"},"content":" case BYE:","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"raysonchia"},"content":" return new ByeCommand();","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"raysonchia"},"content":" case FIND:","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"raysonchia"},"content":" return prepareFind(inputs);","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"raysonchia"},"content":" default:","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"raysonchia"},"content":" return new IncorrectCommand(","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"raysonchia"},"content":" new PodzException(","lastModifiedDate":"2024-02-04"},{"lineNumber":92,"author":{"gitId":"raysonchia"},"content":" \"ERROR!! The system did not recognize the command you entered.\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"raysonchia"},"content":" private Command prepareMark(String[] inputs) {","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"raysonchia"},"content":" if (inputs.length !\u003d 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"Wrong mark command format!!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":100,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"raysonchia"},"content":" int taskIndex \u003d parseTaskIndex(inputs[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"raysonchia"},"content":" return new MarkCommand(taskIndex);","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"raysonchia"},"content":" } catch (PodzException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":105,"author":{"gitId":"raysonchia"},"content":" return new IncorrectCommand(e);","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"raysonchia"},"content":" private Command prepareUnmark(String[] inputs) {","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"raysonchia"},"content":" if (inputs.length !\u003d 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"Wrong unmark command format!!\");","lastModifiedDate":"2024-02-04"},{"lineNumber":113,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":114,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":115,"author":{"gitId":"raysonchia"},"content":" int taskIndex \u003d parseTaskIndex(inputs[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":116,"author":{"gitId":"raysonchia"},"content":" return new UnmarkCommand(taskIndex);","lastModifiedDate":"2024-02-03"},{"lineNumber":117,"author":{"gitId":"raysonchia"},"content":" } catch (PodzException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":118,"author":{"gitId":"raysonchia"},"content":" return new IncorrectCommand(e);","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":121,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":122,"author":{"gitId":"raysonchia"},"content":" private int parseTaskIndex(String input) throws PodzException {","lastModifiedDate":"2024-02-04"},{"lineNumber":123,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":124,"author":{"gitId":"raysonchia"},"content":" return Integer.parseInt(input.strip()) - 1;","lastModifiedDate":"2024-02-03"},{"lineNumber":125,"author":{"gitId":"raysonchia"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":126,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"Invalid task index format.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":127,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":128,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":129,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":130,"author":{"gitId":"raysonchia"},"content":" private Command prepareTodo(String[] inputs) {","lastModifiedDate":"2024-02-03"},{"lineNumber":131,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":132,"author":{"gitId":"raysonchia"},"content":" if (inputs.length !\u003d 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":133,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"Oh no! Your todo command is \"","lastModifiedDate":"2024-02-04"},{"lineNumber":134,"author":{"gitId":"raysonchia"},"content":" + \"incomplete!!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":135,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":136,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":137,"author":{"gitId":"raysonchia"},"content":" Todo todo \u003d new Todo(inputs[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":138,"author":{"gitId":"raysonchia"},"content":" return new TodoCommand(todo);","lastModifiedDate":"2024-02-03"},{"lineNumber":139,"author":{"gitId":"raysonchia"},"content":" } catch (PodzException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":140,"author":{"gitId":"raysonchia"},"content":" return new IncorrectCommand(e);","lastModifiedDate":"2024-02-03"},{"lineNumber":141,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":142,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":143,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":144,"author":{"gitId":"raysonchia"},"content":" private Command prepareDeadline(String[] inputs) {","lastModifiedDate":"2024-02-03"},{"lineNumber":145,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":146,"author":{"gitId":"raysonchia"},"content":" if (inputs.length !\u003d 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":147,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"OOPS!!! The deadline task \"","lastModifiedDate":"2024-02-04"},{"lineNumber":148,"author":{"gitId":"raysonchia"},"content":" + \"cannot be empty.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":149,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":150,"author":{"gitId":"raysonchia"},"content":" // separate to description: deadlineInfo[0]: return book ","lastModifiedDate":"2024-02-03"},{"lineNumber":151,"author":{"gitId":"raysonchia"},"content":" // and deadline: deadlineInfo[1]: by Sunday","lastModifiedDate":"2024-02-03"},{"lineNumber":152,"author":{"gitId":"raysonchia"},"content":" String[] deadlineInfo \u003d inputs[1].split(\"/by\", 2);","lastModifiedDate":"2024-02-03"},{"lineNumber":153,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":154,"author":{"gitId":"raysonchia"},"content":" if (deadlineInfo.length !\u003d 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":155,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"OOPS!!! Please add \"","lastModifiedDate":"2024-02-04"},{"lineNumber":156,"author":{"gitId":"raysonchia"},"content":" + \"a valid deadline.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":157,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":158,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":159,"author":{"gitId":"raysonchia"},"content":" Deadline deadline \u003d new Deadline(deadlineInfo[0].strip(), ","lastModifiedDate":"2024-02-03"},{"lineNumber":160,"author":{"gitId":"raysonchia"},"content":" deadlineInfo[1].strip());","lastModifiedDate":"2024-02-03"},{"lineNumber":161,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":162,"author":{"gitId":"raysonchia"},"content":" return new DeadlineCommand(deadline);","lastModifiedDate":"2024-02-03"},{"lineNumber":163,"author":{"gitId":"raysonchia"},"content":" } catch (PodzException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":164,"author":{"gitId":"raysonchia"},"content":" return new IncorrectCommand(e);","lastModifiedDate":"2024-02-03"},{"lineNumber":165,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":166,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":167,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":168,"author":{"gitId":"raysonchia"},"content":" private Command prepareEvent(String[] inputs) {","lastModifiedDate":"2024-02-03"},{"lineNumber":169,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":170,"author":{"gitId":"raysonchia"},"content":" if (inputs.length !\u003d 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":171,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"OOPS!!! The event task \"","lastModifiedDate":"2024-02-04"},{"lineNumber":172,"author":{"gitId":"raysonchia"},"content":" + \"cannot be empty.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":173,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":174,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":175,"author":{"gitId":"raysonchia"},"content":" String[] eventInfo \u003d inputs[1].split(\"/\", 3);","lastModifiedDate":"2024-02-03"},{"lineNumber":176,"author":{"gitId":"raysonchia"},"content":" if (eventInfo.length !\u003d 3) {","lastModifiedDate":"2024-02-03"},{"lineNumber":177,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"OOPS!!! Please check \"","lastModifiedDate":"2024-02-04"},{"lineNumber":178,"author":{"gitId":"raysonchia"},"content":" + \"the event format again.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":179,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":180,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":181,"author":{"gitId":"raysonchia"},"content":" Event event \u003d new Event(eventInfo[0].strip(), ","lastModifiedDate":"2024-02-03"},{"lineNumber":182,"author":{"gitId":"raysonchia"},"content":" eventInfo[1].replaceFirst(\"from\", \"\").strip(),","lastModifiedDate":"2024-02-03"},{"lineNumber":183,"author":{"gitId":"raysonchia"},"content":" eventInfo[2].replaceFirst(\"to\", \"\").strip());","lastModifiedDate":"2024-02-03"},{"lineNumber":184,"author":{"gitId":"raysonchia"},"content":" return new EventCommand(event);","lastModifiedDate":"2024-02-03"},{"lineNumber":185,"author":{"gitId":"raysonchia"},"content":" } catch (PodzException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":186,"author":{"gitId":"raysonchia"},"content":" return new IncorrectCommand(e);","lastModifiedDate":"2024-02-03"},{"lineNumber":187,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":188,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":189,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":190,"author":{"gitId":"raysonchia"},"content":" private Command prepareDelete(String[] inputs) {","lastModifiedDate":"2024-02-03"},{"lineNumber":191,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":192,"author":{"gitId":"raysonchia"},"content":" if (inputs.length !\u003d 2) {","lastModifiedDate":"2024-02-03"},{"lineNumber":193,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"OOPS!!! The delete command \"","lastModifiedDate":"2024-02-04"},{"lineNumber":194,"author":{"gitId":"raysonchia"},"content":" + \"cannot be empty.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":195,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":196,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":197,"author":{"gitId":"raysonchia"},"content":" int index \u003d Integer.parseInt(inputs[1]) - 1;","lastModifiedDate":"2024-02-03"},{"lineNumber":198,"author":{"gitId":"raysonchia"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2024-02-03"},{"lineNumber":199,"author":{"gitId":"raysonchia"},"content":" } catch (PodzException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":200,"author":{"gitId":"raysonchia"},"content":" return new IncorrectCommand(e);","lastModifiedDate":"2024-02-03"},{"lineNumber":201,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":202,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":203,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":204,"author":{"gitId":"raysonchia"},"content":" private Command prepareFind(String[] inputs) {","lastModifiedDate":"2024-02-07"},{"lineNumber":205,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":206,"author":{"gitId":"raysonchia"},"content":" if (inputs.length !\u003d 2) {","lastModifiedDate":"2024-02-07"},{"lineNumber":207,"author":{"gitId":"raysonchia"},"content":" throw new PodzException(\"Wrong find command format!!\");","lastModifiedDate":"2024-02-07"},{"lineNumber":208,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":209,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":210,"author":{"gitId":"raysonchia"},"content":" String searchKeyword \u003d inputs[1];","lastModifiedDate":"2024-02-07"},{"lineNumber":211,"author":{"gitId":"raysonchia"},"content":" return new FindCommand(searchKeyword);","lastModifiedDate":"2024-02-07"},{"lineNumber":212,"author":{"gitId":"raysonchia"},"content":" } catch (PodzException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":213,"author":{"gitId":"raysonchia"},"content":" return new IncorrectCommand(e);","lastModifiedDate":"2024-02-07"},{"lineNumber":214,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":215,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":216,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":216}},{"path":"src/main/java/podz/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import java.io.File;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":"import podz.task.Deadline;","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"import podz.task.Event;","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":"import podz.task.Task;","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":"import podz.task.Todo;","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" * Represents a Storage object that handles the reading and writing of tasks to a data file.","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":"public class Storage {","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" private static String FILE_PATH;","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" * Constructs a Storage object with the specified file path.","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" * @param filePath the file path where the data are stored","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" public Storage (String filePath) {","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" Storage.FILE_PATH \u003d filePath;","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" * Updates the saved tasks in the data file.","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" * @param taskList the list of tasks to be saved","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":" public static void updateSaved(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":" File data \u003d initDataFile();","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":" BufferedWriter writer \u003d new BufferedWriter(new FileWriter(data));","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"raysonchia"},"content":" writer.write(t.savedFormat());","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"raysonchia"},"content":" writer.newLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"raysonchia"},"content":" writer.close();","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"raysonchia"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"raysonchia"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"raysonchia"},"content":" * Loads tasks from the data file and returns them as an \u003ccode\u003eArrayList\u003cTasks\u003e\u003c/code\u003e.","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"raysonchia"},"content":" * @return the list of tasks","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"raysonchia"},"content":" public ArrayList\u003cTask\u003e loadTasks() {","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"raysonchia"},"content":" ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"raysonchia"},"content":" File data \u003d initDataFile();","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"raysonchia"},"content":" BufferedReader reader \u003d new BufferedReader(new FileReader(data));","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"raysonchia"},"content":" String task;","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"raysonchia"},"content":" while ((task \u003d reader.readLine()) !\u003d null) {","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"raysonchia"},"content":" String[] taskInfo \u003d task.split(\" \\\\| \");","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"raysonchia"},"content":" if (taskInfo[0].equals(\"T\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"raysonchia"},"content":" Todo todo \u003d new Todo(taskInfo[2]);","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"raysonchia"},"content":" if (Integer.parseInt(taskInfo[1]) \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"raysonchia"},"content":" todo.mark();","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"raysonchia"},"content":" tasks.add(todo);","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"raysonchia"},"content":" } else if (taskInfo[0].equals(\"D\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"raysonchia"},"content":" Deadline deadline \u003d new Deadline(taskInfo[2], taskInfo[3]);","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"raysonchia"},"content":" if (Integer.parseInt(taskInfo[1]) \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"raysonchia"},"content":" deadline.mark();","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"raysonchia"},"content":" tasks.add(deadline);","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"raysonchia"},"content":" } else if (taskInfo[0].equals(\"E\")) {","lastModifiedDate":"2024-02-04"},{"lineNumber":79,"author":{"gitId":"raysonchia"},"content":" Event event \u003d new Event(taskInfo[2], taskInfo[3], taskInfo[4]);","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"raysonchia"},"content":" if (Integer.parseInt(taskInfo[1]) \u003d\u003d 1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"raysonchia"},"content":" event.mark();","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"raysonchia"},"content":" tasks.add(event);","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"raysonchia"},"content":" reader.close();","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"raysonchia"},"content":" return tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"raysonchia"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"raysonchia"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-02"},{"lineNumber":90,"author":{"gitId":"raysonchia"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"raysonchia"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":93,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":94,"author":{"gitId":"raysonchia"},"content":" return tasks;","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":96,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"raysonchia"},"content":" private static File initDataFile () throws IOException {","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"raysonchia"},"content":" File data \u003d new File(FILE_PATH);","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"raysonchia"},"content":" if (!data.getParentFile().exists()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"raysonchia"},"content":" data.getParentFile().mkdirs();","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"raysonchia"},"content":" if (!data.exists()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"raysonchia"},"content":" data.createNewFile();","lastModifiedDate":"2024-02-02"},{"lineNumber":104,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":105,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":106,"author":{"gitId":"raysonchia"},"content":" return data;","lastModifiedDate":"2024-02-02"},{"lineNumber":107,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":108,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"raysonchia":108}},{"path":"src/main/java/podz/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" * Represents a deadline task in the task manager.","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" protected String by, formattedBy, time;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" * Constructs a Deadline object with the specified description and deadline.","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" * @param description the description of the deadline task","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" * @param by the deadline date and time","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" String[] dateAndTime \u003d by.split(\" \");","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" if (dateAndTime.length \u003e\u003d 2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" LocalDate d1 \u003d LocalDate.parse(dateAndTime[0]);","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" int hour \u003d Integer.parseInt(dateAndTime[1].substring(0, 2));","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" int minute \u003d Integer.parseInt(dateAndTime[1].substring(2));","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" LocalDateTime dateTime \u003d d1.atTime(hour, minute);","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMMM dd yyyy HH:mm\");","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" String formattedString \u003d dateTime.format(formatter);","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" this.formattedBy \u003d formattedString;","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":" LocalDate d1 \u003d LocalDate.parse(dateAndTime[0]);","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMMM dd yyyy\");","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":" String formattedString \u003d d1.format(formatter);","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":" this.formattedBy \u003d formattedString;","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"raysonchia"},"content":" * Returns the saved format of the deadline task.","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"raysonchia"},"content":" * @return the saved format of the deadline task","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"raysonchia"},"content":" public String savedFormat() {","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"raysonchia"},"content":" return \"D \" + \"|\" + super.savedFormat() + \" | \" + this.by;","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"raysonchia"},"content":" * Returns a string representation of the deadline task.","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"raysonchia"},"content":" * @return a string representing the deadline task","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"raysonchia"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":60,"author":{"gitId":"raysonchia"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.formattedBy + \")\";","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":62,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"raysonchia":62}},{"path":"src/main/java/podz/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" * Represents an event task in the task manager.","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" protected String from, to, formattedFrom, formattedTo;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" * Constructs an Event object with the specified description, start date and end date.","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" * @param description the description of the event","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" * @param from the start date and time of the event","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" * @param to the end date and time of the event","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" // splits the from/to information to an array containing its date and time","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" String[] fromDateTime \u003d from.split(\" \");","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" String[] toDateTime \u003d to.split(\" \");","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" this.formattedFrom \u003d formatDT(fromDateTime);","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" this.formattedTo \u003d formatDT(toDateTime);","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":" * Formats the date and time into a specific format.","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":" * @param dateAndTime the array containing date and time information","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":" * @return the formatted date and time string","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":" private String formatDT(String[] dateAndTime) {","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"raysonchia"},"content":" String formattedString;","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"raysonchia"},"content":" if (dateAndTime.length \u003e\u003d 2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"raysonchia"},"content":" LocalDate d1 \u003d LocalDate.parse(dateAndTime[0]);","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"raysonchia"},"content":" int hour \u003d Integer.parseInt(dateAndTime[1].substring(0, 2));","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"raysonchia"},"content":" int minute \u003d Integer.parseInt(dateAndTime[1].substring(2));","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"raysonchia"},"content":" LocalDateTime dateTime \u003d d1.atTime(hour, minute);","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"raysonchia"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMMM dd yyyy HH:mm\");","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"raysonchia"},"content":" formattedString \u003d dateTime.format(formatter);","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"raysonchia"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"raysonchia"},"content":" LocalDate d1 \u003d LocalDate.parse(dateAndTime[0]);","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"raysonchia"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"MMMM dd yyyy\");","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"raysonchia"},"content":" formattedString \u003d d1.format(formatter);","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"raysonchia"},"content":" return formattedString;","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":58,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":59,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"raysonchia"},"content":" * Returns the saved format of the event task.","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"raysonchia"},"content":" * @return the saved format of the event task","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"raysonchia"},"content":" public String savedFormat() {","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"raysonchia"},"content":" return \"E \" + \"|\" + super.savedFormat() + \" | \" + this.from + \" | \" + this.to;","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"raysonchia"},"content":" * Returns a string representation of the event task.","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"raysonchia"},"content":" * @return a string representing the event task","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"raysonchia"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"raysonchia"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.formattedFrom ","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"raysonchia"},"content":" + \" to: \" + this.formattedTo + \")\";","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":79,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"raysonchia":79}},{"path":"src/main/java/podz/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":" * Represents a task in the task manager.","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"public class Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" protected String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" * Constructs a Task object with the specified description.","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" * @param description the description of the task","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" * Returns the status icon of the task.","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" * @return the status icon of the task","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" * Marks the task as done.","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" public void mark() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":" * Unmarks the task as done.","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":" public void unmark() {","lastModifiedDate":"2024-01-25"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":41,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":42,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":43,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"raysonchia"},"content":" * Returns the saved format of the task.","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"raysonchia"},"content":" * @return the saved format of the task","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"raysonchia"},"content":" public String savedFormat() {","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"raysonchia"},"content":" String isDoneStr \u003d \" 0 \";","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"raysonchia"},"content":" if (isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"raysonchia"},"content":" isDoneStr \u003d \" 1 \";","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"raysonchia"},"content":" return isDoneStr + \"| \" + description;","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"raysonchia"},"content":" * Returns whether the task description contains the specified keyword.","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"raysonchia"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"raysonchia"},"content":" * @param keyword the keyword to check for in the task description","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"raysonchia"},"content":" * @return true if the task description contains the keyword, false otherwise","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"raysonchia"},"content":" public boolean isRelevantTask(String keyword) {","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"raysonchia"},"content":" return this.description.contains(keyword);","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"raysonchia"},"content":" * Returns a string representation of the task.","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"raysonchia"},"content":" * @return a string representing the task","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":73,"author":{"gitId":"raysonchia"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":74,"author":{"gitId":"raysonchia"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":75,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":76,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"raysonchia":76}},{"path":"src/main/java/podz/task/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.storage.Storage;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" * Represents a list of tasks in the application.","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"public class TaskList {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" protected ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" * Constructs a \u003ccode\u003eTaskList\u003c/code\u003e object with the specified list of tasks.","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" * @param tasks the list of tasks to initialise with","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" * @param t the task to add","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" public void addTask(Task t) {","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" this.tasks.add(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" Storage.updateSaved(tasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" * Deletes a task from the task list based on index.","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" * @param i the index of the task to delete","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":" public void deleteTask(int i) {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":" this.tasks.remove(i);","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":" Storage.updateSaved(tasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"raysonchia"},"content":" * Retrieves a task from the task list based on index.","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"raysonchia"},"content":" * @param i the index of the task to retrieve","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"raysonchia"},"content":" * @return the task at the specified index","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"raysonchia"},"content":" public Task getTask(int i) {","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"raysonchia"},"content":" return this.tasks.get(i);","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"raysonchia"},"content":" * Gets the number of tasks in the task list.","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"raysonchia"},"content":" * @return the number of tasks in the list","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"raysonchia"},"content":" public int getSize() {","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"raysonchia"},"content":" return this.tasks.size();","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"raysonchia"},"content":" * Marks a task as completed based on index.","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"raysonchia"},"content":" * @param i the index of the task to mark as completed","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"raysonchia"},"content":" public void markTask(int i) {","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"raysonchia"},"content":" this.tasks.get(i).mark();","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"raysonchia"},"content":" Storage.updateSaved(tasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"raysonchia"},"content":" * Unmarks a completed task based on index.","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"raysonchia"},"content":" * @param i the index of the task to unmark","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"raysonchia"},"content":" public void unmarkTask(int i) {","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"raysonchia"},"content":" this.tasks.get(i).unmark();","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"raysonchia"},"content":" Storage.updateSaved(tasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"raysonchia"},"content":" * Returns a string representing the number of tasks in the list.","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"raysonchia"},"content":" * @return a string indicating the number of tasks in the list","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"raysonchia"},"content":" public String getListCounter() {","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"raysonchia"},"content":" return \"\\tNow you have \" + this.tasks.size() + \" tasks in the list.\";","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"raysonchia"},"content":" * Returns the String representation of the task list which will be filtered","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"raysonchia"},"content":" * based on the keyword.","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"raysonchia"},"content":" * @param keyword the keyword to search for in the task description","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"raysonchia"},"content":" * @return the String representation of the filtered tasks","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"raysonchia"},"content":" public String findTasks(String keyword) {","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"raysonchia"},"content":" ArrayList\u003cTask\u003e filteredTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"raysonchia"},"content":" for (Task t : this.tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"raysonchia"},"content":" if (t.isRelevantTask(keyword)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"raysonchia"},"content":" filteredTasks.add(t);","lastModifiedDate":"2024-02-07"},{"lineNumber":102,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"raysonchia"},"content":" return toString(filteredTasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":106,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":107,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":108,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":109,"author":{"gitId":"raysonchia"},"content":" * Returns a string representing the tasks in the list.","lastModifiedDate":"2024-02-07"},{"lineNumber":110,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":111,"author":{"gitId":"raysonchia"},"content":" * @return a string indicating all tasks in the list","lastModifiedDate":"2024-02-07"},{"lineNumber":112,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":113,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":114,"author":{"gitId":"raysonchia"},"content":" public String toString() {","lastModifiedDate":"2024-02-03"},{"lineNumber":115,"author":{"gitId":"raysonchia"},"content":" String taskStr \u003d \"\\tHere are the tasks in your list:\";","lastModifiedDate":"2024-02-03"},{"lineNumber":116,"author":{"gitId":"raysonchia"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":117,"author":{"gitId":"raysonchia"},"content":" int num \u003d i + 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":118,"author":{"gitId":"raysonchia"},"content":" String nextTask \u003d \"\\t\" + num + \". \" + tasks.get(i);","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"raysonchia"},"content":" taskStr +\u003d \"\\n\" + nextTask;","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":121,"author":{"gitId":"raysonchia"},"content":" return taskStr;","lastModifiedDate":"2024-02-03"},{"lineNumber":122,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":123,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":124,"author":{"gitId":"raysonchia"},"content":" private String toString(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-07"},{"lineNumber":125,"author":{"gitId":"raysonchia"},"content":" String taskStr \u003d \"\\tHere are the tasks in your list:\";","lastModifiedDate":"2024-02-07"},{"lineNumber":126,"author":{"gitId":"raysonchia"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":127,"author":{"gitId":"raysonchia"},"content":" int num \u003d i + 1;","lastModifiedDate":"2024-02-07"},{"lineNumber":128,"author":{"gitId":"raysonchia"},"content":" String nextTask \u003d \"\\t\" + num + \". \" + tasks.get(i);","lastModifiedDate":"2024-02-07"},{"lineNumber":129,"author":{"gitId":"raysonchia"},"content":" taskStr +\u003d \"\\n\" + nextTask;","lastModifiedDate":"2024-02-07"},{"lineNumber":130,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":131,"author":{"gitId":"raysonchia"},"content":" return taskStr;","lastModifiedDate":"2024-02-07"},{"lineNumber":132,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":133,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"raysonchia":133}},{"path":"src/main/java/podz/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.task;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":" * Represents a todo task in the task manager.","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" * Constructs a Todo object with the specified description.","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" * @param description the description of the todo task","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" super(description);","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" * Returns the saved format of the todo task.","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" * @return the saved format of the todo task","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" public String savedFormat() {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" return \"T \" + \"|\" + super.savedFormat();","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" * Returns a string representation of the todo task.","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" * ","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" * @return a string representing the todo task","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"raysonchia":35}},{"path":"src/main/java/podz/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.ui;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"import podz.task.Task;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"public class Ui {","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":" private static final String DIV \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":" private Scanner sc;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" public Ui() {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" public String getInput() {","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" return sc.nextLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" public void printGreeting() {","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" printDiv();","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" System.out.println(\"\\tHello! I\u0027m Podz.\");","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" System.out.println(\"\\tWhat can I do for you?\");","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" printDiv();","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" public void printBye() {","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" printToUser(\"\\tBye. Hope to see you again soon!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" public void printToUser(String... message) {","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" printDiv();","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" for (String m : message) {","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" System.out.println(m);","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" printDiv();","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":" public void printError(Exception e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":" printToUser(\"\\t\" + e.getMessage());","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"raysonchia"},"content":" public void printMarked(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"raysonchia"},"content":" printToUser(\"\\tNice! I\u0027ve marked this task as done: \",","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"raysonchia"},"content":" \"\\t\" + task);","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"raysonchia"},"content":" public void printUnmarked(Task task) {","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"raysonchia"},"content":" printToUser(\"\\tOK, I\u0027ve marked this task as not done yet: \",","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"raysonchia"},"content":" \"\\t\" + task);","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"raysonchia"},"content":" private void printDiv() {","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"raysonchia"},"content":" System.out.println(\"\\t\" + DIV);","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"raysonchia":54}},{"path":"src/test/java/podz/commands/DeleteCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"import podz.exceptions.PodzException;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"import podz.stubs.TaskListStub;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"import podz.task.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" public void execute_validIndex_success() {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" TaskListStub taskListStub \u003d new TaskListStub(new ArrayList\u003cTask\u003e());","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" // taskList will have 3 tasks, so valid index from 0-2","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" taskListStub.initDataThreeTasks();","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" int initSize \u003d taskListStub.getSize();","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" int indexDeleted \u003d 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" Task taskDeleted \u003d taskListStub.getTask(indexDeleted);","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" DeleteCommand cmd \u003d new DeleteCommand(indexDeleted);","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" cmd.setTasks(taskListStub);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" cmd.execute(new Ui());","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" } catch (PodzException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":" fail(); // should not throw error","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":" // check if a task was deleted","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":" assertEquals(initSize - 1, taskListStub.getSize());","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":" // check if the correct task was deleted","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":" assertFalse(taskListStub.getTaskList().contains(taskDeleted));","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"raysonchia"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"raysonchia"},"content":" public void execute_indexOutOfRange_exceptionThrown() {","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"raysonchia"},"content":" TaskListStub taskListStub \u003d new TaskListStub(new ArrayList\u003cTask\u003e());","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"raysonchia"},"content":" taskListStub.initDataThreeTasks();","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"raysonchia"},"content":" // index \u003c 0","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"raysonchia"},"content":" DeleteCommand cmd \u003d new DeleteCommand(-1);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"raysonchia"},"content":" cmd.setTasks(taskListStub);","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"raysonchia"},"content":" Exception tc1 \u003d assertThrows(","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"raysonchia"},"content":" PodzException.class, ","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"raysonchia"},"content":" () -\u003e cmd.execute(new Ui())","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"raysonchia"},"content":" );","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"raysonchia"},"content":" assertEquals(\"Oh no!!! Invalid task index!\", tc1.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"raysonchia"},"content":" // index \u003e size","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"raysonchia"},"content":" Command cmd2 \u003d new DeleteCommand(taskListStub.getSize());","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"raysonchia"},"content":" cmd2.setTasks(taskListStub);","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"raysonchia"},"content":" Exception tc2 \u003d assertThrows(","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"raysonchia"},"content":" PodzException.class, ","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"raysonchia"},"content":" () -\u003e cmd2.execute(new Ui())","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"raysonchia"},"content":" );","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"raysonchia"},"content":" assertEquals(\"Oh no!!! Invalid task index!\", tc2.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"raysonchia":68}},{"path":"src/test/java/podz/commands/MarkCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.commands;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"import podz.exceptions.PodzException;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"import podz.stubs.TaskListStub;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"import podz.task.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"import podz.ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":"public class MarkCommandTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" public void execute_validIndex_success() {","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" TaskListStub taskListStub \u003d new TaskListStub(new ArrayList\u003cTask\u003e());","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" // taskList will have 3 tasks, so valid index from 0-2","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":" taskListStub.initDataThreeTasks();","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" int indexMarked \u003d 1;","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" Task taskMarked \u003d taskListStub.getTask(indexMarked);","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" MarkCommand cmd \u003d new MarkCommand(indexMarked);","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" cmd.setTasks(taskListStub);","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" cmd.execute(new Ui());","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" } catch (PodzException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" fail();","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"raysonchia"},"content":" // check if task marked","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"raysonchia"},"content":" assertEquals(\"X\", taskMarked.getStatusIcon());","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"raysonchia"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"raysonchia"},"content":" public void execute_indexOutOfRange_exceptionThrown() {","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"raysonchia"},"content":" TaskListStub taskListStub \u003d new TaskListStub(new ArrayList\u003cTask\u003e());","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"raysonchia"},"content":" taskListStub.initDataThreeTasks();","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"raysonchia"},"content":" // index \u003c 0","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"raysonchia"},"content":" MarkCommand cmd \u003d new MarkCommand(-1);","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"raysonchia"},"content":" cmd.setTasks(taskListStub);","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"raysonchia"},"content":" Exception tc1 \u003d assertThrows(","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"raysonchia"},"content":" PodzException.class, ","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"raysonchia"},"content":" () -\u003e cmd.execute(new Ui())","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"raysonchia"},"content":" );","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"raysonchia"},"content":" assertEquals(\"Oh no!!! Invalid task index!\", tc1.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"raysonchia"},"content":" // index \u003e size","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"raysonchia"},"content":" Command cmd2 \u003d new MarkCommand(taskListStub.getSize());","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"raysonchia"},"content":" cmd2.setTasks(taskListStub);","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"raysonchia"},"content":" Exception tc2 \u003d assertThrows(","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"raysonchia"},"content":" PodzException.class, ","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"raysonchia"},"content":" () -\u003e cmd2.execute(new Ui())","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"raysonchia"},"content":" );","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"raysonchia"},"content":" assertEquals(\"Oh no!!! Invalid task index!\", tc2.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"raysonchia":65}},{"path":"src/test/java/podz/stubs/TaskListStub.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"package podz.stubs;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"import podz.task.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"import podz.task.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"import podz.task.Todo;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"public class TaskListStub extends TaskList {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":" public TaskListStub(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":" super(tasks);","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":" public void deleteTask(int i) {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":" super.tasks.remove(i);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"raysonchia"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"raysonchia"},"content":" public void markTask(int i) {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"raysonchia"},"content":" super.tasks.get(i).mark();","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"raysonchia"},"content":" public void initDataThreeTasks() {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"raysonchia"},"content":" super.tasks.add(new Todo(\"eat chicken\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"raysonchia"},"content":" super.tasks.add(new Todo(\"sleep\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"raysonchia"},"content":" super.tasks.add(new Todo(\"read\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"raysonchia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"raysonchia"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"raysonchia"},"content":" return super.tasks;","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"raysonchia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"raysonchia"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"raysonchia":33}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"raysonchia"},"content":"todo read book","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"raysonchia"},"content":"deadline return book /by 2024-01-05 1800","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"raysonchia"},"content":"event project meeting /from 2024-02-01 1200 /to 2024-02-01 1600","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"raysonchia"},"content":"todo join sports club","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"raysonchia"},"content":"todo borrow book","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"raysonchia"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"raysonchia"},"content":"mark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"raysonchia"},"content":"mark 5","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"raysonchia"},"content":"unmark 1","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"raysonchia"},"content":"list","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"raysonchia"},"content":"delete 3","lastModifiedDate":"2024-01-26"},{"lineNumber":12,"author":{"gitId":"raysonchia"},"content":"list","lastModifiedDate":"2024-01-26"},{"lineNumber":13,"author":{"gitId":"raysonchia"},"content":"delete 10","lastModifiedDate":"2024-01-26"},{"lineNumber":14,"author":{"gitId":"raysonchia"},"content":"todo","lastModifiedDate":"2024-01-26"},{"lineNumber":15,"author":{"gitId":"raysonchia"},"content":"blah","lastModifiedDate":"2024-01-26"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":"deadline run","lastModifiedDate":"2024-01-26"},{"lineNumber":17,"author":{"gitId":"raysonchia"},"content":"event sleep /from Mon 10pm","lastModifiedDate":"2024-01-26"},{"lineNumber":18,"author":{"gitId":"raysonchia"},"content":"bye","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"raysonchia":18}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"raysonchia"},"content":"if ! find ../src/main/java/podz -name \u0027*.java\u0027 -type f -print0 | xargs -0 javac -d ../bin -Xlint:none; ","lastModifiedDate":"2024-02-04"},{"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":"raysonchia"},"content":"java -classpath ../bin podz.Podz \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-06"},{"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":{"raysonchia":2,"-":36}}] diff --git a/raysonchia_ip_master/commits.json b/raysonchia_ip_master/commits.json index f2bffa85..48958643 100644 --- a/raysonchia_ip_master/commits.json +++ b/raysonchia_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"raysonchia":[{"date":"2024-01-25","commitResults":[{"hash":"0d3b93913843be8681e1157c333ee3def8bd000c","isMergeCommit":false,"messageTitle":"Add new bot name, greeting and exit message","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}},{"hash":"955eaad936d1c1635b618c9d3dadbb4817abd41f","isMergeCommit":false,"messageTitle":"Add echo feature","messageBody":"Chatbot will echo input given by user, and exit when user types \"bye\".\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":8}}},{"hash":"97301fb6dc0edce317b02cf898aeb0cc16b3fbff","isMergeCommit":false,"messageTitle":"Add ability to store user input to list","messageBody":"User\u0027s input is stored and can be displayed using the \"list\" command.\n","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"7cb57f792957f36e1b744eb40d5e7d480a51f85e","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"47e61c39706a756bdb3656d865d45d64991fe5b8","isMergeCommit":false,"messageTitle":"Add ability to mark/unmark tasks","messageBody":"User may mark/unmark tasks in list using commands \"mark\" and \"unmark\".\n","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":4}}},{"hash":"ad5d66f595437d92c173d04b3bb07ad629523ae5","isMergeCommit":false,"messageTitle":"Add Deadline class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"34a49a8694dc976b93d87c232c18282992ee1a45","isMergeCommit":false,"messageTitle":"Add feature to specify tasks with deadline","messageBody":"Tasks with deadlines (e.g. dates) can be added to list.\n","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":7}}},{"hash":"f89b1a850e36b6240dd94d4fdc3f389281264208","isMergeCommit":false,"messageTitle":"Add Todo class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"b00e69695999989f22e14f56e7960b1292d91084","isMergeCommit":false,"messageTitle":"Add feature to add Todo tasks to list","messageBody":"Todos are tasks without any date/time attached.\n","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"51cf650464b03450574457d6f1355ea63025acb3","isMergeCommit":false,"messageTitle":"Add Event class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"3187d0aa59c9fc05101bb3834b03f8187ddd71f1","isMergeCommit":false,"messageTitle":"Add spacing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"a7b23f2f5851966a4df9c0bdf4e40dc53ea3ed13","isMergeCommit":false,"messageTitle":"Add event tasks","messageBody":"Event tasks with a specific starting and ending time can be added to list.\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}},{"hash":"b39e0e51b314e6b01af36aa0180608badf10ecc4","isMergeCommit":false,"messageTitle":"Add automated text UI testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"sh":{"insertions":0,"deletions":0}}}]},{"date":"2024-01-26","commitResults":[{"hash":"12919b62301d03d51b0ece86534f995b02cecd0d","isMergeCommit":false,"messageTitle":"Add error handling","messageBody":"Program will deal with invalid inputs entered by the user.\n","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":137,"deletions":67}}},{"hash":"40018876d8bceb33288bcd9efedc2ed850ca78e3","isMergeCommit":false,"messageTitle":"Add delete feature","messageBody":"User may delete tasks from lists.\n","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":3}}},{"hash":"c213c961c6d510b9dc0ecd6a5923198084a6c91c","isMergeCommit":false,"messageTitle":"Update automated testing","messageBody":"Add previously untested features (e.g. delete) and error handling.\n","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0}}}]},{"date":"2024-01-27","commitResults":[{"hash":"e28d1c3f1fcb88c4e4968152b508e27af7a79b43","isMergeCommit":false,"messageTitle":"Update commands from strings to enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":12}}}]},{"date":"2024-02-02","commitResults":[{"hash":"66b45bad0d928ee0b086fd39cb098445d4a4f24d","isMergeCommit":false,"messageTitle":"Add saving and loading task from hard disk","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":114,"deletions":11}}},{"hash":"a0f857ad6ac87876742b7e1b09629d1365c19a61","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"41eeee380f7ee817bc01a2f19b33b16885f4fb77","isMergeCommit":false,"messageTitle":"Add recognition of dates and times","messageBody":"When creating deadline and event tasks, user can specify date and time\nin the format yyyy-mm-dd HHmm.\nFor example: deadline return book /by 2024-01-05 1800\nThe time parameter is optional.\n","fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":8}}},{"hash":"4a6fc1d251f4d44faeafb8eb019eda5f265d2a8c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"2661655232f34add8faf35d935e9d0dffaea29d2","isMergeCommit":false,"messageTitle":"Refactor saving/loading operations to Storage class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":82}}},{"hash":"301fc96c2b36b3d9de29221569b1e56da9b205d0","isMergeCommit":false,"messageTitle":"Refactor task list operations","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":42}}}]},{"date":"2024-02-03","commitResults":[{"hash":"81fcbd6d12e42f1ce66136f7561a3213908cd016","isMergeCommit":false,"messageTitle":"Refactor into Parser and Ui class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":2},"java":{"insertions":400,"deletions":211}}},{"hash":"1ddeb732d2f5d0a7e4e758dffe6fe9da5a42b23b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-04","commitResults":[{"hash":"fb32c6db305329eef53b40b6c96bac1303441968","isMergeCommit":false,"messageTitle":"Organize files into packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":123,"deletions":36},"sh":{"insertions":2,"deletions":2}}},{"hash":"4fdba6404f464048f7bc9244a31c70d0a578ac36","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"2e08c44a6a99f4fc41e3147dd25cf6fe77cf75de","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d4089a04542d4c22f6a243dfedc8c4e033c6086c","isMergeCommit":false,"messageTitle":"Configure gradle build file","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-06","commitResults":[{"hash":"4b40558cc06e8968292b129d99df9493943a8201","isMergeCommit":false,"messageTitle":"Remove unnecessary try-catch","messageBody":"Let parser catch the exception.\n","fileTypesAndContributionMap":{"java":{"insertions":89,"deletions":101}}},{"hash":"ee0d3e7ed5eba534acfb3ead53587bc6d41ba410","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"Made some tests for the DeleteCommand and MarkCommand execute() method.\n","fileTypesAndContributionMap":{"java":{"insertions":167,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"e3ec2bda99592e8c6dbe2d1162117b748f61c2e5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"raysonchia":{"java":933,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":1,"txt":22}},"authorContributionVariance":{"raysonchia":34464.953},"authorDisplayNameMap":{"raysonchia":"CS2103-F09-4 RAYS.. ZHE"}} +{"authorDailyContributionsMap":{"raysonchia":[{"date":"2024-01-25","commitResults":[{"hash":"0d3b93913843be8681e1157c333ee3def8bd000c","isMergeCommit":false,"messageTitle":"Add new bot name, greeting and exit message","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}},{"hash":"955eaad936d1c1635b618c9d3dadbb4817abd41f","isMergeCommit":false,"messageTitle":"Add echo feature","messageBody":"Chatbot will echo input given by user, and exit when user types \"bye\".\n","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":8}}},{"hash":"97301fb6dc0edce317b02cf898aeb0cc16b3fbff","isMergeCommit":false,"messageTitle":"Add ability to store user input to list","messageBody":"User\u0027s input is stored and can be displayed using the \"list\" command.\n","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"7cb57f792957f36e1b744eb40d5e7d480a51f85e","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":26,"deletions":0}}},{"hash":"47e61c39706a756bdb3656d865d45d64991fe5b8","isMergeCommit":false,"messageTitle":"Add ability to mark/unmark tasks","messageBody":"User may mark/unmark tasks in list using commands \"mark\" and \"unmark\".\n","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":4}}},{"hash":"ad5d66f595437d92c173d04b3bb07ad629523ae5","isMergeCommit":false,"messageTitle":"Add Deadline class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"34a49a8694dc976b93d87c232c18282992ee1a45","isMergeCommit":false,"messageTitle":"Add feature to specify tasks with deadline","messageBody":"Tasks with deadlines (e.g. dates) can be added to list.\n","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":7}}},{"hash":"f89b1a850e36b6240dd94d4fdc3f389281264208","isMergeCommit":false,"messageTitle":"Add Todo class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"b00e69695999989f22e14f56e7960b1292d91084","isMergeCommit":false,"messageTitle":"Add feature to add Todo tasks to list","messageBody":"Todos are tasks without any date/time attached.\n","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"51cf650464b03450574457d6f1355ea63025acb3","isMergeCommit":false,"messageTitle":"Add Event class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":0}}},{"hash":"3187d0aa59c9fc05101bb3834b03f8187ddd71f1","isMergeCommit":false,"messageTitle":"Add spacing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"a7b23f2f5851966a4df9c0bdf4e40dc53ea3ed13","isMergeCommit":false,"messageTitle":"Add event tasks","messageBody":"Event tasks with a specific starting and ending time can be added to list.\n","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":1}}},{"hash":"b39e0e51b314e6b01af36aa0180608badf10ecc4","isMergeCommit":false,"messageTitle":"Add automated text UI testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":11,"deletions":0},"sh":{"insertions":0,"deletions":0}}}]},{"date":"2024-01-26","commitResults":[{"hash":"12919b62301d03d51b0ece86534f995b02cecd0d","isMergeCommit":false,"messageTitle":"Add error handling","messageBody":"Program will deal with invalid inputs entered by the user.\n","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":137,"deletions":67}}},{"hash":"40018876d8bceb33288bcd9efedc2ed850ca78e3","isMergeCommit":false,"messageTitle":"Add delete feature","messageBody":"User may delete tasks from lists.\n","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":3}}},{"hash":"c213c961c6d510b9dc0ecd6a5923198084a6c91c","isMergeCommit":false,"messageTitle":"Update automated testing","messageBody":"Add previously untested features (e.g. delete) and error handling.\n","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":7,"deletions":0}}}]},{"date":"2024-01-27","commitResults":[{"hash":"e28d1c3f1fcb88c4e4968152b508e27af7a79b43","isMergeCommit":false,"messageTitle":"Update commands from strings to enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":43,"deletions":12}}}]},{"date":"2024-02-02","commitResults":[{"hash":"66b45bad0d928ee0b086fd39cb098445d4a4f24d","isMergeCommit":false,"messageTitle":"Add saving and loading task from hard disk","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":114,"deletions":11}}},{"hash":"a0f857ad6ac87876742b7e1b09629d1365c19a61","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"41eeee380f7ee817bc01a2f19b33b16885f4fb77","isMergeCommit":false,"messageTitle":"Add recognition of dates and times","messageBody":"When creating deadline and event tasks, user can specify date and time\nin the format yyyy-mm-dd HHmm.\nFor example: deadline return book /by 2024-01-05 1800\nThe time parameter is optional.\n","fileTypesAndContributionMap":{"java":{"insertions":61,"deletions":8}}},{"hash":"4a6fc1d251f4d44faeafb8eb019eda5f265d2a8c","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"2661655232f34add8faf35d935e9d0dffaea29d2","isMergeCommit":false,"messageTitle":"Refactor saving/loading operations to Storage class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":93,"deletions":82}}},{"hash":"301fc96c2b36b3d9de29221569b1e56da9b205d0","isMergeCommit":false,"messageTitle":"Refactor task list operations","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":42}}}]},{"date":"2024-02-03","commitResults":[{"hash":"81fcbd6d12e42f1ce66136f7561a3213908cd016","isMergeCommit":false,"messageTitle":"Refactor into Parser and Ui class","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":2},"java":{"insertions":400,"deletions":211}}},{"hash":"1ddeb732d2f5d0a7e4e758dffe6fe9da5a42b23b","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-04","commitResults":[{"hash":"fb32c6db305329eef53b40b6c96bac1303441968","isMergeCommit":false,"messageTitle":"Organize files into packages","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":123,"deletions":36},"sh":{"insertions":2,"deletions":2}}},{"hash":"4fdba6404f464048f7bc9244a31c70d0a578ac36","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Packages\u0027","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{}},{"hash":"2e08c44a6a99f4fc41e3147dd25cf6fe77cf75de","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d4089a04542d4c22f6a243dfedc8c4e033c6086c","isMergeCommit":false,"messageTitle":"Configure gradle build file","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-06","commitResults":[{"hash":"4b40558cc06e8968292b129d99df9493943a8201","isMergeCommit":false,"messageTitle":"Remove unnecessary try-catch","messageBody":"Let parser catch the exception.\n","fileTypesAndContributionMap":{"java":{"insertions":89,"deletions":101}}},{"hash":"ee0d3e7ed5eba534acfb3ead53587bc6d41ba410","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"Made some tests for the DeleteCommand and MarkCommand execute() method.\n","fileTypesAndContributionMap":{"java":{"insertions":167,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"e3ec2bda99592e8c6dbe2d1162117b748f61c2e5","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JUnit\u0027","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-07","commitResults":[{"hash":"3a47b309ba77044b8b03942112e000f18d0a65ef","isMergeCommit":false,"messageTitle":"Edit build name","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"81af67748f21fe89e25ddafb798a81e5293baeb7","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Jar\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}},{"hash":"70b3b436d80f23324299c5b84bd6536bf793969f","isMergeCommit":false,"messageTitle":"Add JavaDoc comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":344,"deletions":19}}},{"hash":"c6e34467b4fa5cf73dd82f8385fe86fe218913d4","isMergeCommit":false,"messageTitle":"Fix some Java coding standard violations","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":15}}},{"hash":"95052787d95ae986a29c0313e251d5f87010f53b","isMergeCommit":false,"messageTitle":"Add find command to filter tasks by keyword","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":89,"deletions":2}}},{"hash":"4bb88858e5c63236c9ecba122b45d29f12408a53","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-JavaDoc\u0027","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{}},{"hash":"443fe6b296d72209beb97edfc07f1618afb2bbb2","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{}},{"hash":"07c3789c18b4696a5dfa0830fc22b52b8026d515","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"raysonchia":{"java":1347,"md":0,"fxml":0,"sh":2,"bat":0,"gradle":2,"txt":22}},"authorContributionVariance":{"raysonchia":39374.6},"authorDisplayNameMap":{"raysonchia":"CS2103-F09-4 RAYS.. ZHE"}} diff --git a/reposense-logs/reposense.log.0 b/reposense-logs/reposense.log.0 index eaae0b8b..4db0a542 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,30 +1,30 @@ -Feb 06, 2024 3:22:54 PM reposense.system.LogsManager addFileHandler +Feb 07, 2024 1:15:41 AM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Feb 06, 2024 3:22:54 PM reposense.parser.CsvParser validateHeader +Feb 07, 2024 1:15:42 AM 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 -Feb 06, 2024 3:22:55 PM reposense.parser.CsvParser validateHeader +Feb 07, 2024 1:15:43 AM 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 -Feb 06, 2024 3:22:55 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 07, 2024 1:15:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias amanzainal found. The alias will belong to the last author - amanzainal -Feb 06, 2024 3:22:55 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 07, 2024 1:15:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shuyuan found. The alias will belong to the last author - legionlegion -Feb 06, 2024 3:22:55 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 07, 2024 1:15:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias alphajae11 found. The alias will belong to the last author - alphajae11 -Feb 06, 2024 3:22:55 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 07, 2024 1:15:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jayne1010 found. The alias will belong to the last author - Jayne1010 -Feb 06, 2024 3:22:55 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 07, 2024 1:15:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias miffi found. The alias will belong to the last author - miffi -Feb 06, 2024 3:22:55 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 07, 2024 1:15:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias amanzainal found. The alias will belong to the last author - amanzainal -Feb 06, 2024 3:22:55 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 07, 2024 1:15:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shuyuan found. The alias will belong to the last author - legionlegion -Feb 06, 2024 3:22:55 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 07, 2024 1:15:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias alphajae11 found. The alias will belong to the last author - alphajae11 -Feb 06, 2024 3:22:55 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 07, 2024 1:15:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jayne1010 found. The alias will belong to the last author - Jayne1010 -Feb 06, 2024 3:22:55 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Feb 07, 2024 1:15:43 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias miffi found. The alias will belong to the last author - miffi -Feb 06, 2024 3:22:55 PM reposense.git.GitConfig getGlobalGitLfsConfig +Feb 07, 2024 1:15:43 AM 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 @@ -40,1001 +40,907 @@ fatal: unable to read config file '/home/runner/.gitconfig': No such file or dir at reposense.system.CommandRunner.runCommand(CommandRunner.java:21) ... 3 more -Feb 06, 2024 3:22:55 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/eliotlee68/ip.git... -Feb 06, 2024 3:22:55 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chuahjiajie/ip.git... -Feb 06, 2024 3:22:55 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/fy17ohhh/ip.git... -Feb 06, 2024 3:22:55 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:43 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chuahjiajie/ip.git... +Feb 07, 2024 1:15:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Austintjh19/ip.git... -Feb 06, 2024 3:22:55 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/eliotlee68/ip.git to complete... -Feb 06, 2024 3:22:55 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Austintjh19/ip.git to complete... -Feb 06, 2024 3:22:55 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chuahjiajie/ip.git to complete... -Feb 06, 2024 3:22:55 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/fy17ohhh/ip.git to complete... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/fy17ohhh/ip.git completed! -Feb 06, 2024 3:22:56 PM reposense.report.ReportGenerator analyzeRepos -INFO: [1/430] Analyzing https://github.com/fy17ohhh/ip.git (master)... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/linnn-7/ip.git... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Austintjh19/ip.git to complete... +Feb 07, 2024 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/eliotlee68/ip.git to complete... +Feb 07, 2024 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/chuahjiajie/ip.git completed! -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:43 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/linnn-7/ip.git... +Feb 07, 2024 1:15:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [1/430] Analyzing https://github.com/chuahjiajie/ip.git (master)... +Feb 07, 2024 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/linnn-7/ip.git to complete... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/dedsecrattle/ip.git... -Feb 06, 2024 3:22:56 PM reposense.report.ReportGenerator analyzeRepos -INFO: [2/430] Analyzing https://github.com/chuahjiajie/ip.git (master)... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dedsecrattle/ip.git to complete... -Feb 06, 2024 3:22:56 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/fy17ohhh/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/fy17ohhh/ip.git (master)... -Feb 06, 2024 3:22:56 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:43 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chuahjiajie/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chuahjiajie/ip.git (master)... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Austintjh19/ip.git completed! -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/gavingoh99/ip.git... -Feb 06, 2024 3:22:56 PM reposense.report.ReportGenerator analyzeRepos -INFO: [3/430] Analyzing https://github.com/Austintjh19/ip.git (master)... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/gavingoh99/ip.git to complete... -Feb 06, 2024 3:22:56 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:43 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/dedsecrattle/ip.git... +Feb 07, 2024 1:15:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [2/430] Analyzing https://github.com/Austintjh19/ip.git (master)... +Feb 07, 2024 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dedsecrattle/ip.git to complete... +Feb 07, 2024 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/fy17ohhh/ip.git completed! +Feb 07, 2024 1:15:43 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Austintjh19/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Austintjh19/ip.git (master)... -Feb 06, 2024 3:22:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:43 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/gavingoh99/ip.git... +Feb 07, 2024 1:15:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [3/430] Analyzing https://github.com/fy17ohhh/ip.git (master)... +Feb 07, 2024 1:15:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/gavingoh99/ip.git to complete... +Feb 07, 2024 1:15:43 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/fy17ohhh/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/fy17ohhh/ip.git (master)... +Feb 07, 2024 1:15:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/chuahjiajie/ip.git (master)... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/eliotlee68/ip.git completed! -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/whitesnowx/ip.git... -Feb 06, 2024 3:22:56 PM reposense.report.ReportGenerator analyzeRepos -INFO: [4/430] Analyzing https://github.com/eliotlee68/ip.git (master)... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/linnn-7/ip.git completed! -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/whitesnowx/ip.git to complete... -Feb 06, 2024 3:22:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dedsecrattle/ip.git completed! +Feb 07, 2024 1:15:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/chuahjiajie/ip.git (master)... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/whitesnowx/ip.git... +Feb 07, 2024 1:15:44 AM reposense.report.ReportGenerator analyzeRepos +INFO: [4/430] Analyzing https://github.com/eliotlee68/ip.git (master)... +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/gavin331/ip.git... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/gavin331/ip.git to complete... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dedsecrattle/ip.git completed! -Feb 06, 2024 3:22:56 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chuahjiajie/ip.git (master) completed! -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/gavingoh99/ip.git completed! +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SherisseTJW/ip.git... -Feb 06, 2024 3:22:56 PM reposense.report.ReportGenerator analyzeRepos -INFO: [5/430] Analyzing https://github.com/linnn-7/ip.git (master)... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tahnya/ip.git... +Feb 07, 2024 1:15:44 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chuahjiajie/ip.git (master) completed! +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/gavin331/ip.git to complete... +Feb 07, 2024 1:15:44 AM reposense.report.ReportGenerator analyzeRepos +INFO: [5/430] Analyzing https://github.com/dedsecrattle/ip.git (master)... +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/whitesnowx/ip.git to complete... +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tahnya/ip.git to complete... +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SherisseTJW/ip.git to complete... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/gavingoh99/ip.git completed! -Feb 06, 2024 3:22:56 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/linnn-7/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/linnn-7/ip.git (master)... -Feb 06, 2024 3:22:56 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:44 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dedsecrattle/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dedsecrattle/ip.git (master)... +Feb 07, 2024 1:15:44 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/eliotlee68/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/eliotlee68/ip.git (master)... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tahnya/ip.git... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tahnya/ip.git to complete... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/whitesnowx/ip.git completed! -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yongkotaro/ip.git... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/gavin331/ip.git completed! -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/E0735389/ip.git... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yongkotaro/ip.git... +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yongkotaro/ip.git to complete... -Feb 06, 2024 3:22:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/E0735389/ip.git to complete... -Feb 06, 2024 3:22:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/whitesnowx/ip.git completed! +Feb 07, 2024 1:15:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/fy17ohhh/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/E0735389/ip.git... +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tahnya/ip.git completed! +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/SherisseTJW/ip.git completed! -Feb 06, 2024 3:22:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/fy17ohhh/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/fy17ohhh/ip.git (master) completed! -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/E0735389/ip.git to complete... +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/beefsausagee/ip.git... -Feb 06, 2024 3:22:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [6/430] Analyzing https://github.com/dedsecrattle/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/fy17ohhh/ip.git (master)... +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/beefsausagee/ip.git to complete... -Feb 06, 2024 3:22:57 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dedsecrattle/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dedsecrattle/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tahnya/ip.git completed! -Feb 06, 2024 3:22:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Austintjh19/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/c-wenlong/ip.git... -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/c-wenlong/ip.git to complete... -Feb 06, 2024 3:22:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Austintjh19/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Austintjh19/ip.git (master) completed! -Feb 06, 2024 3:22:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [7/430] Analyzing https://github.com/gavingoh99/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/E0735389/ip.git completed! -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:44 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/fy17ohhh/ip.git (master) completed! +Feb 07, 2024 1:15:44 AM reposense.report.ReportGenerator analyzeRepos +INFO: [6/430] Analyzing https://github.com/linnn-7/ip.git (master)... +Feb 07, 2024 1:15:44 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/linnn-7/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/linnn-7/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dedsecrattle/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dedsecrattle/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dedsecrattle/ip.git (master) completed! +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yongkotaro/ip.git completed! -Feb 06, 2024 3:22:57 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/gavingoh99/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/gavingoh99/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [7/430] Analyzing https://github.com/gavingoh99/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ChuaZenKhoon/ip.git... -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ziyi22/ip.git... -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ziyi22/ip.git to complete... -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ChuaZenKhoon/ip.git to complete... -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/gavingoh99/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/gavingoh99/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Austintjh19/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Austintjh19/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/beefsausagee/ip.git completed! -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/E0735389/ip.git completed! +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/c-wenlong/ip.git completed! +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Austintjh19/ip.git (master) completed! +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [8/430] Analyzing https://github.com/gavin331/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ziyi22/ip.git... +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/gauravuj/ip.git... -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/marclamp/ip.git... +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/marclamp/ip.git to complete... +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/gauravuj/ip.git to complete... -Feb 06, 2024 3:22:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ziyi22/ip.git to complete... +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/gavin331/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/gavin331/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/eliotlee68/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dedsecrattle/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/linnn-7/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/c-wenlong/ip.git completed! -Feb 06, 2024 3:22:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/eliotlee68/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/eliotlee68/ip.git (master) completed! -Feb 06, 2024 3:22:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dedsecrattle/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [8/430] Analyzing https://github.com/whitesnowx/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/marclamp/ip.git... -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/marclamp/ip.git to complete... -Feb 06, 2024 3:22:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dedsecrattle/ip.git (master) completed! -Feb 06, 2024 3:22:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/gavingoh99/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/linnn-7/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [9/430] Analyzing https://github.com/gavin331/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/linnn-7/ip.git (master) completed! -Feb 06, 2024 3:22:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [10/430] Analyzing https://github.com/SherisseTJW/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [9/430] Analyzing https://github.com/whitesnowx/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ChuaZenKhoon/ip.git completed! +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/LifHoshi/ip.git... +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LifHoshi/ip.git to complete... +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/whitesnowx/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/whitesnowx/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/gavingoh99/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/linnn-7/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/gavingoh99/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/marclamp/ip.git completed! +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/gauravuj/ip.git completed! +Feb 07, 2024 1:15:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/linnn-7/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/gavingoh99/ip.git (master) completed! -Feb 06, 2024 3:22:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [11/430] Analyzing https://github.com/tahnya/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ChuaZenKhoon/ip.git completed! -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/linnn-7/ip.git (master) completed! +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [10/430] Analyzing https://github.com/SherisseTJW/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ziyi22/ip.git completed! -Feb 06, 2024 3:22:57 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/gavin331/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/gavin331/ip.git (master)... -Feb 06, 2024 3:22:57 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/LifHoshi/ip.git... -Feb 06, 2024 3:22:57 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SherisseTJW/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SherisseTJW/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LifHoshi/ip.git to complete... -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tahnya/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tahnya/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [11/430] Analyzing https://github.com/tahnya/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/erv-teo/ip.git... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/erv-teo/ip.git to complete... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/gauravuj/ip.git completed! -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/PyromancerBoom/ip.git... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/javierng2knus/ip.git... +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/PyromancerBoom/ip.git to complete... -Feb 06, 2024 3:22:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/gavin331/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SherisseTJW/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SherisseTJW/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/erv-teo/ip.git to complete... +Feb 07, 2024 1:15:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/javierng2knus/ip.git to complete... +Feb 07, 2024 1:15:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/whitesnowx/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tahnya/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tahnya/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tahnya/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/gavin331/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/gavin331/ip.git (master) completed! +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [12/430] Analyzing https://github.com/yongkotaro/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/whitesnowx/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/whitesnowx/ip.git (master) completed! -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator analyzeRepos -INFO: [12/430] Analyzing https://github.com/E0735389/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tahnya/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tahnya/ip.git (master) completed! -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator analyzeRepos -INFO: [13/430] Analyzing https://github.com/yongkotaro/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [13/430] Analyzing https://github.com/beefsausagee/ip.git (master)... +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yongkotaro/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yongkotaro/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/E0735389/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/E0735389/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/marclamp/ip.git completed! -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/javierng2knus/ip.git... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/javierng2knus/ip.git to complete... -Feb 06, 2024 3:22:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/gavin331/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/gavin331/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/gavin331/ip.git (master) completed! -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator analyzeRepos -INFO: [14/430] Analyzing https://github.com/beefsausagee/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:45 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/beefsausagee/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/beefsausagee/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/erv-teo/ip.git completed! -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/LifHoshi/ip.git completed! -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Lalelulilulela/ip.git... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/martinng01/ip.git... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Lalelulilulela/ip.git to complete... -Feb 06, 2024 3:22:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SherisseTJW/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/martinng01/ip.git to complete... -Feb 06, 2024 3:22:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SherisseTJW/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SherisseTJW/ip.git (master) completed! -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator analyzeRepos -INFO: [15/430] Analyzing https://github.com/c-wenlong/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tahnya/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tahnya/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/beefsausagee/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/PyromancerBoom/ip.git completed! -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/c-wenlong/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/c-wenlong/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tahnya/ip.git (master) completed! +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [14/430] Analyzing https://github.com/E0735389/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/beefsausagee/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yongkotaro/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/beefsausagee/ip.git (master) completed! -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [15/430] Analyzing https://github.com/c-wenlong/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/E0735389/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/E0735389/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/c-wenlong/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/c-wenlong/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/erv-teo/ip.git completed! +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/martinng01/ip.git... +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/martinng01/ip.git to complete... +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/PyromancerBoom/ip.git completed! +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dwangwk/ip.git... -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator analyzeRepos -INFO: [16/430] Analyzing https://github.com/ChuaZenKhoon/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/javierng2knus/ip.git completed! +Feb 07, 2024 1:15:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SherisseTJW/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/bryanyee33/ip.git... +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dwangwk/ip.git to complete... -Feb 06, 2024 3:22:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yongkotaro/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yongkotaro/ip.git (master) completed! -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/bryanyee33/ip.git to complete... +Feb 07, 2024 1:15:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SherisseTJW/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SherisseTJW/ip.git (master) completed! +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [16/430] Analyzing https://github.com/ChuaZenKhoon/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yongkotaro/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChuaZenKhoon/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChuaZenKhoon/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator analyzeRepos -INFO: [17/430] Analyzing https://github.com/ziyi22/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/E0735389/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ziyi22/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ziyi22/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/E0735389/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/E0735389/ip.git (master) completed! -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator analyzeRepos -INFO: [18/430] Analyzing https://github.com/gauravuj/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/javierng2knus/ip.git completed! -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/bryanyee33/ip.git... -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yongkotaro/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yongkotaro/ip.git (master) completed! +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [17/430] Analyzing https://github.com/gauravuj/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/gauravuj/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/gauravuj/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/bryanyee33/ip.git to complete... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/martinng01/ip.git completed! -Feb 06, 2024 3:22:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ziyi22/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/cliftonchee/ip.git... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Lalelulilulela/ip.git completed! -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/cliftonchee/ip.git... +Feb 07, 2024 1:15:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/E0735389/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cliftonchee/ip.git to complete... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/peterXGD/ip.git... -Feb 06, 2024 3:22:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/peterXGD/ip.git to complete... -Feb 06, 2024 3:22:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ziyi22/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ziyi22/ip.git (master) completed! -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator analyzeRepos -INFO: [19/430] Analyzing https://github.com/marclamp/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/E0735389/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/E0735389/ip.git (master) completed! +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [18/430] Analyzing https://github.com/ziyi22/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ziyi22/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ziyi22/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ChuaZenKhoon/ip.git (master)... -Feb 06, 2024 3:22:58 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/marclamp/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/marclamp/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/c-wenlong/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ChuaZenKhoon/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/martinng01/ip.git completed! +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dwangwk/ip.git completed! +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ChuaZenKhoon/ip.git (master) completed! -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [19/430] Analyzing https://github.com/marclamp/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/c-wenlong/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/peterXGD/ip.git... +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/c-wenlong/ip.git (master) completed! +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator analyzeRepos INFO: [20/430] Analyzing https://github.com/LifHoshi/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dwangwk/ip.git completed! -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/peterXGD/ip.git to complete... +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bryanyee33/ip.git completed! +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/alex-setyawan/ip.git... +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Jawad280/ip.git... +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Jawad280/ip.git to complete... +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/marclamp/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/marclamp/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/LifHoshi/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/LifHoshi/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/alex-setyawan/ip.git... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/alex-setyawan/ip.git to complete... -Feb 06, 2024 3:22:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/c-wenlong/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/c-wenlong/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/c-wenlong/ip.git (master) completed! -Feb 06, 2024 3:22:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/gauravuj/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ziyi22/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ziyi22/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ziyi22/ip.git (master) completed! +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator analyzeRepos INFO: [21/430] Analyzing https://github.com/erv-teo/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cliftonchee/ip.git completed! +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Howlong11/ip.git... +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/erv-teo/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/erv-teo/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Howlong11/ip.git to complete... +Feb 07, 2024 1:15:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/gauravuj/ip.git (master)... +Feb 07, 2024 1:15:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/gauravuj/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:46 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/gauravuj/ip.git (master) completed! -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator analyzeRepos INFO: [22/430] Analyzing https://github.com/PyromancerBoom/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/erv-teo/ip.git (master)... +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/PyromancerBoom/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/PyromancerBoom/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/marclamp/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bryanyee33/ip.git completed! -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Jawad280/ip.git... -Feb 06, 2024 3:22:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/marclamp/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/marclamp/ip.git (master) completed! -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/erv-teo/ip.git (master)... +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/erv-teo/ip.git (master) completed! +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator analyzeRepos INFO: [23/430] Analyzing https://github.com/javierng2knus/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/peterXGD/ip.git completed! -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Jawad280/ip.git to complete... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Howlong11/ip.git... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Howlong11/ip.git to complete... -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/javierng2knus/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/javierng2knus/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cliftonchee/ip.git completed! -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/bennyLCK/ip.git... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/bennyLCK/ip.git to complete... -Feb 06, 2024 3:22:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/erv-teo/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/erv-teo/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/erv-teo/ip.git (master) completed! -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator analyzeRepos -INFO: [24/430] Analyzing https://github.com/martinng01/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/martinng01/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/martinng01/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/PyromancerBoom/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/peterXGD/ip.git completed! +Feb 07, 2024 1:15:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/PyromancerBoom/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/PyromancerBoom/ip.git (master) completed! -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator analyzeRepos -INFO: [25/430] Analyzing https://github.com/Lalelulilulela/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/alex-setyawan/ip.git completed! -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/garywongkai/ip.git... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/garywongkai/ip.git to complete... -Feb 06, 2024 3:22:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [24/430] Analyzing https://github.com/Lalelulilulela/ip.git (master)... +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/bennyLCK/ip.git... +Feb 07, 2024 1:15:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/LifHoshi/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Lalelulilulela/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Lalelulilulela/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/bennyLCK/ip.git to complete... +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jawad280/ip.git completed! +Feb 07, 2024 1:15:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/LifHoshi/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/LifHoshi/ip.git (master) completed! -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [25/430] Analyzing https://github.com/martinng01/ip.git (master)... +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/garywongkai/ip.git... +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Lalelulilulela/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Lalelulilulela/ip.git (master)... +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/garywongkai/ip.git to complete... +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/alex-setyawan/ip.git completed! +Feb 07, 2024 1:15:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/marclamp/ip.git (master)... +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sebin0817/ip.git... +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/martinng01/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/martinng01/ip.git (master)... +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Howlong11/ip.git completed! +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sebin0817/ip.git to complete... +Feb 07, 2024 1:15:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/marclamp/ip.git (master)... +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AL-ZT/ip.git... +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/marclamp/ip.git (master) completed! +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator analyzeRepos INFO: [26/430] Analyzing https://github.com/dwangwk/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AL-ZT/ip.git to complete... +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dwangwk/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dwangwk/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/javierng2knus/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jawad280/ip.git completed! -Feb 06, 2024 3:22:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/javierng2knus/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Howlong11/ip.git completed! -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/javierng2knus/ip.git (master) completed! -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bennyLCK/ip.git completed! -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator analyzeRepos INFO: [27/430] Analyzing https://github.com/bryanyee33/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sebin0817/ip.git... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AL-ZT/ip.git... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/iynixil/ip.git... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AL-ZT/ip.git to complete... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sebin0817/ip.git to complete... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/iynixil/ip.git to complete... -Feb 06, 2024 3:22:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/martinng01/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/bryanyee33/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:22:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/bryanyee33/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/martinng01/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/martinng01/ip.git (master) completed! -Feb 06, 2024 3:22:59 PM reposense.report.ReportGenerator analyzeRepos -INFO: [28/430] Analyzing https://github.com/peterXGD/ip.git (master)... -Feb 06, 2024 3:22:59 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bennyLCK/ip.git completed! +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/iynixil/ip.git... +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/iynixil/ip.git to complete... +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/garywongkai/ip.git completed! -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dwangwk/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ys112/ip.git... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/peterXGD/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/peterXGD/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sebin0817/ip.git completed! +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ys112/ip.git to complete... -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dwangwk/ip.git (master)... +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/acekhoon/ip.git... +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/acekhoon/ip.git to complete... +Feb 07, 2024 1:15:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/martinng01/ip.git (master)... +Feb 07, 2024 1:15:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Lalelulilulela/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AL-ZT/ip.git completed! +Feb 07, 2024 1:15:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/dwangwk/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dwangwk/ip.git (master) completed! -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Lalelulilulela/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dwangwk/ip.git (master) completed! +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Lalelulilulela/ip.git (master) completed! -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [29/430] Analyzing https://github.com/cliftonchee/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [30/430] Analyzing https://github.com/alex-setyawan/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [28/430] Analyzing https://github.com/cliftonchee/ip.git (master)... +Feb 07, 2024 1:15:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/martinng01/ip.git (master)... +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/martinng01/ip.git (master) completed! +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [29/430] Analyzing https://github.com/peterXGD/ip.git (master)... +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/larainezo/ip.git... +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [30/430] Analyzing https://github.com/Jawad280/ip.git (master)... +Feb 07, 2024 1:15:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/larainezo/ip.git to complete... +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/peterXGD/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/peterXGD/ip.git (master)... +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Jawad280/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Jawad280/ip.git (master)... +Feb 07, 2024 1:15:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/cliftonchee/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/cliftonchee/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/alex-setyawan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/alex-setyawan/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/alex-setyawan/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/alex-setyawan/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/alex-setyawan/ip.git (master) completed! -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [31/430] Analyzing https://github.com/Howlong11/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/bryanyee33/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AL-ZT/ip.git completed! -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sebin0817/ip.git completed! -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/acekhoon/ip.git... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Howlong11/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Howlong11/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/acekhoon/ip.git to complete... -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/larainezo/ip.git... -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/bryanyee33/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/bryanyee33/ip.git (master) completed! -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/larainezo/ip.git to complete... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [32/430] Analyzing https://github.com/Jawad280/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [31/430] Analyzing https://github.com/alex-setyawan/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/alex-setyawan/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/alex-setyawan/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/iynixil/ip.git completed! -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/peterXGD/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yyccbb/ip.git... -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yyccbb/ip.git to complete... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Jawad280/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Jawad280/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/peterXGD/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yyccbb/ip.git to complete... +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/peterXGD/ip.git (master) completed! -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [33/430] Analyzing https://github.com/bennyLCK/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/bennyLCK/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/bennyLCK/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ys112/ip.git completed! -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [32/430] Analyzing https://github.com/Howlong11/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/acekhoon/ip.git completed! +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AidenLYT/ip.git... -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AidenLYT/ip.git to complete... -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Howlong11/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Howlong11/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/larainezo/ip.git completed! +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ys112/ip.git completed! +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/minghowC/ip.git... +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Jaspertzx/ip.git... +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/minghowC/ip.git to complete... +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Jaspertzx/ip.git to complete... +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/cliftonchee/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/cliftonchee/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/alex-setyawan/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/cliftonchee/ip.git (master) completed! -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Howlong11/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [33/430] Analyzing https://github.com/bennyLCK/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/alex-setyawan/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/alex-setyawan/ip.git (master) completed! +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepos INFO: [34/430] Analyzing https://github.com/garywongkai/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Howlong11/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Howlong11/ip.git (master) completed! -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [35/430] Analyzing https://github.com/AL-ZT/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/bennyLCK/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/bennyLCK/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jawad280/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/garywongkai/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/garywongkai/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AL-ZT/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AL-ZT/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/larainezo/ip.git completed! -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/minghowC/ip.git... -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/minghowC/ip.git to complete... -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/acekhoon/ip.git completed! -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Jaspertzx/ip.git... -Feb 06, 2024 3:23:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Jaspertzx/ip.git to complete... -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bennyLCK/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AL-ZT/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jawad280/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/garywongkai/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/bennyLCK/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/bennyLCK/ip.git (master) completed! -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [36/430] Analyzing https://github.com/sebin0817/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Jawad280/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/garywongkai/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/garywongkai/ip.git (master) completed! -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Jawad280/ip.git (master) completed! -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [38/430] Analyzing https://github.com/ys112/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AL-ZT/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [37/430] Analyzing https://github.com/iynixil/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AL-ZT/ip.git (master) completed! -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [39/430] Analyzing https://github.com/larainezo/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Howlong11/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [35/430] Analyzing https://github.com/sebin0817/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Howlong11/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Howlong11/ip.git (master) completed! +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [36/430] Analyzing https://github.com/AL-ZT/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sebin0817/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sebin0817/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/larainezo/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/larainezo/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/iynixil/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/iynixil/ip.git (master)... -Feb 06, 2024 3:23:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ys112/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ys112/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AidenLYT/ip.git completed! -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AL-ZT/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AL-ZT/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yyccbb/ip.git completed! +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/limrik/ip.git... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/limrik/ip.git to complete... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/minghowC/ip.git completed! -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cyqjoseph/ip.git... -Feb 06, 2024 3:23:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sebin0817/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cyqjoseph/ip.git to complete... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Jaspertzx/ip.git completed! -Feb 06, 2024 3:23:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sebin0817/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/larainezo/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sebin0817/ip.git (master) completed! -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jeong-jaeho/ip.git... -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator analyzeRepos -INFO: [40/430] Analyzing https://github.com/acekhoon/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jeong-jaeho/ip.git to complete... -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AidenLYT/ip.git completed! +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wilsonwid/ip.git... +Feb 07, 2024 1:15:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wilsonwid/ip.git to complete... +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/garywongkai/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/garywongkai/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/garywongkai/ip.git (master) completed! +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [37/430] Analyzing https://github.com/iynixil/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sebin0817/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/iynixil/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/iynixil/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AL-ZT/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bennyLCK/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sebin0817/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sebin0817/ip.git (master) completed! +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [38/430] Analyzing https://github.com/acekhoon/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AL-ZT/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AL-ZT/ip.git (master) completed! +Feb 07, 2024 1:15:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/bennyLCK/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [39/430] Analyzing https://github.com/larainezo/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/bennyLCK/ip.git (master) completed! +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [40/430] Analyzing https://github.com/ys112/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/acekhoon/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/acekhoon/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yyccbb/ip.git completed! -Feb 06, 2024 3:23:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/larainezo/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/larainezo/ip.git (master)... +Feb 07, 2024 1:15:48 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ys112/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ys112/ip.git (master)... +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/limrik/ip.git completed! +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/iamtr/ip.git... +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/iamtr/ip.git to complete... +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cyqjoseph/ip.git completed! +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wilsonwid/ip.git completed! +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yleeyilin/ip.git... +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/RunjiaChen/ip.git... +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/RunjiaChen/ip.git to complete... +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yleeyilin/ip.git to complete... +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jeong-jaeho/ip.git completed! +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/nichee/ip.git... +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/nichee/ip.git to complete... +Feb 07, 2024 1:15:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/larainezo/ip.git (master)... +Feb 07, 2024 1:15:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/acekhoon/ip.git (master)... +Feb 07, 2024 1:15:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/larainezo/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/larainezo/ip.git (master) completed! -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator analyzeRepos -INFO: [41/430] Analyzing https://github.com/AidenLYT/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wilsonwid/ip.git... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wilsonwid/ip.git to complete... -Feb 06, 2024 3:23:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ys112/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AidenLYT/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AidenLYT/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ys112/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ys112/ip.git (master) completed! -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [41/430] Analyzing https://github.com/yyccbb/ip.git (master)... +Feb 07, 2024 1:15:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/acekhoon/ip.git (master)... +Feb 07, 2024 1:15:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/iynixil/ip.git (master)... +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/acekhoon/ip.git (master) completed! +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator analyzeRepos INFO: [42/430] Analyzing https://github.com/minghowC/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yyccbb/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yyccbb/ip.git (master)... +Feb 07, 2024 1:15:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/iynixil/ip.git (master)... +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/minghowC/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/minghowC/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/iynixil/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/iynixil/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/iynixil/ip.git (master) completed! -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/limrik/ip.git completed! -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator analyzeRepos INFO: [43/430] Analyzing https://github.com/Jaspertzx/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/iamtr/ip.git... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/iamtr/ip.git to complete... -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ys112/ip.git (master)... +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Jaspertzx/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Jaspertzx/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/acekhoon/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cyqjoseph/ip.git completed! -Feb 06, 2024 3:23:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/acekhoon/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/acekhoon/ip.git (master) completed! -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yleeyilin/ip.git... -Feb 06, 2024 3:23:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ys112/ip.git (master)... +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ys112/ip.git (master) completed! +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [44/430] Analyzing https://github.com/AidenLYT/ip.git (master)... +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/iamtr/ip.git completed! +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AidenLYT/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AidenLYT/ip.git (master)... +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/leeweiming3/ip.git... +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/leeweiming3/ip.git to complete... +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nichee/ip.git completed! +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yleeyilin/ip.git completed! +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/leepoeaik/ip.git... +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/danielleloh/ip.git... +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/danielleloh/ip.git to complete... +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/leepoeaik/ip.git to complete... +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/RunjiaChen/ip.git completed! +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wallacexuhanxiao/ip.git... +Feb 07, 2024 1:15:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/minghowC/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator analyzeRepos -INFO: [44/430] Analyzing https://github.com/yyccbb/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yleeyilin/ip.git to complete... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jeong-jaeho/ip.git completed! -Feb 06, 2024 3:23:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wallacexuhanxiao/ip.git to complete... +Feb 07, 2024 1:15:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/minghowC/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/minghowC/ip.git (master) completed! -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator analyzeRepos INFO: [45/430] Analyzing https://github.com/limrik/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yyccbb/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yyccbb/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/RunjiaChen/ip.git... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/RunjiaChen/ip.git to complete... -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/limrik/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/limrik/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wilsonwid/ip.git completed! -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/nichee/ip.git... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/nichee/ip.git to complete... -Feb 06, 2024 3:23:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AidenLYT/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AidenLYT/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AidenLYT/ip.git (master) completed! -Feb 06, 2024 3:23:01 PM reposense.report.ReportGenerator analyzeRepos -INFO: [46/430] Analyzing https://github.com/cyqjoseph/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/iamtr/ip.git completed! -Feb 06, 2024 3:23:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jaspertzx/ip.git (master)... -Feb 06, 2024 3:23:01 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/leeweiming3/ip.git... -Feb 06, 2024 3:23:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/leeweiming3/ip.git to complete... -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cyqjoseph/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cyqjoseph/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Jaspertzx/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Jaspertzx/ip.git (master) completed! -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [47/430] Analyzing https://github.com/jeong-jaeho/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yyccbb/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jeong-jaeho/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jeong-jaeho/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yyccbb/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yyccbb/ip.git (master) completed! -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [48/430] Analyzing https://github.com/wilsonwid/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jaspertzx/ip.git (master)... +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [46/430] Analyzing https://github.com/cyqjoseph/ip.git (master)... +Feb 07, 2024 1:15:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Jaspertzx/ip.git (master)... +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Jaspertzx/ip.git (master) completed! +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [47/430] Analyzing https://github.com/wilsonwid/ip.git (master)... +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cyqjoseph/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cyqjoseph/ip.git (master)... +Feb 07, 2024 1:15:49 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wilsonwid/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wilsonwid/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jeong-jaeho/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jeong-jaeho/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jeong-jaeho/ip.git (master) completed! -Feb 06, 2024 3:23:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/limrik/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [49/430] Analyzing https://github.com/iamtr/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/limrik/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/limrik/ip.git (master) completed! -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/iamtr/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/iamtr/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/RunjiaChen/ip.git completed! -Feb 06, 2024 3:23:02 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/leepoeaik/ip.git... -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [50/430] Analyzing https://github.com/RunjiaChen/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/leepoeaik/ip.git to complete... -Feb 06, 2024 3:23:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nichee/ip.git completed! -Feb 06, 2024 3:23:02 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/danielleloh/ip.git... -Feb 06, 2024 3:23:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/danielleloh/ip.git to complete... -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/RunjiaChen/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/RunjiaChen/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/leeweiming3/ip.git completed! -Feb 06, 2024 3:23:02 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wallacexuhanxiao/ip.git... -Feb 06, 2024 3:23:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wallacexuhanxiao/ip.git to complete... -Feb 06, 2024 3:23:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/iamtr/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/iamtr/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/iamtr/ip.git (master) completed! -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [51/430] Analyzing https://github.com/nichee/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/nichee/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/nichee/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wilsonwid/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wilsonwid/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wilsonwid/ip.git (master) completed! -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [52/430] Analyzing https://github.com/leeweiming3/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cyqjoseph/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/leeweiming3/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/leeweiming3/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cyqjoseph/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cyqjoseph/ip.git (master) completed! -Feb 06, 2024 3:23:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/danielleloh/ip.git completed! -Feb 06, 2024 3:23:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/leepoeaik/ip.git completed! -Feb 06, 2024 3:23:02 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wallacexuhanxiao/ip.git completed! +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LimZiJia/ip.git... -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [53/430] Analyzing https://github.com/leepoeaik/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LimZiJia/ip.git to complete... -Feb 06, 2024 3:23:02 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/thewongdylan/ip.git... -Feb 06, 2024 3:23:02 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/danielleloh/ip.git completed! +Feb 07, 2024 1:15:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AidenLYT/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/thewongdylan/ip.git to complete... -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/leepoeaik/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/leepoeaik/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/RunjiaChen/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/RunjiaChen/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/RunjiaChen/ip.git (master) completed! -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [54/430] Analyzing https://github.com/danielleloh/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/danielleloh/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/danielleloh/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wallacexuhanxiao/ip.git completed! -Feb 06, 2024 3:23:02 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Ryan-Reno/ip.git... -Feb 06, 2024 3:23:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nichee/ip.git (master)... -Feb 06, 2024 3:23:02 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/leepoeaik/ip.git completed! +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jerremyng/ip.git... +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Ryan-Reno/ip.git to complete... -Feb 06, 2024 3:23:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/nichee/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/nichee/ip.git (master) completed! -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator analyzeRepos -INFO: [55/430] Analyzing https://github.com/wallacexuhanxiao/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/leeweiming3/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/leeweiming3/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wallacexuhanxiao/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wallacexuhanxiao/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/leeweiming3/ip.git (master) completed! -Feb 06, 2024 3:23:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/leepoeaik/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/leepoeaik/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/leepoeaik/ip.git (master) completed! -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jerremyng/ip.git to complete... +Feb 07, 2024 1:15:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AidenLYT/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AidenLYT/ip.git (master) completed! +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [48/430] Analyzing https://github.com/jeong-jaeho/ip.git (master)... +Feb 07, 2024 1:15:50 AM 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'... @@ -1050,1277 +956,1315 @@ 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) -Feb 06, 2024 3:23:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/danielleloh/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jerremyng/ip.git... -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jerremyng/ip.git to complete... -Feb 06, 2024 3:23:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/danielleloh/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/danielleloh/ip.git (master) completed! -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LimZiJia/ip.git completed! -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator analyzeRepos -INFO: [56/430] Analyzing https://github.com/LimZiJia/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/marcus-ny/ip.git... -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/thewongdylan/ip.git completed! -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jeong-jaeho/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jeong-jaeho/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/marcus-ny/ip.git to complete... -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/limrik/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/limrik/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/limrik/ip.git (master) completed! +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [49/430] Analyzing https://github.com/iamtr/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/iamtr/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/iamtr/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jeong-jaeho/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jeong-jaeho/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jeong-jaeho/ip.git (master) completed! +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [50/430] Analyzing https://github.com/nichee/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wilsonwid/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/thewongdylan/ip.git completed! +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LimZiJia/ip.git completed! +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wapisai/ip.git... -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator analyzeRepos -INFO: [57/430] Analyzing https://github.com/thewongdylan/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wapisai/ip.git to complete... -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LimZiJia/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LimZiJia/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yleeyilin/ip.git completed! -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/nichee/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/nichee/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Ty-stan0417/ip.git... -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator analyzeRepos -INFO: [58/430] Analyzing https://github.com/yleeyilin/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/thewongdylan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/thewongdylan/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wilsonwid/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wilsonwid/ip.git (master) completed! +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wapisai/ip.git to complete... +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [51/430] Analyzing https://github.com/yleeyilin/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Ty-stan0417/ip.git to complete... -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jerremyng/ip.git completed! +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yleeyilin/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yleeyilin/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/thewongdylan/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/thewongdylan/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/thewongdylan/ip.git (master) completed! -Feb 06, 2024 3:23:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LimZiJia/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jerremyng/ip.git completed! -Feb 06, 2024 3:23:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LimZiJia/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator analyzeRepos -INFO: [59/430] Analyzing https://github.com/jerremyng/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kjw142857/ip.git... -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LimZiJia/ip.git (master) completed! -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kjw142857/ip.git to complete... -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jerremyng/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jerremyng/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wallacexuhanxiao/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Ty-stan0417/ip.git completed! -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/iamtr/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/marcus-ny/ip.git completed! +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ljy0422/ip.git... -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator analyzeRepos -INFO: [60/430] Analyzing https://github.com/Ty-stan0417/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wapisai/ip.git completed! -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lokidoki102/ip.git... -Feb 06, 2024 3:23:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wallacexuhanxiao/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/iamtr/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cyqjoseph/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ljy0422/ip.git to complete... -Feb 06, 2024 3:23:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yleeyilin/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wallacexuhanxiao/ip.git (master) completed! -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator analyzeRepos -INFO: [61/430] Analyzing https://github.com/wapisai/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/iamtr/ip.git (master) completed! +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [52/430] Analyzing https://github.com/RunjiaChen/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/RunjiaChen/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/RunjiaChen/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cyqjoseph/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cyqjoseph/ip.git (master) completed! +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [53/430] Analyzing https://github.com/leeweiming3/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/leeweiming3/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/leeweiming3/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nichee/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/nichee/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Ty-stan0417/ip.git completed! +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/nichee/ip.git (master) completed! +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lokidoki102/ip.git... +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [54/430] Analyzing https://github.com/wallacexuhanxiao/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/lokidoki102/ip.git to complete... -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Ty-stan0417/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Ty-stan0417/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yleeyilin/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yleeyilin/ip.git (master) completed! -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wapisai/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wapisai/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Ty-stan0417/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Ty-stan0417/ip.git (master)... -Feb 06, 2024 3:23:03 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Ty-stan0417/ip.git (master) completed! -Feb 06, 2024 3:23:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wapisai/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jerremyng/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wapisai/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kjw142857/ip.git completed! -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wapisai/ip.git (master) completed! -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator analyzeRepos -INFO: [62/430] Analyzing https://github.com/kjw142857/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wapisai/ip.git completed! +Feb 07, 2024 1:15:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wallacexuhanxiao/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wallacexuhanxiao/ip.git (master)... +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanguoyang/ip.git... -Feb 06, 2024 3:23:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jerremyng/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanguoyang/ip.git to complete... -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jerremyng/ip.git (master) completed! -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kjw142857/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kjw142857/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kjw142857/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kjw142857/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kjw142857/ip.git (master) completed! -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lokidoki102/ip.git completed! -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator analyzeRepos -INFO: [63/430] Analyzing https://github.com/lokidoki102/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kjw142857/ip.git completed! +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/myang2020/ip.git... -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/leeweiming3/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/myang2020/ip.git to complete... -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lokidoki102/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lokidoki102/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lokidoki102/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tanguoyang/ip.git completed! -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator analyzeRepos -INFO: [64/430] Analyzing https://github.com/tanguoyang/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yleeyilin/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ljy0422/ip.git completed! +Feb 07, 2024 1:15:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/leeweiming3/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/leeweiming3/ip.git (master) completed! +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [55/430] Analyzing https://github.com/danielleloh/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jaejayrome/ip.git... -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jaejayrome/ip.git to complete... -Feb 06, 2024 3:23:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lokidoki102/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lokidoki102/ip.git (master) completed! -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanguoyang/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanguoyang/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanguoyang/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanguoyang/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanguoyang/ip.git (master) completed! -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/myang2020/ip.git completed! -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator analyzeRepos -INFO: [65/430] Analyzing https://github.com/myang2020/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yleeyilin/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yleeyilin/ip.git (master) completed! +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/danielleloh/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/danielleloh/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [56/430] Analyzing https://github.com/leepoeaik/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/leepoeaik/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/leepoeaik/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/RunjiaChen/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/RunjiaChen/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/RunjiaChen/ip.git (master) completed! +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [57/430] Analyzing https://github.com/LimZiJia/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lokidoki102/ip.git completed! +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tanguoyang/ip.git completed! +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LimZiJia/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LimZiJia/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/cocoanautz/ip.git... -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/leepoeaik/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/cocoanautz/ip.git to complete... -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/marcus-ny/ip.git completed! -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/danielleloh/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kaitinghh/ip.git... -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator analyzeRepos -INFO: [66/430] Analyzing https://github.com/marcus-ny/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kaitinghh/ip.git to complete... -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/myang2020/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/myang2020/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/marcus-ny/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/marcus-ny/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/myang2020/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/myang2020/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/marcus-ny/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/myang2020/ip.git (master) completed! -Feb 06, 2024 3:23:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/marcus-ny/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/marcus-ny/ip.git (master) completed! -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jaejayrome/ip.git completed! -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator analyzeRepos -INFO: [67/430] Analyzing https://github.com/jaejayrome/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/leepoeaik/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/leepoeaik/ip.git (master) completed! +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [58/430] Analyzing https://github.com/thewongdylan/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/danielleloh/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/danielleloh/ip.git (master) completed! +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [59/430] Analyzing https://github.com/jerremyng/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/myang2020/ip.git completed! +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/1rbg/ip.git... -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/thewongdylan/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/thewongdylan/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jerremyng/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jerremyng/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/1rbg/ip.git to complete... -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jaejayrome/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jaejayrome/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kaitinghh/ip.git completed! -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator analyzeRepos -INFO: [68/430] Analyzing https://github.com/kaitinghh/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jaejayrome/ip.git completed! +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/benson1029/ip.git... -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/benson1029/ip.git to complete... -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/thewongdylan/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wallacexuhanxiao/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LimZiJia/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/thewongdylan/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/thewongdylan/ip.git (master) completed! +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [60/430] Analyzing https://github.com/marcus-ny/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wallacexuhanxiao/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wallacexuhanxiao/ip.git (master) completed! +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/marcus-ny/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/marcus-ny/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [61/430] Analyzing https://github.com/Ty-stan0417/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LimZiJia/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LimZiJia/ip.git (master) completed! +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [62/430] Analyzing https://github.com/wapisai/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kaitinghh/ip.git completed! +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/cocoanautz/ip.git completed! -Feb 06, 2024 3:23:04 PM reposense.report.ReportGenerator analyzeRepos -INFO: [69/430] Analyzing https://github.com/cocoanautz/ip.git (master)... -Feb 06, 2024 3:23:04 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wapisai/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wapisai/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Ty-stan0417/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Ty-stan0417/ip.git (master)... +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/CaptainKeqing/ip.git... -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kaitinghh/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kaitinghh/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/CaptainKeqing/ip.git to complete... -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/cocoanautz/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/cocoanautz/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kaitinghh/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kaitinghh/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kaitinghh/ip.git (master) completed! -Feb 06, 2024 3:23:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jaejayrome/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ljy0422/ip.git completed! -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator analyzeRepos -INFO: [70/430] Analyzing https://github.com/ljy0422/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cocoanautz/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yuechen2001/ip.git... -Feb 06, 2024 3:23:05 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/CaptainKeqing/ip.git to complete... +Feb 07, 2024 1:15:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yuechen2001/ip.git to complete... -Feb 06, 2024 3:23:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jaejayrome/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cocoanautz/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ljy0422/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ljy0422/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cocoanautz/ip.git (master) completed! -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jaejayrome/ip.git (master) completed! -Feb 06, 2024 3:23:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ljy0422/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ljy0422/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ljy0422/ip.git (master) completed! -Feb 06, 2024 3:23:05 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/1rbg/ip.git completed! -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator analyzeRepos -INFO: [71/430] Analyzing https://github.com/1rbg/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wang-xinrong/ip.git... -Feb 06, 2024 3:23:05 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wang-xinrong/ip.git to complete... -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/1rbg/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/1rbg/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jerremyng/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/benson1029/ip.git completed! -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator analyzeRepos -INFO: [72/430] Analyzing https://github.com/benson1029/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jiahui0309/ip.git... -Feb 06, 2024 3:23:05 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jiahui0309/ip.git to complete... -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/benson1029/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/benson1029/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yuechen2001/ip.git completed! -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator analyzeRepos -INFO: [73/430] Analyzing https://github.com/yuechen2001/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/TheodoreKooo/ip.git... -Feb 06, 2024 3:23:05 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/TheodoreKooo/ip.git to complete... -Feb 06, 2024 3:23:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/1rbg/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yuechen2001/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yuechen2001/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/1rbg/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/1rbg/ip.git (master) completed! -Feb 06, 2024 3:23:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/benson1029/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/benson1029/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/benson1029/ip.git (master) completed! -Feb 06, 2024 3:23:05 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wang-xinrong/ip.git completed! -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator analyzeRepos -INFO: [74/430] Analyzing https://github.com/wang-xinrong/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kokerinks/ip.git... -Feb 06, 2024 3:23:05 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kokerinks/ip.git to complete... -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wang-xinrong/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wang-xinrong/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yuechen2001/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yuechen2001/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yuechen2001/ip.git (master) completed! -Feb 06, 2024 3:23:05 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jerremyng/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jerremyng/ip.git (master) completed! +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [63/430] Analyzing https://github.com/kjw142857/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/marcus-ny/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/marcus-ny/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/marcus-ny/ip.git (master) completed! +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [64/430] Analyzing https://github.com/ljy0422/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kjw142857/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kjw142857/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ljy0422/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ljy0422/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Ty-stan0417/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wapisai/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Ty-stan0417/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Ty-stan0417/ip.git (master) completed! +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [65/430] Analyzing https://github.com/lokidoki102/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wapisai/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wapisai/ip.git (master) completed! +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [66/430] Analyzing https://github.com/tanguoyang/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lokidoki102/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lokidoki102/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanguoyang/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanguoyang/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yuechen2001/ip.git completed! +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/TheodoreKooo/ip.git... +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/CaptainKeqing/ip.git completed! +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/TheodoreKooo/ip.git to complete... +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kokerinks/ip.git... +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kokerinks/ip.git to complete... +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanguoyang/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanguoyang/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kjw142857/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanguoyang/ip.git (master) completed! +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [67/430] Analyzing https://github.com/myang2020/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kjw142857/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kjw142857/ip.git (master) completed! +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [68/430] Analyzing https://github.com/jaejayrome/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/myang2020/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/myang2020/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ljy0422/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jaejayrome/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jaejayrome/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ljy0422/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ljy0422/ip.git (master) completed! +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [69/430] Analyzing https://github.com/cocoanautz/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/cocoanautz/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/cocoanautz/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jiahui0309/ip.git completed! -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator analyzeRepos -INFO: [75/430] Analyzing https://github.com/jiahui0309/ip.git (master)... -Feb 06, 2024 3:23:05 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wang-xinrong/ip.git completed! +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Ella-e/ip.git... -Feb 06, 2024 3:23:05 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Ella-e/ip.git to complete... -Feb 06, 2024 3:23:05 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jiahui0309/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jiahui0309/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/TheodoreKooo/ip.git completed! -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator analyzeRepos -INFO: [76/430] Analyzing https://github.com/TheodoreKooo/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ForAeons/ip.git... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ForAeons/ip.git to complete... -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/TheodoreKooo/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/TheodoreKooo/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wang-xinrong/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wang-xinrong/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wang-xinrong/ip.git (master) completed! -Feb 06, 2024 3:23:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jiahui0309/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jiahui0309/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jiahui0309/ip.git (master) completed! -Feb 06, 2024 3:23:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/TheodoreKooo/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/TheodoreKooo/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/TheodoreKooo/ip.git (master) completed! -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/myang2020/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/myang2020/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/myang2020/ip.git (master) completed! +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [70/430] Analyzing https://github.com/kaitinghh/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kaitinghh/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kaitinghh/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kokerinks/ip.git completed! -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator analyzeRepos -INFO: [77/430] Analyzing https://github.com/kokerinks/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/solomonng2001/ip.git... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/solomonng2001/ip.git to complete... -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kokerinks/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kokerinks/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Ella-e/ip.git completed! -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator analyzeRepos -INFO: [78/430] Analyzing https://github.com/Ella-e/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lokidoki102/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/TheodoreKooo/ip.git completed! +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Xuyan0518/ip.git... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cocoanautz/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lokidoki102/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Xuyan0518/ip.git to complete... -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Ella-e/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Ella-e/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kokerinks/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kokerinks/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/CaptainKeqing/ip.git completed! -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kokerinks/ip.git (master) completed! -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator analyzeRepos -INFO: [79/430] Analyzing https://github.com/CaptainKeqing/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lokidoki102/ip.git (master) completed! +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [71/430] Analyzing https://github.com/1rbg/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cocoanautz/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cocoanautz/ip.git (master) completed! +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [72/430] Analyzing https://github.com/benson1029/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jaejayrome/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/1rbg/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/1rbg/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/benson1029/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/benson1029/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jaejayrome/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jaejayrome/ip.git (master) completed! +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [73/430] Analyzing https://github.com/yuechen2001/ip.git (master)... +Feb 07, 2024 1:15:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yuechen2001/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yuechen2001/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Ella-e/ip.git completed! +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/justinlengch/ip.git... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/justinlengch/ip.git to complete... -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/CaptainKeqing/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/CaptainKeqing/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ForAeons/ip.git completed! -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kaitinghh/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/justinlengch/ip.git to complete... +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jjchee77/ip.git... -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator analyzeRepos -INFO: [80/430] Analyzing https://github.com/ForAeons/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jjchee77/ip.git to complete... -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ForAeons/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ForAeons/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Ella-e/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kaitinghh/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kaitinghh/ip.git (master) completed! +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [74/430] Analyzing https://github.com/CaptainKeqing/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/CaptainKeqing/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/CaptainKeqing/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/solomonng2001/ip.git completed! -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator analyzeRepos -INFO: [81/430] Analyzing https://github.com/solomonng2001/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ronnnnnnnnn/ip.git... -Feb 06, 2024 3:23:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Ella-e/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ronnnnnnnnn/ip.git to complete... -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Ella-e/ip.git (master) completed! -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/solomonng2001/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/solomonng2001/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Xuyan0518/ip.git completed! -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dayn-1/ip.git... -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator analyzeRepos -INFO: [82/430] Analyzing https://github.com/Xuyan0518/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dayn-1/ip.git to complete... -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Xuyan0518/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Xuyan0518/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/CaptainKeqing/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/CaptainKeqing/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/CaptainKeqing/ip.git (master) completed! -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/benson1029/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yuechen2001/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/1rbg/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yuechen2001/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yuechen2001/ip.git (master) completed! +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [75/430] Analyzing https://github.com/jiahui0309/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/benson1029/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/benson1029/ip.git (master) completed! +Feb 07, 2024 1:15:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/1rbg/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [76/430] Analyzing https://github.com/wang-xinrong/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/1rbg/ip.git (master) completed! +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [77/430] Analyzing https://github.com/kokerinks/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jiahui0309/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jiahui0309/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wang-xinrong/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wang-xinrong/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kokerinks/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kokerinks/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/justinlengch/ip.git completed! -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator analyzeRepos -INFO: [83/430] Analyzing https://github.com/justinlengch/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/NeoHW/ip.git... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jjchee77/ip.git completed! -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/NeoHW/ip.git to complete... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tituschewxj/ip.git... -Feb 06, 2024 3:23:06 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/justinlengch/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:06 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/justinlengch/ip.git (master)... -Feb 06, 2024 3:23:06 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/NeoHW/ip.git to complete... +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tituschewxj/ip.git to complete... -Feb 06, 2024 3:23:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ronnnnnnnnn/ip.git completed! +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/choowengyan/ip.git... +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/choowengyan/ip.git to complete... +Feb 07, 2024 1:15:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/CaptainKeqing/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/CaptainKeqing/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dayn-1/ip.git completed! +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/CaptainKeqing/ip.git (master) completed! +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [78/430] Analyzing https://github.com/TheodoreKooo/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/guanquann/ip.git... +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/guanquann/ip.git to complete... +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/TheodoreKooo/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/TheodoreKooo/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jiahui0309/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jiahui0309/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jiahui0309/ip.git (master) completed! +Feb 07, 2024 1:15:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wang-xinrong/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [79/430] Analyzing https://github.com/Ella-e/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wang-xinrong/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wang-xinrong/ip.git (master) completed! +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [80/430] Analyzing https://github.com/ForAeons/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Ella-e/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Ella-e/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kokerinks/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/NeoHW/ip.git completed! +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Hibeom0929/ip.git... +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Hibeom0929/ip.git to complete... +Feb 07, 2024 1:15:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kokerinks/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kokerinks/ip.git (master) completed! +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ForAeons/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ForAeons/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [81/430] Analyzing https://github.com/solomonng2001/ip.git (master)... +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tituschewxj/ip.git completed! +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JukeBoxK/ip.git... +Feb 07, 2024 1:15:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JukeBoxK/ip.git to complete... +Feb 07, 2024 1:15:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/solomonng2001/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/solomonng2001/ip.git (master)... +Feb 07, 2024 1:15:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/TheodoreKooo/ip.git (master)... +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/choowengyan/ip.git completed! +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lynnetteeee/ip.git... +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lynnetteeee/ip.git to complete... +Feb 07, 2024 1:15:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/TheodoreKooo/ip.git (master)... +Feb 07, 2024 1:15:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/TheodoreKooo/ip.git (master) completed! +Feb 07, 2024 1:15:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [82/430] Analyzing https://github.com/Xuyan0518/ip.git (master)... +Feb 07, 2024 1:15:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Xuyan0518/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Xuyan0518/ip.git (master)... +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/guanquann/ip.git completed! +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tamagochuuu/ip.git... +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tamagochuuu/ip.git to complete... +Feb 07, 2024 1:15:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Ella-e/ip.git (master)... +Feb 07, 2024 1:15:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Ella-e/ip.git (master)... +Feb 07, 2024 1:15:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Ella-e/ip.git (master) completed! +Feb 07, 2024 1:15:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [83/430] Analyzing https://github.com/justinlengch/ip.git (master)... +Feb 07, 2024 1:15:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Xuyan0518/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JukeBoxK/ip.git completed! +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/owenong1/ip.git... +Feb 07, 2024 1:15:54 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/justinlengch/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/justinlengch/ip.git (master)... +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Hibeom0929/ip.git completed! +Feb 07, 2024 1:15:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Xuyan0518/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/willowisp01/ip.git... +Feb 07, 2024 1:15:54 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Xuyan0518/ip.git (master) completed! -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:54 AM reposense.report.ReportGenerator analyzeRepos INFO: [84/430] Analyzing https://github.com/jjchee77/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/owenong1/ip.git to complete... +Feb 07, 2024 1:15:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/solomonng2001/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/willowisp01/ip.git to complete... +Feb 07, 2024 1:15:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jjchee77/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jjchee77/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/justinlengch/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lynnetteeee/ip.git completed! +Feb 07, 2024 1:15:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/solomonng2001/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:54 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/solomonng2001/ip.git (master) completed! -Feb 06, 2024 3:23:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/justinlengch/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/justinlengch/ip.git (master) completed! -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ronnnnnnnnn/ip.git completed! -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:54 AM reposense.report.ReportGenerator analyzeRepos INFO: [85/430] Analyzing https://github.com/ronnnnnnnnn/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/choowengyan/ip.git... -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/choowengyan/ip.git to complete... -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/HongRay/ip.git... +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/HongRay/ip.git to complete... +Feb 07, 2024 1:15:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ronnnnnnnnn/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dayn-1/ip.git completed! -Feb 06, 2024 3:23:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ronnnnnnnnn/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tamagochuuu/ip.git completed! +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Wyrkx/ip.git... +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Wyrkx/ip.git to complete... +Feb 07, 2024 1:15:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/justinlengch/ip.git (master)... +Feb 07, 2024 1:15:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/justinlengch/ip.git (master)... +Feb 07, 2024 1:15:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/justinlengch/ip.git (master) completed! +Feb 07, 2024 1:15:54 AM reposense.report.ReportGenerator analyzeRepos INFO: [86/430] Analyzing https://github.com/dayn-1/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/guanquann/ip.git... -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/guanquann/ip.git to complete... -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/dayn-1/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/dayn-1/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tituschewxj/ip.git completed! -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/NeoHW/ip.git completed! -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Hibeom0929/ip.git... -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JukeBoxK/ip.git... -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Hibeom0929/ip.git to complete... -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JukeBoxK/ip.git to complete... -Feb 06, 2024 3:23:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/owenong1/ip.git completed! +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Benson15912/ip.git... +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Benson15912/ip.git to complete... +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/willowisp01/ip.git completed! +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kailinteoo/ip.git... +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kailinteoo/ip.git to complete... +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/HongRay/ip.git completed! +Feb 07, 2024 1:15:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ForAeons/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Alteqa/ip.git... +Feb 07, 2024 1:15:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Alteqa/ip.git to complete... +Feb 07, 2024 1:15:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ronnnnnnnnn/ip.git (master)... +Feb 07, 2024 1:15:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ronnnnnnnnn/ip.git (master)... +Feb 07, 2024 1:15:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ronnnnnnnnn/ip.git (master) completed! +Feb 07, 2024 1:15:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ForAeons/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [87/430] Analyzing https://github.com/NeoHW/ip.git (master)... +Feb 07, 2024 1:15:54 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ForAeons/ip.git (master) completed! -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator analyzeRepos -INFO: [87/430] Analyzing https://github.com/tituschewxj/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/choowengyan/ip.git completed! -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [88/430] Analyzing https://github.com/tituschewxj/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jjchee77/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tituschewxj/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tituschewxj/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lynnetteeee/ip.git... -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lynnetteeee/ip.git to complete... -Feb 06, 2024 3:23:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jjchee77/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ronnnnnnnnn/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/NeoHW/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/NeoHW/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Wyrkx/ip.git completed! +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/MaYuehan/ip.git... +Feb 07, 2024 1:15:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/dayn-1/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/MaYuehan/ip.git to complete... +Feb 07, 2024 1:15:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jjchee77/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ronnnnnnnnn/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ronnnnnnnnn/ip.git (master) completed! -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator analyzeRepos -INFO: [88/430] Analyzing https://github.com/NeoHW/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jjchee77/ip.git (master) completed! -Feb 06, 2024 3:23:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dayn-1/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator analyzeRepos INFO: [89/430] Analyzing https://github.com/choowengyan/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dayn-1/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/dayn-1/ip.git (master) completed! -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/choowengyan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/choowengyan/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/NeoHW/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/NeoHW/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [90/430] Analyzing https://github.com/guanquann/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/guanquann/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/guanquann/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/choowengyan/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Benson15912/ip.git completed! +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/zhenghuil/ip.git... +Feb 07, 2024 1:15:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/choowengyan/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/zhenghuil/ip.git to complete... +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/choowengyan/ip.git (master) completed! -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Hibeom0929/ip.git completed! -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator analyzeRepos -INFO: [90/430] Analyzing https://github.com/Hibeom0929/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tamagochuuu/ip.git... -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tamagochuuu/ip.git to complete... -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JukeBoxK/ip.git completed! -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Hibeom0929/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Hibeom0929/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator analyzeRepos INFO: [91/430] Analyzing https://github.com/JukeBoxK/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/owenong1/ip.git... -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/owenong1/ip.git to complete... -Feb 06, 2024 3:23:07 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JukeBoxK/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:07 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JukeBoxK/ip.git (master)... -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lynnetteeee/ip.git completed! -Feb 06, 2024 3:23:07 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/willowisp01/ip.git... -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/willowisp01/ip.git to complete... -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Hibeom0929/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Hibeom0929/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Hibeom0929/ip.git (master) completed! -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepos -INFO: [92/430] Analyzing https://github.com/lynnetteeee/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/lynnetteeee/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/lynnetteeee/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tituschewxj/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kailinteoo/ip.git completed! +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sarjinius/ip.git... +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sarjinius/ip.git to complete... +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Alteqa/ip.git completed! +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/appleraincoat/ip.git... +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/appleraincoat/ip.git to complete... +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/MaYuehan/ip.git completed! +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/reetmitra/ip.git... +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/reetmitra/ip.git to complete... +Feb 07, 2024 1:15:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/guanquann/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/guanquann/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/guanquann/ip.git (master) completed! +Feb 07, 2024 1:15:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/NeoHW/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tituschewxj/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/lynnetteeee/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tituschewxj/ip.git (master) completed! -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/guanquann/ip.git completed! -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lynnetteeee/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lynnetteeee/ip.git (master) completed! -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/HongRay/ip.git... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepos -INFO: [93/430] Analyzing https://github.com/guanquann/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/HongRay/ip.git to complete... -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/NeoHW/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [92/430] Analyzing https://github.com/Hibeom0929/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zhenghuil/ip.git completed! +Feb 07, 2024 1:15:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/JukeBoxK/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tamagochuuu/ip.git completed! -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Wyrkx/ip.git... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/taeewonnn/ip.git... +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Hibeom0929/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Hibeom0929/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/taeewonnn/ip.git to complete... +Feb 07, 2024 1:15:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/NeoHW/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/NeoHW/ip.git (master) completed! -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepos -INFO: [94/430] Analyzing https://github.com/tamagochuuu/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/guanquann/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Wyrkx/ip.git to complete... -Feb 06, 2024 3:23:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/guanquann/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/JukeBoxK/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tamagochuuu/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tamagochuuu/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [93/430] Analyzing https://github.com/lynnetteeee/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/JukeBoxK/ip.git (master) completed! -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/owenong1/ip.git completed! -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Benson15912/ip.git... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tituschewxj/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [94/430] Analyzing https://github.com/tamagochuuu/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/lynnetteeee/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/lynnetteeee/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tituschewxj/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tituschewxj/ip.git (master) completed! +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator analyzeRepos INFO: [95/430] Analyzing https://github.com/owenong1/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Benson15912/ip.git to complete... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sarjinius/ip.git completed! +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tamagochuuu/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tamagochuuu/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/appleraincoat/ip.git completed! +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jamessinmaojun/ip.git... +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/H4mes/ip.git... +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/owenong1/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/owenong1/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/willowisp01/ip.git completed! -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/H4mes/ip.git to complete... +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jamessinmaojun/ip.git to complete... +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/reetmitra/ip.git completed! +Feb 07, 2024 1:15:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Hibeom0929/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ChocoRagdoll/ip.git... +Feb 07, 2024 1:15:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChocoRagdoll/ip.git to complete... +Feb 07, 2024 1:15:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Hibeom0929/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Hibeom0929/ip.git (master) completed! +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator analyzeRepos INFO: [96/430] Analyzing https://github.com/willowisp01/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kailinteoo/ip.git... -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kailinteoo/ip.git to complete... -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tamagochuuu/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/lynnetteeee/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lynnetteeee/ip.git (master)... +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lynnetteeee/ip.git (master) completed! +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/willowisp01/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/willowisp01/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tamagochuuu/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tamagochuuu/ip.git (master) completed! -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/owenong1/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/guanquann/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/owenong1/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/owenong1/ip.git (master) completed! -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/guanquann/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/guanquann/ip.git (master) completed! -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/HongRay/ip.git completed! -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator analyzeRepos INFO: [97/430] Analyzing https://github.com/HongRay/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Alteqa/ip.git... -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Alteqa/ip.git to complete... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/HongRay/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/HongRay/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/willowisp01/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Wyrkx/ip.git completed! -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/willowisp01/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/willowisp01/ip.git (master) completed! -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tamagochuuu/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/taeewonnn/ip.git completed! +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tamagochuuu/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ondretann/ip.git... +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tamagochuuu/ip.git (master) completed! +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepos INFO: [98/430] Analyzing https://github.com/Wyrkx/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/MaYuehan/ip.git... -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/MaYuehan/ip.git to complete... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ondretann/ip.git to complete... +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/owenong1/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Wyrkx/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Wyrkx/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/owenong1/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/owenong1/ip.git (master) completed! +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [99/430] Analyzing https://github.com/Benson15912/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Benson15912/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Benson15912/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Wyrkx/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kailinteoo/ip.git completed! -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Benson15912/ip.git completed! -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/zhenghuil/ip.git... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepos -INFO: [99/430] Analyzing https://github.com/kailinteoo/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sarjinius/ip.git... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepos -INFO: [100/430] Analyzing https://github.com/Benson15912/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sarjinius/ip.git to complete... -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Wyrkx/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/zhenghuil/ip.git to complete... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Wyrkx/ip.git (master) completed! -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Benson15912/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Benson15912/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [100/430] Analyzing https://github.com/kailinteoo/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/HongRay/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/willowisp01/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/H4mes/ip.git completed! +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ashleygoh1/ip.git... +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/HongRay/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kailinteoo/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:08 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kailinteoo/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/HongRay/ip.git (master)... -Feb 06, 2024 3:23:08 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/HongRay/ip.git (master) completed! -Feb 06, 2024 3:23:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kailinteoo/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kailinteoo/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kailinteoo/ip.git (master) completed! -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Alteqa/ip.git completed! -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jamessinmaojun/ip.git completed! +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepos INFO: [101/430] Analyzing https://github.com/Alteqa/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/appleraincoat/ip.git... -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/appleraincoat/ip.git to complete... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ashleygoh1/ip.git to complete... +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ChocoRagdoll/ip.git completed! +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/justincred/ip.git... +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/willowisp01/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/willowisp01/ip.git (master) completed! +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JerryWang0000/ip.git... +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [102/430] Analyzing https://github.com/MaYuehan/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/justincred/ip.git to complete... +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Alteqa/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Alteqa/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Benson15912/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Benson15912/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Benson15912/ip.git (master) completed! -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/MaYuehan/ip.git completed! -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator analyzeRepos -INFO: [102/430] Analyzing https://github.com/MaYuehan/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/reetmitra/ip.git... -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/reetmitra/ip.git to complete... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/MaYuehan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/MaYuehan/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sarjinius/ip.git completed! -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zhenghuil/ip.git completed! -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/taeewonnn/ip.git... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JerryWang0000/ip.git to complete... +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ondretann/ip.git completed! +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/julia-cp/ip.git... +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/julia-cp/ip.git to complete... +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kailinteoo/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kailinteoo/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kailinteoo/ip.git (master) completed! +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepos INFO: [103/430] Analyzing https://github.com/zhenghuil/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator analyzeRepos -INFO: [104/430] Analyzing https://github.com/sarjinius/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jamessinmaojun/ip.git... -Feb 06, 2024 3:23:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Alteqa/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/taeewonnn/ip.git to complete... -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jamessinmaojun/ip.git to complete... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sarjinius/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sarjinius/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Alteqa/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zhenghuil/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zhenghuil/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Alteqa/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/justincred/ip.git completed! +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JerryWang0000/ip.git completed! +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Tanzhiheng26/ip.git... +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Alteqa/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/BryanL2303/ip.git... +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Alteqa/ip.git (master) completed! -Feb 06, 2024 3:23:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sarjinius/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sarjinius/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sarjinius/ip.git (master) completed! -Feb 06, 2024 3:23:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [104/430] Analyzing https://github.com/appleraincoat/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Tanzhiheng26/ip.git to complete... +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/BryanL2303/ip.git to complete... +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Benson15912/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/appleraincoat/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/appleraincoat/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ashleygoh1/ip.git completed! +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sethteo/ip.git... +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sethteo/ip.git to complete... +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Benson15912/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Benson15912/ip.git (master) completed! +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [105/430] Analyzing https://github.com/sarjinius/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/julia-cp/ip.git completed! +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zhenghuil/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sarjinius/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sarjinius/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Joelwang22/ip.git... +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zhenghuil/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zhenghuil/ip.git (master) completed! -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/appleraincoat/ip.git completed! -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator analyzeRepos -INFO: [105/430] Analyzing https://github.com/appleraincoat/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/H4mes/ip.git... -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/H4mes/ip.git to complete... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/appleraincoat/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/appleraincoat/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/MaYuehan/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/MaYuehan/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/MaYuehan/ip.git (master) completed! -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/reetmitra/ip.git completed! -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ChocoRagdoll/ip.git... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:15:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Joelwang22/ip.git to complete... +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepos INFO: [106/430] Analyzing https://github.com/reetmitra/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChocoRagdoll/ip.git to complete... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/reetmitra/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/reetmitra/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sarjinius/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/MaYuehan/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sarjinius/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sarjinius/ip.git (master) completed! +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [107/430] Analyzing https://github.com/taeewonnn/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/MaYuehan/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/MaYuehan/ip.git (master) completed! +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/taeewonnn/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/taeewonnn/ip.git (master)... +Feb 07, 2024 1:15:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [108/430] Analyzing https://github.com/H4mes/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/H4mes/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/H4mes/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/appleraincoat/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jamessinmaojun/ip.git completed! -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/taeewonnn/ip.git completed! -Feb 06, 2024 3:23:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/appleraincoat/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator analyzeRepos -INFO: [107/430] Analyzing https://github.com/jamessinmaojun/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ondretann/ip.git... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/appleraincoat/ip.git (master) completed! -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator analyzeRepos -INFO: [108/430] Analyzing https://github.com/taeewonnn/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ashleygoh1/ip.git... -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ondretann/ip.git to complete... -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ashleygoh1/ip.git to complete... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [109/430] Analyzing https://github.com/jamessinmaojun/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/reetmitra/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/H4mes/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jamessinmaojun/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jamessinmaojun/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/taeewonnn/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/taeewonnn/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/reetmitra/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Tanzhiheng26/ip.git completed! +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ibnu2651/ip.git... +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/reetmitra/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/reetmitra/ip.git (master) completed! -Feb 06, 2024 3:23:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/taeewonnn/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/H4mes/ip.git completed! -Feb 06, 2024 3:23:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/taeewonnn/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator analyzeRepos -INFO: [109/430] Analyzing https://github.com/H4mes/ip.git (master)... -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/justincred/ip.git... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/taeewonnn/ip.git (master) completed! -Feb 06, 2024 3:23:09 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/justincred/ip.git to complete... -Feb 06, 2024 3:23:09 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/H4mes/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/H4mes/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/H4mes/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ibnu2651/ip.git to complete... +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [110/430] Analyzing https://github.com/ChocoRagdoll/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/H4mes/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/H4mes/ip.git (master) completed! -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ChocoRagdoll/ip.git completed! -Feb 06, 2024 3:23:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jamessinmaojun/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator analyzeRepos -INFO: [110/430] Analyzing https://github.com/ChocoRagdoll/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JerryWang0000/ip.git... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JerryWang0000/ip.git to complete... -Feb 06, 2024 3:23:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jamessinmaojun/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ashleygoh1/ip.git completed! -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jamessinmaojun/ip.git (master) completed! -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/BryanL2303/ip.git completed! +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [111/430] Analyzing https://github.com/ondretann/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/SimKianSeng/ip.git... +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SimKianSeng/ip.git to complete... +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChocoRagdoll/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChocoRagdoll/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator analyzeRepos -INFO: [111/430] Analyzing https://github.com/ashleygoh1/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/julia-cp/ip.git... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/julia-cp/ip.git to complete... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ondretann/ip.git completed! -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Tanzhiheng26/ip.git... -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator analyzeRepos -INFO: [112/430] Analyzing https://github.com/ondretann/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ashleygoh1/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ashleygoh1/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Tanzhiheng26/ip.git to complete... -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sethteo/ip.git completed! +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ondretann/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ondretann/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/justincred/ip.git completed! -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator analyzeRepos -INFO: [113/430] Analyzing https://github.com/justincred/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/BryanL2303/ip.git... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/BryanL2303/ip.git to complete... -Feb 06, 2024 3:23:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ChocoRagdoll/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ondretann/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/justincred/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/guohuang88/ip.git... +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/guohuang88/ip.git to complete... +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/taeewonnn/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/taeewonnn/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/taeewonnn/ip.git (master) completed! +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Joelwang22/ip.git completed! +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [112/430] Analyzing https://github.com/justincred/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/rizkidelta/ip.git... +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/rizkidelta/ip.git to complete... +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/justincred/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/justincred/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ondretann/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ondretann/ip.git (master) completed! -Feb 06, 2024 3:23:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ChocoRagdoll/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ChocoRagdoll/ip.git (master) completed! -Feb 06, 2024 3:23:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ashleygoh1/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/justincred/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ashleygoh1/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JerryWang0000/ip.git completed! -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ashleygoh1/ip.git (master) completed! -Feb 06, 2024 3:23:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/justincred/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/justincred/ip.git (master) completed! -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator analyzeRepos -INFO: [114/430] Analyzing https://github.com/JerryWang0000/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sethteo/ip.git... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sethteo/ip.git to complete... -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ondretann/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [113/430] Analyzing https://github.com/JerryWang0000/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JerryWang0000/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JerryWang0000/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Tanzhiheng26/ip.git completed! -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator analyzeRepos -INFO: [115/430] Analyzing https://github.com/Tanzhiheng26/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Joelwang22/ip.git... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Joelwang22/ip.git to complete... -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Tanzhiheng26/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Tanzhiheng26/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JerryWang0000/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JerryWang0000/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JerryWang0000/ip.git (master) completed! -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/BryanL2303/ip.git completed! -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator analyzeRepos -INFO: [116/430] Analyzing https://github.com/BryanL2303/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ibnu2651/ip.git... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ibnu2651/ip.git to complete... -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/BryanL2303/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/BryanL2303/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Tanzhiheng26/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Tanzhiheng26/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Tanzhiheng26/ip.git (master) completed! -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sethteo/ip.git completed! -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator analyzeRepos -INFO: [117/430] Analyzing https://github.com/sethteo/ip.git (master)... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/SimKianSeng/ip.git... -Feb 06, 2024 3:23:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SimKianSeng/ip.git to complete... -Feb 06, 2024 3:23:10 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sethteo/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sethteo/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/BryanL2303/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Joelwang22/ip.git completed! -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator analyzeRepos -INFO: [118/430] Analyzing https://github.com/Joelwang22/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/guohuang88/ip.git... -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/guohuang88/ip.git to complete... -Feb 06, 2024 3:23:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/BryanL2303/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Joelwang22/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Joelwang22/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/BryanL2303/ip.git (master) completed! -Feb 06, 2024 3:23:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sethteo/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ondretann/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ondretann/ip.git (master) completed! +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [114/430] Analyzing https://github.com/ashleygoh1/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ChocoRagdoll/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ashleygoh1/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ashleygoh1/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ibnu2651/ip.git completed! -Feb 06, 2024 3:23:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sethteo/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/rizkidelta/ip.git... -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator analyzeRepos -INFO: [119/430] Analyzing https://github.com/ibnu2651/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sethteo/ip.git (master) completed! -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/rizkidelta/ip.git to complete... -Feb 06, 2024 3:23:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Joelwang22/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ibnu2651/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ibnu2651/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Joelwang22/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Joelwang22/ip.git (master) completed! -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SimKianSeng/ip.git completed! -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator analyzeRepos -INFO: [120/430] Analyzing https://github.com/SimKianSeng/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ChocoRagdoll/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ChocoRagdoll/ip.git (master) completed! +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Murugan-Maniish/ip.git... -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/julia-cp/ip.git completed! -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [115/430] Analyzing https://github.com/julia-cp/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SimKianSeng/ip.git completed! +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Murugan-Maniish/ip.git to complete... -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AjayArvind2207/ip.git... -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator analyzeRepos -INFO: [121/430] Analyzing https://github.com/julia-cp/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AjayArvind2207/ip.git to complete... -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SimKianSeng/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SimKianSeng/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/julia-cp/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/julia-cp/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ibnu2651/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AjayArvind2207/ip.git to complete... +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jamessinmaojun/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/guohuang88/ip.git completed! -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator analyzeRepos -INFO: [122/430] Analyzing https://github.com/guohuang88/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Teee728/ip.git... -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jamessinmaojun/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jamessinmaojun/ip.git (master) completed! +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [116/430] Analyzing https://github.com/Tanzhiheng26/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Teee728/ip.git to complete... -Feb 06, 2024 3:23:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ibnu2651/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ibnu2651/ip.git (master) completed! -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/guohuang88/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/guohuang88/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/julia-cp/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/julia-cp/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/julia-cp/ip.git (master) completed! -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/rizkidelta/ip.git completed! -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator analyzeRepos -INFO: [123/430] Analyzing https://github.com/rizkidelta/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JerryWang0000/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dillontkh/ip.git... -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/dillontkh/ip.git to complete... -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/rizkidelta/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/rizkidelta/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SimKianSeng/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SimKianSeng/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SimKianSeng/ip.git (master) completed! -Feb 06, 2024 3:23:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/rizkidelta/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/guohuang88/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/rizkidelta/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/rizkidelta/ip.git (master) completed! -Feb 06, 2024 3:23:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/guohuang88/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/guohuang88/ip.git (master) completed! -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JerryWang0000/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JerryWang0000/ip.git (master) completed! +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [117/430] Analyzing https://github.com/BryanL2303/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Tanzhiheng26/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Tanzhiheng26/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/BryanL2303/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/BryanL2303/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/julia-cp/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/julia-cp/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/julia-cp/ip.git (master) completed! +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [118/430] Analyzing https://github.com/sethteo/ip.git (master)... +Feb 07, 2024 1:15:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sethteo/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sethteo/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Tanzhiheng26/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Tanzhiheng26/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Tanzhiheng26/ip.git (master) completed! +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ashleygoh1/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [119/430] Analyzing https://github.com/Joelwang22/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AjayArvind2207/ip.git completed! -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator analyzeRepos -INFO: [124/430] Analyzing https://github.com/AjayArvind2207/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Murugan-Maniish/ip.git completed! +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shaunlxw/ip.git... -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ashleygoh1/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/shaunlxw/ip.git to complete... -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AjayArvind2207/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AjayArvind2207/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/dillontkh/ip.git completed! +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Teee728/ip.git completed! -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator analyzeRepos -INFO: [125/430] Analyzing https://github.com/Teee728/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Morninggloryyy/ip.git... -Feb 06, 2024 3:23:11 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ashleygoh1/ip.git (master) completed! +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jmsandiegoo/ip.git... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [120/430] Analyzing https://github.com/ibnu2651/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Joelwang22/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Joelwang22/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jmsandiegoo/ip.git to complete... +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Morninggloryyy/ip.git to complete... -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Teee728/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:11 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Teee728/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AjayArvind2207/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AjayArvind2207/ip.git (master)... -Feb 06, 2024 3:23:11 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AjayArvind2207/ip.git (master) completed! -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ryanlimdx/ip.git... +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ryanlimdx/ip.git to complete... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ibnu2651/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ibnu2651/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/BryanL2303/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/BryanL2303/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/BryanL2303/ip.git (master) completed! +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [121/430] Analyzing https://github.com/SimKianSeng/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sethteo/ip.git (master)... +Feb 07, 2024 1:15:58 AM 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'... @@ -2336,435 +2280,457 @@ 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) -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jmsandiegoo/ip.git... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jmsandiegoo/ip.git to complete... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/dillontkh/ip.git completed! -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator analyzeRepos -INFO: [126/430] Analyzing https://github.com/dillontkh/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ryanlimdx/ip.git... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ryanlimdx/ip.git to complete... -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dillontkh/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dillontkh/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Teee728/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Teee728/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Teee728/ip.git (master) completed! -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shaunlxw/ip.git completed! -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator analyzeRepos -INFO: [127/430] Analyzing https://github.com/shaunlxw/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chiralcentre/ip.git... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SimKianSeng/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SimKianSeng/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chiralcentre/ip.git to complete... -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shaunlxw/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shaunlxw/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Murugan-Maniish/ip.git completed! -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator analyzeRepos -INFO: [128/430] Analyzing https://github.com/Murugan-Maniish/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sethteo/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sethteo/ip.git (master) completed! +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [122/430] Analyzing https://github.com/guohuang88/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/guohuang88/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/guohuang88/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Joelwang22/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Joelwang22/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Joelwang22/ip.git (master) completed! +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [123/430] Analyzing https://github.com/rizkidelta/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/rizkidelta/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/rizkidelta/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shaunlxw/ip.git completed! +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ibnu2651/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jmsandiegoo/ip.git completed! +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/KhoonSun47/ip.git... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ThatGirlJam/ip.git... +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ThatGirlJam/ip.git to complete... +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/KhoonSun47/ip.git to complete... -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ibnu2651/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ibnu2651/ip.git (master) completed! +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [124/430] Analyzing https://github.com/AjayArvind2207/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SimKianSeng/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AjayArvind2207/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AjayArvind2207/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SimKianSeng/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ryanlimdx/ip.git completed! +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SimKianSeng/ip.git (master) completed! +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [125/430] Analyzing https://github.com/Murugan-Maniish/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/0liverkong/ip.git... +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/0liverkong/ip.git to complete... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Murugan-Maniish/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:15:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Murugan-Maniish/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dillontkh/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dillontkh/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dillontkh/ip.git (master) completed! -Feb 06, 2024 3:23:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shaunlxw/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jmsandiegoo/ip.git completed! -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator analyzeRepos -INFO: [129/430] Analyzing https://github.com/jmsandiegoo/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ThatGirlJam/ip.git... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ThatGirlJam/ip.git to complete... -Feb 06, 2024 3:23:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shaunlxw/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shaunlxw/ip.git (master) completed! -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jmsandiegoo/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jmsandiegoo/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/rizkidelta/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/rizkidelta/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/rizkidelta/ip.git (master) completed! +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chiralcentre/ip.git completed! +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [126/430] Analyzing https://github.com/dillontkh/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/xuelinglow/ip.git... +Feb 07, 2024 1:15:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/xuelinglow/ip.git to complete... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dillontkh/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dillontkh/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/guohuang88/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AjayArvind2207/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/guohuang88/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/guohuang88/ip.git (master) completed! +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AjayArvind2207/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AjayArvind2207/ip.git (master) completed! +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [127/430] Analyzing https://github.com/Teee728/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [128/430] Analyzing https://github.com/shaunlxw/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Teee728/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Teee728/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shaunlxw/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shaunlxw/ip.git (master)... +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Murugan-Maniish/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:15:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Murugan-Maniish/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Murugan-Maniish/ip.git (master) completed! -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chiralcentre/ip.git completed! -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/0liverkong/ip.git... -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator analyzeRepos -INFO: [130/430] Analyzing https://github.com/chiralcentre/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/0liverkong/ip.git to complete... -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chiralcentre/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chiralcentre/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jmsandiegoo/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jmsandiegoo/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jmsandiegoo/ip.git (master) completed! -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [129/430] Analyzing https://github.com/jmsandiegoo/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jmsandiegoo/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jmsandiegoo/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/KhoonSun47/ip.git completed! -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator analyzeRepos -INFO: [131/430] Analyzing https://github.com/KhoonSun47/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/xuelinglow/ip.git... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/xuelinglow/ip.git to complete... -Feb 06, 2024 3:23:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chiralcentre/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/KhoonSun47/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/KhoonSun47/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chiralcentre/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chiralcentre/ip.git (master) completed! -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ryanlimdx/ip.git completed! -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ThatGirlJam/ip.git completed! +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yashpola/ip.git... -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator analyzeRepos -INFO: [132/430] Analyzing https://github.com/ryanlimdx/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yashpola/ip.git to complete... -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ryanlimdx/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ryanlimdx/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ThatGirlJam/ip.git completed! -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator analyzeRepos -INFO: [133/430] Analyzing https://github.com/ThatGirlJam/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/breezetall/ip.git... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/breezetall/ip.git to complete... -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ThatGirlJam/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:12 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ThatGirlJam/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/0liverkong/ip.git completed! -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/breezetall/ip.git to complete... +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JiaXinEu/ip.git... -Feb 06, 2024 3:23:12 PM reposense.report.ReportGenerator analyzeRepos -INFO: [134/430] Analyzing https://github.com/0liverkong/ip.git (master)... -Feb 06, 2024 3:23:12 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JiaXinEu/ip.git to complete... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/0liverkong/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/0liverkong/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/KhoonSun47/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ryanlimdx/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/KhoonSun47/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/KhoonSun47/ip.git (master) completed! -Feb 06, 2024 3:23:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ryanlimdx/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ryanlimdx/ip.git (master) completed! -Feb 06, 2024 3:23:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ThatGirlJam/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ThatGirlJam/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ThatGirlJam/ip.git (master) completed! -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/xuelinglow/ip.git completed! -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yisiox/ip.git... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator analyzeRepos -INFO: [135/430] Analyzing https://github.com/xuelinglow/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yisiox/ip.git to complete... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/xuelinglow/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/xuelinglow/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/0liverkong/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Teee728/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Teee728/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Teee728/ip.git (master) completed! +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [130/430] Analyzing https://github.com/ryanlimdx/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ryanlimdx/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ryanlimdx/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shaunlxw/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shaunlxw/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shaunlxw/ip.git (master) completed! +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [131/430] Analyzing https://github.com/chiralcentre/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chiralcentre/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chiralcentre/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dillontkh/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dillontkh/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dillontkh/ip.git (master) completed! +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [132/430] Analyzing https://github.com/KhoonSun47/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/KhoonSun47/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/KhoonSun47/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jmsandiegoo/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ryanlimdx/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ryanlimdx/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ryanlimdx/ip.git (master) completed! +Feb 07, 2024 1:15:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jmsandiegoo/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jmsandiegoo/ip.git (master) completed! +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [133/430] Analyzing https://github.com/ThatGirlJam/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [134/430] Analyzing https://github.com/0liverkong/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yashpola/ip.git completed! -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator analyzeRepos -INFO: [136/430] Analyzing https://github.com/yashpola/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/maiyasaliha/ip.git... -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/maiyasaliha/ip.git to complete... -Feb 06, 2024 3:23:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/0liverkong/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/0liverkong/ip.git (master) completed! -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yashpola/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yashpola/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/JiaXinEu/ip.git completed! -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/breezetall/ip.git completed! -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator analyzeRepos -INFO: [137/430] Analyzing https://github.com/JiaXinEu/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yisiox/ip.git completed! +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/0liverkong/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/0liverkong/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ThatGirlJam/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ThatGirlJam/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/triciiaaa/ip.git... -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/maiyasaliha/ip.git to complete... +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/JiaXinEu/ip.git completed! +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jolonauh/ip.git... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator analyzeRepos -INFO: [138/430] Analyzing https://github.com/breezetall/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/triciiaaa/ip.git to complete... -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Jolonauh/ip.git to complete... -Feb 06, 2024 3:23:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xuelinglow/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/JiaXinEu/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/JiaXinEu/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/breezetall/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/breezetall/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xuelinglow/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xuelinglow/ip.git (master) completed! -Feb 06, 2024 3:23:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yashpola/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yisiox/ip.git completed! -Feb 06, 2024 3:23:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yashpola/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator analyzeRepos -INFO: [139/430] Analyzing https://github.com/yisiox/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/alvinnzz/ip.git... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yashpola/ip.git (master) completed! -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/alvinnzz/ip.git to complete... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:15:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chiralcentre/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chiralcentre/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chiralcentre/ip.git (master) completed! +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [135/430] Analyzing https://github.com/xuelinglow/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/xuelinglow/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/xuelinglow/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/KhoonSun47/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ThatGirlJam/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/KhoonSun47/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/KhoonSun47/ip.git (master) completed! +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [136/430] Analyzing https://github.com/yashpola/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ThatGirlJam/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ThatGirlJam/ip.git (master) completed! +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [137/430] Analyzing https://github.com/breezetall/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yashpola/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yashpola/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/breezetall/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:15:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/breezetall/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/0liverkong/ip.git (master)... +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/maiyasaliha/ip.git completed! +Feb 07, 2024 1:15:59 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/wolffe88/ip.git... +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/triciiaaa/ip.git completed! +Feb 07, 2024 1:16:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/0liverkong/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/menatahari/ip.git... +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/0liverkong/ip.git (master) completed! +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/menatahari/ip.git to complete... +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [138/430] Analyzing https://github.com/yisiox/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/wolffe88/ip.git to complete... +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jolonauh/ip.git completed! +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/alvinnzz/ip.git completed! +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/modembcc/ip.git... +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tsulim/ip.git... +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/modembcc/ip.git to complete... +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yisiox/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yisiox/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tsulim/ip.git to complete... +Feb 07, 2024 1:16:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xuelinglow/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xuelinglow/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xuelinglow/ip.git (master) completed! +Feb 07, 2024 1:16:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/breezetall/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [139/430] Analyzing https://github.com/JiaXinEu/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/breezetall/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yashpola/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/breezetall/ip.git (master) completed! -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/maiyasaliha/ip.git completed! -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/wolffe88/ip.git... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/JiaXinEu/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/JiaXinEu/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator analyzeRepos INFO: [140/430] Analyzing https://github.com/maiyasaliha/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/wolffe88/ip.git to complete... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yashpola/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yashpola/ip.git (master) completed! +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/maiyasaliha/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/maiyasaliha/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JiaXinEu/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jolonauh/ip.git completed! -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/triciiaaa/ip.git completed! -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator analyzeRepos INFO: [141/430] Analyzing https://github.com/triciiaaa/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/menatahari/ip.git... -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/modembcc/ip.git... -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/menatahari/ip.git to complete... -Feb 06, 2024 3:23:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JiaXinEu/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/modembcc/ip.git to complete... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JiaXinEu/ip.git (master) completed! -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator analyzeRepos -INFO: [142/430] Analyzing https://github.com/Jolonauh/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/triciiaaa/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/triciiaaa/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Jolonauh/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Jolonauh/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yisiox/ip.git (master)... -Feb 06, 2024 3:23:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/maiyasaliha/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yisiox/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/maiyasaliha/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/maiyasaliha/ip.git (master) completed! -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yisiox/ip.git (master) completed! -Feb 06, 2024 3:23:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/triciiaaa/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/triciiaaa/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/triciiaaa/ip.git (master) completed! -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/alvinnzz/ip.git completed! -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tsulim/ip.git... -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator analyzeRepos -INFO: [143/430] Analyzing https://github.com/alvinnzz/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tsulim/ip.git to complete... -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/alvinnzz/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/alvinnzz/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tsulim/ip.git completed! +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/wolffe88/ip.git completed! -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/modembcc/ip.git completed! +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanyunchao/ip.git... -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator analyzeRepos -INFO: [144/430] Analyzing https://github.com/wolffe88/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jolonauh/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tanyunchao/ip.git to complete... -Feb 06, 2024 3:23:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Jolonauh/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Jolonauh/ip.git (master) completed! -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/wolffe88/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/wolffe88/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/menatahari/ip.git completed! -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yashma-sonara/ip.git... -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator analyzeRepos -INFO: [145/430] Analyzing https://github.com/menatahari/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yashma-sonara/ip.git to complete... -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/menatahari/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/menatahari/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/modembcc/ip.git completed! -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator analyzeRepos -INFO: [146/430] Analyzing https://github.com/modembcc/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Hwww23/ip.git... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/menatahari/ip.git completed! +Feb 07, 2024 1:16:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yisiox/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tanyunchao/ip.git to complete... +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Hwww23/ip.git to complete... -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/modembcc/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/modembcc/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/alvinnzz/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/wolffe88/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/alvinnzz/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/wolffe88/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/alvinnzz/ip.git (master) completed! -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/wolffe88/ip.git (master) completed! -Feb 06, 2024 3:23:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/menatahari/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tsulim/ip.git completed! -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator analyzeRepos -INFO: [147/430] Analyzing https://github.com/tsulim/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/rickkoh/ip.git... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yashma-sonara/ip.git to complete... +Feb 07, 2024 1:16:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/triciiaaa/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yisiox/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/rickkoh/ip.git to complete... -Feb 06, 2024 3:23:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/menatahari/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/menatahari/ip.git (master) completed! -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tsulim/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tsulim/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yisiox/ip.git (master) completed! +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [142/430] Analyzing https://github.com/Jolonauh/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/triciiaaa/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/triciiaaa/ip.git (master) completed! +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [143/430] Analyzing https://github.com/alvinnzz/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Jolonauh/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Jolonauh/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/maiyasaliha/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/alvinnzz/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/alvinnzz/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/maiyasaliha/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/maiyasaliha/ip.git (master) completed! +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [144/430] Analyzing https://github.com/modembcc/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/modembcc/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/modembcc/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JiaXinEu/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JiaXinEu/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JiaXinEu/ip.git (master) completed! +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [145/430] Analyzing https://github.com/tsulim/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Hwww23/ip.git completed! +Feb 07, 2024 1:16:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jolonauh/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tanyunchao/ip.git completed! -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator analyzeRepos -INFO: [148/430] Analyzing https://github.com/tanyunchao/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ValenciaLim/ip.git... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tsulim/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tsulim/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Jolonauh/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Jolonauh/ip.git (master) completed! +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ValenciaLim/ip.git to complete... -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanyunchao/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanyunchao/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Hwww23/ip.git completed! -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator analyzeRepos -INFO: [149/430] Analyzing https://github.com/Hwww23/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Zer0Legion/ip.git... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [146/430] Analyzing https://github.com/wolffe88/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yashma-sonara/ip.git completed! -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/maze508/ip.git... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Zer0Legion/ip.git to complete... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/maze508/ip.git... +Feb 07, 2024 1:16:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/wolffe88/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/wolffe88/ip.git (master)... +Feb 07, 2024 1:16:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/maze508/ip.git to complete... -Feb 06, 2024 3:23:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/modembcc/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Hwww23/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Hwww23/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/modembcc/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/rickkoh/ip.git completed! +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/eunrcn/ip.git... +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/eunrcn/ip.git to complete... +Feb 07, 2024 1:16:01 AM 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,99 +2746,107 @@ 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) -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/eunrcn/ip.git... -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/modembcc/ip.git (master) completed! -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator analyzeRepos -INFO: [150/430] Analyzing https://github.com/yashma-sonara/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/eunrcn/ip.git to complete... -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yashma-sonara/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yashma-sonara/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanyunchao/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/rickkoh/ip.git completed! -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ziyang27/ip.git... -Feb 06, 2024 3:23:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanyunchao/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanyunchao/ip.git (master) completed! -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator analyzeRepos -INFO: [151/430] Analyzing https://github.com/rickkoh/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ziyang27/ip.git to complete... -Feb 06, 2024 3:23:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/alvinnzz/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/modembcc/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/alvinnzz/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/alvinnzz/ip.git (master) completed! +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [147/430] Analyzing https://github.com/menatahari/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/modembcc/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/modembcc/ip.git (master) completed! +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [148/430] Analyzing https://github.com/Hwww23/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/menatahari/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/menatahari/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Hwww23/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Hwww23/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/wolffe88/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/wolffe88/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/wolffe88/ip.git (master) completed! +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [149/430] Analyzing https://github.com/tanyunchao/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Hwww23/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/rickkoh/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:14 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/rickkoh/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Hwww23/ip.git (master)... -Feb 06, 2024 3:23:14 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Hwww23/ip.git (master) completed! -Feb 06, 2024 3:23:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanyunchao/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanyunchao/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/maze508/ip.git completed! +Feb 07, 2024 1:16:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tsulim/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tsulim/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tsulim/ip.git (master) completed! -Feb 06, 2024 3:23:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yashma-sonara/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yashma-sonara/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yashma-sonara/ip.git (master) completed! -Feb 06, 2024 3:23:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/rickkoh/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Zer0Legion/ip.git completed! -Feb 06, 2024 3:23:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/rickkoh/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator analyzeRepos -INFO: [152/430] Analyzing https://github.com/Zer0Legion/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/rickkoh/ip.git (master) completed! -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nusliuyifan/ip.git... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Hwww23/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Zer0Legion/ip.git completed! +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Hwww23/ip.git (master) completed! +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [150/430] Analyzing https://github.com/yashma-sonara/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nusliuyifan/ip.git to complete... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/eunrcn/ip.git completed! -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator analyzeRepos -INFO: [153/430] Analyzing https://github.com/eunrcn/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/miffi/ip.git... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/miffi/ip.git to complete... -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Zer0Legion/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Zer0Legion/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/maze508/ip.git completed! -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator analyzeRepos -INFO: [154/430] Analyzing https://github.com/maze508/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tsulim/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/menatahari/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tsulim/ip.git (master) completed! +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yashma-sonara/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yashma-sonara/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [151/430] Analyzing https://github.com/rickkoh/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/menatahari/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/menatahari/ip.git (master) completed! +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [152/430] Analyzing https://github.com/maze508/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ziyang27/ip.git completed! +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/eunrcn/ip.git completed! +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/rickkoh/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/rickkoh/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kwuunnn/ip.git... -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/eunrcn/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/eunrcn/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/KSSWSept20/ip.git... +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/KSSWSept20/ip.git to complete... +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kwuunnn/ip.git to complete... -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/maze508/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/maze508/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ziyang27/ip.git completed! -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:01 AM 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'... @@ -2888,3737 +2862,3761 @@ 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) -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/KSSWSept20/ip.git... -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator analyzeRepos -INFO: [155/430] Analyzing https://github.com/ziyang27/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zengzihui/ip.git... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zengzihui/ip.git to complete... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/KSSWSept20/ip.git to complete... -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanyunchao/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanyunchao/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanyunchao/ip.git (master) completed! +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [153/430] Analyzing https://github.com/Zer0Legion/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Zer0Legion/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Zer0Legion/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yashma-sonara/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yashma-sonara/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/miffi/ip.git completed! +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yashma-sonara/ip.git (master) completed! +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [154/430] Analyzing https://github.com/ziyang27/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/sdevih/ip.git... +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sdevih/ip.git to complete... +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ziyang27/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ziyang27/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/eunrcn/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/eunrcn/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/eunrcn/ip.git (master) completed! -Feb 06, 2024 3:23:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/maze508/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/KSSWSept20/ip.git completed! +Feb 07, 2024 1:16:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/maze508/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/DingBao-sys/ip.git... +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/maze508/ip.git (master) completed! -Feb 06, 2024 3:23:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Zer0Legion/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Zer0Legion/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Zer0Legion/ip.git (master) completed! -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/miffi/ip.git completed! -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [155/430] Analyzing https://github.com/eunrcn/ip.git (master)... +Feb 07, 2024 1:16:01 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/DingBao-sys/ip.git to complete... +Feb 07, 2024 1:16:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/rickkoh/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/eunrcn/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/eunrcn/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/rickkoh/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/rickkoh/ip.git (master) completed! +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator analyzeRepos INFO: [156/430] Analyzing https://github.com/miffi/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/sdevih/ip.git... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sdevih/ip.git to complete... -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/miffi/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/miffi/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kwuunnn/ip.git completed! -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator analyzeRepos -INFO: [157/430] Analyzing https://github.com/kwuunnn/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/DingBao-sys/ip.git... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/DingBao-sys/ip.git to complete... -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kwuunnn/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kwuunnn/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ziyang27/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/KSSWSept20/ip.git completed! -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator analyzeRepos -INFO: [158/430] Analyzing https://github.com/KSSWSept20/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jerome-j/ip.git... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Jerome-j/ip.git to complete... -Feb 06, 2024 3:23:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ziyang27/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ziyang27/ip.git (master) completed! -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/zengzihui/ip.git completed! -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/KSSWSept20/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/KSSWSept20/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Kaya3842/ip.git... -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator analyzeRepos -INFO: [159/430] Analyzing https://github.com/zengzihui/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Jerome-j/ip.git to complete... +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/miffi/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/miffi/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Kaya3842/ip.git to complete... -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zengzihui/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zengzihui/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zengzihui/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/miffi/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zengzihui/ip.git (master)... -Feb 06, 2024 3:23:15 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zengzihui/ip.git (master) completed! -Feb 06, 2024 3:23:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/miffi/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/miffi/ip.git (master) completed! -Feb 06, 2024 3:23:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/KSSWSept20/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/KSSWSept20/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kwuunnn/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/KSSWSept20/ip.git (master) completed! -Feb 06, 2024 3:23:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kwuunnn/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kwuunnn/ip.git (master) completed! -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Zer0Legion/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Zer0Legion/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Zer0Legion/ip.git (master) completed! +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [157/430] Analyzing https://github.com/KSSWSept20/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sdevih/ip.git completed! -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator analyzeRepos -INFO: [160/430] Analyzing https://github.com/sdevih/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/eunrcn/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/legionlegion/ip.git... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/eunrcn/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/eunrcn/ip.git (master) completed! +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/KSSWSept20/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/KSSWSept20/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [158/430] Analyzing https://github.com/kwuunnn/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/legionlegion/ip.git to complete... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/sdevih/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/sdevih/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/miffi/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kwuunnn/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kwuunnn/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/miffi/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/miffi/ip.git (master) completed! +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [159/430] Analyzing https://github.com/zengzihui/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/DingBao-sys/ip.git completed! -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator analyzeRepos -INFO: [161/430] Analyzing https://github.com/DingBao-sys/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chiaryan/ip.git... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zengzihui/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zengzihui/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chiaryan/ip.git to complete... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/DingBao-sys/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/DingBao-sys/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Jerome-j/ip.git completed! -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator analyzeRepos -INFO: [162/430] Analyzing https://github.com/Jerome-j/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ChrisHo1341/ip.git... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Kaya3842/ip.git completed! -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChrisHo1341/ip.git to complete... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator analyzeRepos -INFO: [163/430] Analyzing https://github.com/Kaya3842/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ChrisHo1341/ip.git... +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/hjuntan/ip.git... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ziyang27/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/hjuntan/ip.git to complete... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChrisHo1341/ip.git to complete... +Feb 07, 2024 1:16:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ziyang27/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ziyang27/ip.git (master) completed! +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [160/430] Analyzing https://github.com/sdevih/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/sdevih/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/sdevih/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zengzihui/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/KSSWSept20/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zengzihui/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zengzihui/ip.git (master) completed! +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [161/430] Analyzing https://github.com/DingBao-sys/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/KSSWSept20/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/KSSWSept20/ip.git (master) completed! +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [162/430] Analyzing https://github.com/Jerome-j/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/DingBao-sys/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/DingBao-sys/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Jerome-j/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Jerome-j/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Kaya3842/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Kaya3842/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Kaya3842/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Kaya3842/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Kaya3842/ip.git (master) completed! -Feb 06, 2024 3:23:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sdevih/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/sdevih/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/sdevih/ip.git (master) completed! -Feb 06, 2024 3:23:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/DingBao-sys/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/DingBao-sys/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/DingBao-sys/ip.git (master) completed! -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kwuunnn/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/legionlegion/ip.git completed! -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator analyzeRepos -INFO: [164/430] Analyzing https://github.com/legionlegion/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kwuunnn/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kwuunnn/ip.git (master) completed! +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AwJoey/ip.git... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator analyzeRepos +INFO: [163/430] Analyzing https://github.com/Kaya3842/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AwJoey/ip.git to complete... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/legionlegion/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/legionlegion/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/hjuntan/ip.git completed! +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ChrisHo1341/ip.git completed! -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chiaryan/ip.git completed! -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator analyzeRepos -INFO: [165/430] Analyzing https://github.com/ChrisHo1341/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:02 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Kaya3842/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Kaya3842/ip.git (master)... +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ZhiWei1010/ip.git... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator analyzeRepos -INFO: [166/430] Analyzing https://github.com/chiaryan/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ReflectiveObsidian/ip.git... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ZhiWei1010/ip.git to complete... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ReflectiveObsidian/ip.git to complete... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/hjuntan/ip.git completed! -Feb 06, 2024 3:23:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jerome-j/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chiaryan/ip.git completed! +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ZhiWei1010/ip.git to complete... +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/NusMinato/ip.git... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ChrisHo1341/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ChrisHo1341/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/NusMinato/ip.git to complete... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chiaryan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chiaryan/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Jerome-j/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Jerome-j/ip.git (master) completed! -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator analyzeRepos -INFO: [167/430] Analyzing https://github.com/hjuntan/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/hjuntan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/hjuntan/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ChrisHo1341/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ChrisHo1341/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ChrisHo1341/ip.git (master) completed! -Feb 06, 2024 3:23:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sdevih/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/sdevih/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/sdevih/ip.git (master) completed! +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [164/430] Analyzing https://github.com/legionlegion/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/legionlegion/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/legionlegion/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/DingBao-sys/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/DingBao-sys/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/DingBao-sys/ip.git (master) completed! +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Kaya3842/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [165/430] Analyzing https://github.com/hjuntan/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Kaya3842/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Kaya3842/ip.git (master) completed! +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/hjuntan/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/hjuntan/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [166/430] Analyzing https://github.com/ChrisHo1341/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ChrisHo1341/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ChrisHo1341/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jerome-j/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/legionlegion/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/legionlegion/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ZhiWei1010/ip.git completed! +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/NusMinato/ip.git completed! +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/legionlegion/ip.git (master) completed! -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AwJoey/ip.git completed! -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator analyzeRepos -INFO: [168/430] Analyzing https://github.com/AwJoey/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [167/430] Analyzing https://github.com/chiaryan/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Jerome-j/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Jerome-j/ip.git (master) completed! +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ReflectiveObsidian/ip.git completed! +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/soons1/ip.git... -Feb 06, 2024 3:23:16 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AwJoey/ip.git completed! +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [168/430] Analyzing https://github.com/ZhiWei1010/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/soons1/ip.git to complete... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AwJoey/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:16 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AwJoey/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chiaryan/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chiaryan/ip.git (master)... -Feb 06, 2024 3:23:16 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chiaryan/ip.git (master) completed! -Feb 06, 2024 3:23:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/hjuntan/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/hjuntan/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/hjuntan/ip.git (master) completed! -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ZhiWei1010/ip.git completed! -Feb 06, 2024 3:23:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AwJoey/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator analyzeRepos -INFO: [169/430] Analyzing https://github.com/ZhiWei1010/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/evedaktyl/ip.git... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/xuwen-ho/ip.git... +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/evedaktyl/ip.git to complete... -Feb 06, 2024 3:23:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AwJoey/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AwJoey/ip.git (master) completed! -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/NusMinato/ip.git completed! -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chiaryan/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chiaryan/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chewbum/ip.git... +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/xuwen-ho/ip.git to complete... +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chewbum/ip.git to complete... +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ZhiWei1010/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ZhiWei1010/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator analyzeRepos -INFO: [170/430] Analyzing https://github.com/NusMinato/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/xuwen-ho/ip.git... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/xuwen-ho/ip.git to complete... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/NusMinato/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/NusMinato/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ChrisHo1341/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ChrisHo1341/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ChrisHo1341/ip.git (master) completed! +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [169/430] Analyzing https://github.com/ReflectiveObsidian/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ReflectiveObsidian/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ReflectiveObsidian/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ZhiWei1010/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/hjuntan/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ZhiWei1010/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ZhiWei1010/ip.git (master) completed! -Feb 06, 2024 3:23:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/NusMinato/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ReflectiveObsidian/ip.git completed! -Feb 06, 2024 3:23:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/NusMinato/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator analyzeRepos -INFO: [171/430] Analyzing https://github.com/ReflectiveObsidian/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chewbum/ip.git... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/NusMinato/ip.git (master) completed! -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chewbum/ip.git to complete... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ReflectiveObsidian/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ReflectiveObsidian/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [170/430] Analyzing https://github.com/NusMinato/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chiaryan/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/hjuntan/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/hjuntan/ip.git (master) completed! +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [171/430] Analyzing https://github.com/AwJoey/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/NusMinato/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/NusMinato/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chiaryan/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chiaryan/ip.git (master) completed! +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AwJoey/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AwJoey/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ReflectiveObsidian/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xuwen-ho/ip.git completed! +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/evedaktyl/ip.git completed! +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chewbum/ip.git completed! +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/soons1/ip.git completed! -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator analyzeRepos -INFO: [172/430] Analyzing https://github.com/soons1/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanjieling0/ip.git... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tanjieling0/ip.git to complete... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/evedaktyl/ip.git completed! -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/soons1/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/soons1/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xuwen-ho/ip.git completed! -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator analyzeRepos -INFO: [173/430] Analyzing https://github.com/evedaktyl/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [172/430] Analyzing https://github.com/chewbum/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sun-ruiheng/ip.git... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sun-ruiheng/ip.git to complete... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator analyzeRepos -INFO: [174/430] Analyzing https://github.com/xuwen-ho/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zhikaiong2001/ip.git... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/bgopi23/ip.git... +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zhikaiong2001/ip.git to complete... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/bgopi23/ip.git to complete... +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sun-ruiheng/ip.git to complete... +Feb 07, 2024 1:16:03 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tanjieling0/ip.git to complete... +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ReflectiveObsidian/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ReflectiveObsidian/ip.git (master) completed! +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [173/430] Analyzing https://github.com/soons1/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chewbum/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chewbum/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/soons1/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/soons1/ip.git (master)... +Feb 07, 2024 1:16:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AwJoey/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AwJoey/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AwJoey/ip.git (master) completed! +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [174/430] Analyzing https://github.com/evedaktyl/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/evedaktyl/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/evedaktyl/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/NusMinato/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/NusMinato/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/NusMinato/ip.git (master) completed! +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [175/430] Analyzing https://github.com/xuwen-ho/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/xuwen-ho/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/xuwen-ho/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ReflectiveObsidian/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ReflectiveObsidian/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ReflectiveObsidian/ip.git (master) completed! -Feb 06, 2024 3:23:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xuwen-ho/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chewbum/ip.git completed! -Feb 06, 2024 3:23:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xuwen-ho/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xuwen-ho/ip.git (master) completed! -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/bgopi23/ip.git... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator analyzeRepos -INFO: [175/430] Analyzing https://github.com/chewbum/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/bgopi23/ip.git to complete... -Feb 06, 2024 3:23:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chewbum/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/soons1/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chewbum/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chewbum/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/evedaktyl/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/evedaktyl/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chewbum/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chewbum/ip.git (master) completed! +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/soons1/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/evedaktyl/ip.git (master) completed! -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/soons1/ip.git (master) completed! -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/sun-ruiheng/ip.git completed! +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tanjieling0/ip.git completed! -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator analyzeRepos -INFO: [176/430] Analyzing https://github.com/tanjieling0/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bgopi23/ip.git completed! +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zhikaiong2001/ip.git completed! +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [176/430] Analyzing https://github.com/sun-ruiheng/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dhlee03/ip.git... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dhlee03/ip.git to complete... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tanjieling0/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tanjieling0/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/sun-ruiheng/ip.git completed! -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [177/430] Analyzing https://github.com/bgopi23/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ReganChoy/ip.git... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator analyzeRepos -INFO: [177/430] Analyzing https://github.com/sun-ruiheng/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zhikaiong2001/ip.git completed! -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ReganChoy/ip.git to complete... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dhlee03/ip.git to complete... +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LWS49/ip.git... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator analyzeRepos -INFO: [178/430] Analyzing https://github.com/zhikaiong2001/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ChillinRage/ip.git... +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/LWS49/ip.git to complete... +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ReganChoy/ip.git to complete... +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sun-ruiheng/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sun-ruiheng/ip.git (master)... -Feb 06, 2024 3:23:17 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/LWS49/ip.git to complete... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChillinRage/ip.git to complete... +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/bgopi23/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/bgopi23/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/evedaktyl/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/evedaktyl/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/evedaktyl/ip.git (master) completed! +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [178/430] Analyzing https://github.com/zhikaiong2001/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xuwen-ho/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xuwen-ho/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zhikaiong2001/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zhikaiong2001/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chewbum/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xuwen-ho/ip.git (master) completed! +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [179/430] Analyzing https://github.com/tanjieling0/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tanjieling0/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tanjieling0/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/sun-ruiheng/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chewbum/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chewbum/ip.git (master) completed! -Feb 06, 2024 3:23:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sun-ruiheng/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sun-ruiheng/ip.git (master) completed! -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bgopi23/ip.git completed! -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ChillinRage/ip.git... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator analyzeRepos -INFO: [179/430] Analyzing https://github.com/bgopi23/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChillinRage/ip.git to complete... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/bgopi23/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/bgopi23/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tanjieling0/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tanjieling0/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tanjieling0/ip.git (master) completed! -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bgopi23/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/bgopi23/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/bgopi23/ip.git (master) completed! +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/dhlee03/ip.git completed! -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator analyzeRepos -INFO: [180/430] Analyzing https://github.com/dhlee03/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Shauryan123/ip.git... -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [180/430] Analyzing https://github.com/dhlee03/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LWS49/ip.git completed! +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Shauryan123/ip.git to complete... -Feb 06, 2024 3:23:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zhikaiong2001/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dhlee03/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dhlee03/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zhikaiong2001/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zhikaiong2001/ip.git (master) completed! -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ReganChoy/ip.git completed! -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator analyzeRepos -INFO: [181/430] Analyzing https://github.com/ReganChoy/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ChillinRage/ip.git completed! +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [181/430] Analyzing https://github.com/LWS49/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Colex2000/ip.git... -Feb 06, 2024 3:23:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bgopi23/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LWS49/ip.git completed! -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dhlee03/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dhlee03/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Colex2000/ip.git to complete... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator analyzeRepos -INFO: [182/430] Analyzing https://github.com/LWS49/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/HusseinSafwan02/ip.git... -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ZHANGTIANYAO1/ip.git... +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ZHANGTIANYAO1/ip.git to complete... +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LWS49/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LWS49/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/HusseinSafwan02/ip.git to complete... -Feb 06, 2024 3:23:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/bgopi23/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zhikaiong2001/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zhikaiong2001/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zhikaiong2001/ip.git (master) completed! +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [182/430] Analyzing https://github.com/ReganChoy/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tanjieling0/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ReganChoy/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ReganChoy/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/bgopi23/ip.git (master) completed! -Feb 06, 2024 3:23:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tanjieling0/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/dhlee03/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LWS49/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LWS49/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tanjieling0/ip.git (master) completed! +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [183/430] Analyzing https://github.com/ChillinRage/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/dhlee03/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/dhlee03/ip.git (master) completed! -Feb 06, 2024 3:23:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ChillinRage/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ChillinRage/ip.git (master)... +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/LWS49/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/LWS49/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:04 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/LWS49/ip.git (master) completed! -Feb 06, 2024 3:23:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ReganChoy/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ReganChoy/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ReganChoy/ip.git (master) completed! -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Shauryan123/ip.git completed! -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator analyzeRepos -INFO: [183/430] Analyzing https://github.com/Shauryan123/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ZHANGTIANYAO1/ip.git... -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ZHANGTIANYAO1/ip.git to complete... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Shauryan123/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Shauryan123/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ChillinRage/ip.git (master)... +Feb 07, 2024 1:16:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ChillinRage/ip.git (master)... +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ChillinRage/ip.git (master) completed! +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/HusseinSafwan02/ip.git completed! -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator analyzeRepos INFO: [184/430] Analyzing https://github.com/HusseinSafwan02/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Windofbitter/ip.git... -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Windofbitter/ip.git to complete... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/HusseinSafwan02/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/HusseinSafwan02/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Colex2000/ip.git completed! -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ZHANGTIANYAO1/ip.git completed! +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [185/430] Analyzing https://github.com/ZHANGTIANYAO1/ip.git (master)... +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/quelinxiao/ip.git... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator analyzeRepos -INFO: [185/430] Analyzing https://github.com/Colex2000/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Shauryan123/ip.git completed! +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ararchch/ip.git... +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [186/430] Analyzing https://github.com/Colex2000/ip.git (master)... +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [187/430] Analyzing https://github.com/Shauryan123/ip.git (master)... +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/KiatLun/ip.git... +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/quelinxiao/ip.git to complete... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ZHANGTIANYAO1/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ZHANGTIANYAO1/ip.git (master)... +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ararchch/ip.git to complete... +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/KiatLun/ip.git to complete... +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Shauryan123/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Shauryan123/ip.git (master)... +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Colex2000/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Colex2000/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ChillinRage/ip.git completed! -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator analyzeRepos -INFO: [186/430] Analyzing https://github.com/ChillinRage/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ararchch/ip.git... -Feb 06, 2024 3:23:18 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ararchch/ip.git to complete... -Feb 06, 2024 3:23:18 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ChillinRage/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:18 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ChillinRage/ip.git (master)... -Feb 06, 2024 3:23:18 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/HusseinSafwan02/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/HusseinSafwan02/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/HusseinSafwan02/ip.git (master) completed! -Feb 06, 2024 3:23:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Shauryan123/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Shauryan123/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Shauryan123/ip.git (master) completed! -Feb 06, 2024 3:23:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Colex2000/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Colex2000/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Colex2000/ip.git (master) completed! -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ZHANGTIANYAO1/ip.git completed! -Feb 06, 2024 3:23:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ChillinRage/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/KiatLun/ip.git... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator analyzeRepos -INFO: [187/430] Analyzing https://github.com/ZHANGTIANYAO1/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/KiatLun/ip.git to complete... -Feb 06, 2024 3:23:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ChillinRage/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ChillinRage/ip.git (master) completed! -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ZHANGTIANYAO1/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ZHANGTIANYAO1/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Windofbitter/ip.git completed! -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator analyzeRepos -INFO: [188/430] Analyzing https://github.com/Windofbitter/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Bandov/ip.git... -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [188/430] Analyzing https://github.com/Windofbitter/ip.git (master)... +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Bandov/ip.git to complete... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Windofbitter/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Windofbitter/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Shauryan123/ip.git (master)... +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/quelinxiao/ip.git completed! -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator analyzeRepos INFO: [189/430] Analyzing https://github.com/quelinxiao/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/peienlim/ip.git... -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Windofbitter/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Windofbitter/ip.git (master)... +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/peienlim/ip.git to complete... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Shauryan123/ip.git (master)... +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/quelinxiao/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/quelinxiao/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Shauryan123/ip.git (master) completed! +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/KiatLun/ip.git completed! +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ararchch/ip.git completed! -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator analyzeRepos -INFO: [190/430] Analyzing https://github.com/ararchch/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zoebelle-pang/ip.git... -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [190/430] Analyzing https://github.com/KiatLun/ip.git (master)... +Feb 07, 2024 1:16:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ZHANGTIANYAO1/ip.git (master)... +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zoebelle-pang/ip.git to complete... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ararchch/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ararchch/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/quelinxiao/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/quelinxiao/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/quelinxiao/ip.git (master) completed! -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/KiatLun/ip.git completed! -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tayziyi/ip.git... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator analyzeRepos -INFO: [191/430] Analyzing https://github.com/KiatLun/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tayziyi/ip.git to complete... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/KiatLun/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/KiatLun/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Bandov/ip.git completed! -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/R-Laksh/ip.git... -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/R-Laksh/ip.git to complete... -Feb 06, 2024 3:23:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ZHANGTIANYAO1/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ZHANGTIANYAO1/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tayziyi/ip.git to complete... +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ZHANGTIANYAO1/ip.git (master) completed! -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator analyzeRepos -INFO: [192/430] Analyzing https://github.com/Bandov/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [191/430] Analyzing https://github.com/ararchch/ip.git (master)... +Feb 07, 2024 1:16:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/quelinxiao/ip.git (master)... +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ararchch/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ararchch/ip.git (master)... +Feb 07, 2024 1:16:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/quelinxiao/ip.git (master)... +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/quelinxiao/ip.git (master) completed! +Feb 07, 2024 1:16:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/KiatLun/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Bandov/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Bandov/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/peienlim/ip.git completed! -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Cedricaca/ip.git... -Feb 06, 2024 3:23:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/KiatLun/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/KiatLun/ip.git (master) completed! -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Cedricaca/ip.git to complete... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator analyzeRepos -INFO: [193/430] Analyzing https://github.com/peienlim/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ararchch/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zoebelle-pang/ip.git completed! -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/matthewken19/ip.git... -Feb 06, 2024 3:23:19 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/matthewken19/ip.git to complete... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/peienlim/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/peienlim/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/peienlim/ip.git completed! +Feb 07, 2024 1:16:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ararchch/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/R-Laksh/ip.git... +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [192/430] Analyzing https://github.com/peienlim/ip.git (master)... +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ararchch/ip.git (master) completed! -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/R-Laksh/ip.git to complete... +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Bandov/ip.git completed! +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [193/430] Analyzing https://github.com/Bandov/ip.git (master)... +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Cedricaca/ip.git... +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/peienlim/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/peienlim/ip.git (master)... +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Cedricaca/ip.git to complete... +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Bandov/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Bandov/ip.git (master)... +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zoebelle-pang/ip.git completed! +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/matthewken19/ip.git... +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepos INFO: [194/430] Analyzing https://github.com/zoebelle-pang/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tayziyi/ip.git completed! +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/matthewken19/ip.git to complete... +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/taufiq/ip.git... +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/taufiq/ip.git to complete... +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zoebelle-pang/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:19 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zoebelle-pang/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Windofbitter/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Windofbitter/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Windofbitter/ip.git (master) completed! -Feb 06, 2024 3:23:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [195/430] Analyzing https://github.com/tayziyi/ip.git (master)... +Feb 07, 2024 1:16:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/zoebelle-pang/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/zoebelle-pang/ip.git (master)... -Feb 06, 2024 3:23:19 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/zoebelle-pang/ip.git (master) completed! -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tayziyi/ip.git completed! -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator analyzeRepos -INFO: [195/430] Analyzing https://github.com/tayziyi/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/taufiq/ip.git... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/taufiq/ip.git to complete... -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tayziyi/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tayziyi/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Bandov/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/peienlim/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Bandov/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Bandov/ip.git (master) completed! -Feb 06, 2024 3:23:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/peienlim/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/peienlim/ip.git (master) completed! -Feb 06, 2024 3:23:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tayziyi/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Bandov/ip.git (master)... +Feb 07, 2024 1:16:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tayziyi/ip.git (master)... +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tayziyi/ip.git (master) completed! +Feb 07, 2024 1:16:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Bandov/ip.git (master)... +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Bandov/ip.git (master) completed! +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/R-Laksh/ip.git completed! -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepos INFO: [196/430] Analyzing https://github.com/R-Laksh/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/gingerbreaf/ip.git... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/gingerbreaf/ip.git to complete... -Feb 06, 2024 3:23:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tayziyi/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tayziyi/ip.git (master) completed! -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/R-Laksh/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/R-Laksh/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Cedricaca/ip.git completed! -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepos INFO: [197/430] Analyzing https://github.com/Cedricaca/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Zack-Tay/ip.git... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Zack-Tay/ip.git to complete... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/matthewken19/ip.git completed! -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Cedricaca/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Cedricaca/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/matthewken19/ip.git completed! +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/taufiq/ip.git completed! +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepos INFO: [198/430] Analyzing https://github.com/matthewken19/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/darryl-chan/ip.git... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [199/430] Analyzing https://github.com/taufiq/ip.git (master)... +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JustWeiHao/ip.git... +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/darryl-chan/ip.git to complete... -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JustWeiHao/ip.git to complete... +Feb 07, 2024 1:16:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/R-Laksh/ip.git (master)... +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/taufiq/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/taufiq/ip.git (master)... +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/matthewken19/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/matthewken19/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/R-Laksh/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/R-Laksh/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/R-Laksh/ip.git (master) completed! -Feb 06, 2024 3:23:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/matthewken19/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/matthewken19/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Cedricaca/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/matthewken19/ip.git (master) completed! -Feb 06, 2024 3:23:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Cedricaca/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Cedricaca/ip.git (master) completed! -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/taufiq/ip.git completed! -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator analyzeRepos -INFO: [199/430] Analyzing https://github.com/taufiq/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JustWeiHao/ip.git... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JustWeiHao/ip.git to complete... -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/taufiq/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/taufiq/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/gingerbreaf/ip.git completed! -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepos INFO: [200/430] Analyzing https://github.com/gingerbreaf/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/brennalaurentan/ip.git... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/brennalaurentan/ip.git to complete... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/taufiq/ip.git (master)... +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/gingerbreaf/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/gingerbreaf/ip.git (master)... +Feb 07, 2024 1:16:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/matthewken19/ip.git (master)... +Feb 07, 2024 1:16:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/taufiq/ip.git (master)... +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/taufiq/ip.git (master) completed! +Feb 07, 2024 1:16:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/matthewken19/ip.git (master)... +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/matthewken19/ip.git (master) completed! +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Zack-Tay/ip.git completed! -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepos INFO: [201/430] Analyzing https://github.com/Zack-Tay/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/0-yibai/ip.git... -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/gingerbreaf/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/gingerbreaf/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/0-yibai/ip.git to complete... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/darryl-chan/ip.git completed! -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Zack-Tay/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Zack-Tay/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/darryl-chan/ip.git completed! +Feb 07, 2024 1:16:06 AM reposense.report.ReportGenerator analyzeRepos INFO: [202/430] Analyzing https://github.com/darryl-chan/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Apzure/ip.git... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Apzure/ip.git to complete... -Feb 06, 2024 3:23:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/taufiq/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/darryl-chan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/darryl-chan/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/taufiq/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/taufiq/ip.git (master) completed! -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/JustWeiHao/ip.git completed! -Feb 06, 2024 3:23:20 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Zack-Tay/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jxunze/ip.git... -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/gingerbreaf/ip.git (master)... +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator analyzeRepos INFO: [203/430] Analyzing https://github.com/JustWeiHao/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jxunze/ip.git... +Feb 07, 2024 1:16:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Zack-Tay/ip.git (master)... +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jxunze/ip.git to complete... -Feb 06, 2024 3:23:20 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Zack-Tay/ip.git (master)... -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Zack-Tay/ip.git (master) completed! -Feb 06, 2024 3:23:20 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/gingerbreaf/ip.git (master)... +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/gingerbreaf/ip.git (master) completed! +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JustWeiHao/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JustWeiHao/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/0-yibai/ip.git completed! -Feb 06, 2024 3:23:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/gingerbreaf/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Zack-Tay/ip.git (master)... +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Zack-Tay/ip.git (master) completed! +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/brennalaurentan/ip.git completed! +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [204/430] Analyzing https://github.com/brennalaurentan/ip.git (master)... +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/alphajae11/ip.git... -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator analyzeRepos -INFO: [204/430] Analyzing https://github.com/0-yibai/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/gingerbreaf/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/gingerbreaf/ip.git (master) completed! -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/0-yibai/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/0-yibai/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/alphajae11/ip.git to complete... -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Apzure/ip.git completed! -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/brennalaurentan/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/brennalaurentan/ip.git (master)... +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/0-yibai/ip.git completed! +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [205/430] Analyzing https://github.com/0-yibai/ip.git (master)... +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yespiggy/ip.git... -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator analyzeRepos -INFO: [205/430] Analyzing https://github.com/Apzure/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yespiggy/ip.git to complete... -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Apzure/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Apzure/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/darryl-chan/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/darryl-chan/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/darryl-chan/ip.git (master) completed! -Feb 06, 2024 3:23:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/0-yibai/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/0-yibai/ip.git (master)... +Feb 07, 2024 1:16:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/JustWeiHao/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/brennalaurentan/ip.git (master)... +Feb 07, 2024 1:16:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JustWeiHao/ip.git (master)... +Feb 07, 2024 1:16:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/brennalaurentan/ip.git (master)... +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/brennalaurentan/ip.git (master) completed! +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JustWeiHao/ip.git (master) completed! +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jxunze/ip.git completed! -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/darryl-chan/ip.git (master)... +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/raysonchia/ip.git... -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator analyzeRepos INFO: [206/430] Analyzing https://github.com/jxunze/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JustWeiHao/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/raysonchia/ip.git to complete... -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JustWeiHao/ip.git (master) completed! -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jxunze/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jxunze/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/darryl-chan/ip.git (master)... +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/darryl-chan/ip.git (master) completed! +Feb 07, 2024 1:16:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/0-yibai/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/0-yibai/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/0-yibai/ip.git (master) completed! -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/alphajae11/ip.git completed! -Feb 06, 2024 3:23:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Apzure/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/bachletuankhai/ip.git... -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator analyzeRepos INFO: [207/430] Analyzing https://github.com/alphajae11/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/bachletuankhai/ip.git... +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/bachletuankhai/ip.git to complete... -Feb 06, 2024 3:23:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Apzure/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Apzure/ip.git (master) completed! -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Apzure/ip.git completed! +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [208/430] Analyzing https://github.com/Apzure/ip.git (master)... +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/joelgoh1/ip.git... +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/alphajae11/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/alphajae11/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yespiggy/ip.git completed! -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator analyzeRepos -INFO: [208/430] Analyzing https://github.com/yespiggy/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/joelgoh1/ip.git... -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/joelgoh1/ip.git to complete... -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yespiggy/ip.git completed! +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Apzure/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Apzure/ip.git (master)... +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [209/430] Analyzing https://github.com/yespiggy/ip.git (master)... +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/YuZizhen/ip.git... +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/YuZizhen/ip.git to complete... +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yespiggy/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yespiggy/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jxunze/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jxunze/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jxunze/ip.git (master) completed! -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/brennalaurentan/ip.git completed! -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator analyzeRepos -INFO: [209/430] Analyzing https://github.com/brennalaurentan/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/YuZizhen/ip.git... -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/YuZizhen/ip.git to complete... -Feb 06, 2024 3:23:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yespiggy/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/alphajae11/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/brennalaurentan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/brennalaurentan/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yespiggy/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yespiggy/ip.git (master) completed! -Feb 06, 2024 3:23:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/alphajae11/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/alphajae11/ip.git (master) completed! -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/raysonchia/ip.git completed! -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jxunze/ip.git (master) completed! +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SherwynNg/ip.git... -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator analyzeRepos INFO: [210/430] Analyzing https://github.com/raysonchia/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SherwynNg/ip.git to complete... -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/raysonchia/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/raysonchia/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yespiggy/ip.git (master)... +Feb 07, 2024 1:16:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yespiggy/ip.git (master)... +Feb 07, 2024 1:16:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yespiggy/ip.git (master) completed! +Feb 07, 2024 1:16:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Apzure/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/bachletuankhai/ip.git completed! -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator analyzeRepos -INFO: [211/430] Analyzing https://github.com/bachletuankhai/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kab-dot/ip.git... -Feb 06, 2024 3:23:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/brennalaurentan/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [211/430] Analyzing https://github.com/bachletuankhai/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kab-dot/ip.git to complete... -Feb 06, 2024 3:23:21 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/brennalaurentan/ip.git (master)... -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/brennalaurentan/ip.git (master) completed! -Feb 06, 2024 3:23:21 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/alphajae11/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Apzure/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Apzure/ip.git (master) completed! +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/bachletuankhai/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:21 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/bachletuankhai/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/alphajae11/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/alphajae11/ip.git (master) completed! +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/joelgoh1/ip.git completed! -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepos INFO: [212/430] Analyzing https://github.com/joelgoh1/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/belligerentbeagle/ip.git... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/belligerentbeagle/ip.git to complete... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/joelgoh1/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/joelgoh1/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/raysonchia/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/raysonchia/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/raysonchia/ip.git (master) completed! -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/YuZizhen/ip.git completed! -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepos INFO: [213/430] Analyzing https://github.com/YuZizhen/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ongzhili/ip.git... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/joelgoh1/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/joelgoh1/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ongzhili/ip.git to complete... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/YuZizhen/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/YuZizhen/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/raysonchia/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/raysonchia/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/raysonchia/ip.git (master) completed! +Feb 07, 2024 1:16:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/YuZizhen/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/YuZizhen/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/YuZizhen/ip.git (master) completed! +Feb 07, 2024 1:16:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/bachletuankhai/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SherwynNg/ip.git completed! -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kab-dot/ip.git completed! -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator analyzeRepos -INFO: [214/430] Analyzing https://github.com/SherwynNg/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Dethada/ip.git... -Feb 06, 2024 3:23:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/joelgoh1/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/joelgoh1/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/bachletuankhai/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/joelgoh1/ip.git (master) completed! +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/bachletuankhai/ip.git (master) completed! -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kab-dot/ip.git completed! +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/belligerentbeagle/ip.git completed! +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Dethada/ip.git... +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [214/430] Analyzing https://github.com/kab-dot/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Dethada/ip.git to complete... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [215/430] Analyzing https://github.com/belligerentbeagle/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yuhinarita/ip.git... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator analyzeRepos -INFO: [215/430] Analyzing https://github.com/kab-dot/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yuhinarita/ip.git to complete... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SherwynNg/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SherwynNg/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kab-dot/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kab-dot/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/YuZizhen/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/joelgoh1/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/YuZizhen/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/YuZizhen/ip.git (master) completed! -Feb 06, 2024 3:23:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/joelgoh1/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/joelgoh1/ip.git (master) completed! -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/belligerentbeagle/ip.git completed! -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator analyzeRepos -INFO: [216/430] Analyzing https://github.com/belligerentbeagle/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/vnnamng/ip.git... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/vnnamng/ip.git to complete... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/belligerentbeagle/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/belligerentbeagle/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kab-dot/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SherwynNg/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kab-dot/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kab-dot/ip.git (master) completed! -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ongzhili/ip.git completed! -Feb 06, 2024 3:23:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SherwynNg/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator analyzeRepos -INFO: [217/430] Analyzing https://github.com/ongzhili/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [216/430] Analyzing https://github.com/ongzhili/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/vnnamng/ip.git... +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SherwynNg/ip.git completed! +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [217/430] Analyzing https://github.com/SherwynNg/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/DominicFuMJ/ip.git... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SherwynNg/ip.git (master) completed! -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/vnnamng/ip.git to complete... +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/DominicFuMJ/ip.git to complete... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SherwynNg/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SherwynNg/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ongzhili/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ongzhili/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kab-dot/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kab-dot/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kab-dot/ip.git (master) completed! +Feb 07, 2024 1:16:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/belligerentbeagle/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Dethada/ip.git completed! -Feb 06, 2024 3:23:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/belligerentbeagle/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator analyzeRepos -INFO: [218/430] Analyzing https://github.com/Dethada/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Anant1902/ip.git... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/belligerentbeagle/ip.git (master) completed! -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Anant1902/ip.git to complete... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Dethada/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Dethada/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SherwynNg/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ongzhili/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SherwynNg/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SherwynNg/ip.git (master) completed! +Feb 07, 2024 1:16:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ongzhili/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yuhinarita/ip.git completed! -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator analyzeRepos -INFO: [219/430] Analyzing https://github.com/yuhinarita/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/redcolorbicycle/ip.git... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/redcolorbicycle/ip.git to complete... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ongzhili/ip.git (master) completed! +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [218/430] Analyzing https://github.com/yuhinarita/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Anant1902/ip.git... +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Anant1902/ip.git to complete... +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yuhinarita/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yuhinarita/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Dethada/ip.git completed! +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [219/430] Analyzing https://github.com/Dethada/ip.git (master)... +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/redcolorbicycle/ip.git... +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/redcolorbicycle/ip.git to complete... +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/vnnamng/ip.git completed! -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator analyzeRepos INFO: [220/430] Analyzing https://github.com/vnnamng/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yorklim/ip.git... -Feb 06, 2024 3:23:22 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yorklim/ip.git to complete... -Feb 06, 2024 3:23:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ongzhili/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Dethada/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Dethada/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/vnnamng/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/vnnamng/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ongzhili/ip.git (master)... -Feb 06, 2024 3:23:22 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ongzhili/ip.git (master) completed! -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yuhinarita/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/DominicFuMJ/ip.git completed! -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yuhinarita/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yuhinarita/ip.git (master) completed! -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yuhinarita/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator analyzeRepos INFO: [221/430] Analyzing https://github.com/DominicFuMJ/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Wongqingyee/ip.git... -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Wongqingyee/ip.git to complete... -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yuhinarita/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yuhinarita/ip.git (master) completed! +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/DominicFuMJ/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/DominicFuMJ/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/DominicFuMJ/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/DominicFuMJ/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/DominicFuMJ/ip.git (master) completed! +Feb 07, 2024 1:16:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/vnnamng/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/vnnamng/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/vnnamng/ip.git (master) completed! +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Anant1902/ip.git completed! -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator analyzeRepos INFO: [222/430] Analyzing https://github.com/Anant1902/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/YowSiaoKang/ip.git... -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/YowSiaoKang/ip.git to complete... -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Dethada/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Anant1902/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Anant1902/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/vnnamng/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Dethada/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/DominicFuMJ/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Dethada/ip.git (master) completed! -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/DominicFuMJ/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/DominicFuMJ/ip.git (master) completed! -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/vnnamng/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/vnnamng/ip.git (master) completed! -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yorklim/ip.git completed! -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator analyzeRepos -INFO: [223/430] Analyzing https://github.com/yorklim/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/LargeCrowd/ip.git... -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/redcolorbicycle/ip.git completed! +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [223/430] Analyzing https://github.com/yorklim/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/LargeCrowd/ip.git to complete... -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yorklim/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yorklim/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Anant1902/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Anant1902/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Anant1902/ip.git (master) completed! -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Wongqingyee/ip.git completed! -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator analyzeRepos -INFO: [224/430] Analyzing https://github.com/Wongqingyee/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [224/430] Analyzing https://github.com/redcolorbicycle/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/irwynliong/ip.git... -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Wongqingyee/ip.git completed! +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/irwynliong/ip.git to complete... -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Wongqingyee/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Wongqingyee/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/YowSiaoKang/ip.git completed! -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator analyzeRepos -INFO: [225/430] Analyzing https://github.com/YowSiaoKang/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [225/430] Analyzing https://github.com/Wongqingyee/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jannaleong/ip.git... -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yorklim/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yorklim/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jannaleong/ip.git to complete... -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yorklim/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/YowSiaoKang/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/YowSiaoKang/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/redcolorbicycle/ip.git completed! -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator analyzeRepos -INFO: [226/430] Analyzing https://github.com/redcolorbicycle/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/kaiyi27/ip.git... -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kaiyi27/ip.git to complete... -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yorklim/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yorklim/ip.git (master) completed! -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/redcolorbicycle/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/redcolorbicycle/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/LargeCrowd/ip.git completed! -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/aureliony/ip.git... -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator analyzeRepos -INFO: [227/430] Analyzing https://github.com/LargeCrowd/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/aureliony/ip.git to complete... -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/LargeCrowd/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/LargeCrowd/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Wongqingyee/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Wongqingyee/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Anant1902/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Anant1902/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Anant1902/ip.git (master) completed! +Feb 07, 2024 1:16:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/redcolorbicycle/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/redcolorbicycle/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/redcolorbicycle/ip.git (master) completed! +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/YowSiaoKang/ip.git completed! +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [226/430] Analyzing https://github.com/YowSiaoKang/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/kaiyi27/ip.git... +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kaiyi27/ip.git to complete... +Feb 07, 2024 1:16:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Wongqingyee/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/YowSiaoKang/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/YowSiaoKang/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Wongqingyee/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Wongqingyee/ip.git (master) completed! -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/LargeCrowd/ip.git completed! +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/irwynliong/ip.git completed! -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/azumieflare/ip.git... -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [227/430] Analyzing https://github.com/LargeCrowd/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/aureliony/ip.git... +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator analyzeRepos INFO: [228/430] Analyzing https://github.com/irwynliong/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/redcolorbicycle/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/azumieflare/ip.git... +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/aureliony/ip.git to complete... +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jannaleong/ip.git completed! +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/azumieflare/ip.git to complete... -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/LargeCrowd/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/redcolorbicycle/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/redcolorbicycle/ip.git (master) completed! -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/qinboan/ip.git... +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/irwynliong/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/irwynliong/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/LargeCrowd/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/LargeCrowd/ip.git (master) completed! -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/YowSiaoKang/ip.git (master)... -Feb 06, 2024 3:23:23 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/YowSiaoKang/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jannaleong/ip.git completed! -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/YowSiaoKang/ip.git (master) completed! -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator analyzeRepos -INFO: [229/430] Analyzing https://github.com/jannaleong/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/qinboan/ip.git... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:09 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/LargeCrowd/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/LargeCrowd/ip.git (master)... +Feb 07, 2024 1:16:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/qinboan/ip.git to complete... -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yorklim/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yorklim/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yorklim/ip.git (master) completed! +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [229/430] Analyzing https://github.com/jannaleong/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jannaleong/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jannaleong/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/LargeCrowd/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/LargeCrowd/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/LargeCrowd/ip.git (master) completed! +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kaiyi27/ip.git completed! -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tengcharmaine/ip.git... -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [230/430] Analyzing https://github.com/kaiyi27/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tengcharmaine/ip.git... +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tengcharmaine/ip.git to complete... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/aureliony/ip.git completed! -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/YowSiaoKang/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kaiyi27/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kaiyi27/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/YowSiaoKang/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/YowSiaoKang/ip.git (master) completed! +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/qinboan/ip.git completed! +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [231/430] Analyzing https://github.com/qinboan/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/moguries/ip.git... -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator analyzeRepos -INFO: [231/430] Analyzing https://github.com/aureliony/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/moguries/ip.git to complete... -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/aureliony/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/aureliony/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/aureliony/ip.git completed! +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Joshy837/ip.git... +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/azumieflare/ip.git completed! +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chengjunyuan/ip.git... +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/qinboan/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/qinboan/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Joshy837/ip.git to complete... +Feb 07, 2024 1:16:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/irwynliong/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chengjunyuan/ip.git to complete... +Feb 07, 2024 1:16:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/irwynliong/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/irwynliong/ip.git (master) completed! -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/azumieflare/ip.git completed! -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Joshy837/ip.git... -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator analyzeRepos -INFO: [232/430] Analyzing https://github.com/azumieflare/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Joshy837/ip.git to complete... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/qinboan/ip.git completed! -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [232/430] Analyzing https://github.com/aureliony/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/aureliony/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/aureliony/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/qinboan/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/qinboan/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/qinboan/ip.git (master) completed! +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [233/430] Analyzing https://github.com/azumieflare/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tengcharmaine/ip.git completed! +Feb 07, 2024 1:16:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jannaleong/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ChrysanthemumT/ip.git... +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ChrysanthemumT/ip.git to complete... +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/azumieflare/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/azumieflare/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chengjunyuan/ip.git... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chengjunyuan/ip.git to complete... -Feb 06, 2024 3:23:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jannaleong/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jannaleong/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jannaleong/ip.git (master) completed! -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tengcharmaine/ip.git completed! -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator analyzeRepos -INFO: [233/430] Analyzing https://github.com/qinboan/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/moguries/ip.git completed! -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ChrysanthemumT/ip.git... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ChrysanthemumT/ip.git to complete... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/camille-readbean/ip.git... -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/qinboan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/qinboan/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kaiyi27/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/camille-readbean/ip.git to complete... -Feb 06, 2024 3:23:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kaiyi27/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kaiyi27/ip.git (master) completed! -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [234/430] Analyzing https://github.com/tengcharmaine/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/aureliony/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tengcharmaine/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tengcharmaine/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/aureliony/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/aureliony/ip.git (master) completed! -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kaiyi27/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kaiyi27/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kaiyi27/ip.git (master) completed! +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/moguries/ip.git completed! +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/camille-readbean/ip.git... +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [235/430] Analyzing https://github.com/moguries/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/qinboan/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/moguries/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/moguries/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/qinboan/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/qinboan/ip.git (master) completed! -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/camille-readbean/ip.git to complete... +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Joshy837/ip.git completed! -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chengjunyuan/ip.git completed! +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/dabzpengu/ip.git... -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/moguries/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/moguries/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/cleowenxuan/ip.git... +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/cleowenxuan/ip.git to complete... +Feb 07, 2024 1:16:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/dabzpengu/ip.git to complete... +Feb 07, 2024 1:16:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/aureliony/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/aureliony/ip.git (master)... +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/aureliony/ip.git (master) completed! +Feb 07, 2024 1:16:10 AM reposense.report.ReportGenerator analyzeRepos INFO: [236/430] Analyzing https://github.com/Joshy837/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/azumieflare/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/dabzpengu/ip.git to complete... -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Joshy837/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Joshy837/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/azumieflare/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/azumieflare/ip.git (master) completed! -Feb 06, 2024 3:23:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/moguries/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/moguries/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/moguries/ip.git (master) completed! -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chengjunyuan/ip.git completed! -Feb 06, 2024 3:23:24 PM reposense.report.ReportGenerator analyzeRepos -INFO: [237/430] Analyzing https://github.com/chengjunyuan/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/cleowenxuan/ip.git... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/camille-readbean/ip.git completed! -Feb 06, 2024 3:23:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tengcharmaine/ip.git (master)... -Feb 06, 2024 3:23:24 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/cleowenxuan/ip.git to complete... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator analyzeRepos -INFO: [238/430] Analyzing https://github.com/camille-readbean/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ziiqii/ip.git... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chengjunyuan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [237/430] Analyzing https://github.com/chengjunyuan/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ChrysanthemumT/ip.git completed! -Feb 06, 2024 3:23:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chengjunyuan/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ziiqii/ip.git to complete... -Feb 06, 2024 3:23:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/moguries/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ziiqii/ip.git... +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tengcharmaine/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/rertyy/ip.git... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tengcharmaine/ip.git (master) completed! -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator analyzeRepos -INFO: [239/430] Analyzing https://github.com/ChrysanthemumT/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/rertyy/ip.git to complete... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/camille-readbean/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/camille-readbean/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ziiqii/ip.git to complete... +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chengjunyuan/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chengjunyuan/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/moguries/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/moguries/ip.git (master) completed! +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [238/430] Analyzing https://github.com/ChrysanthemumT/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChrysanthemumT/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChrysanthemumT/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/chengjunyuan/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Joshy837/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cleowenxuan/ip.git completed! +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/camille-readbean/ip.git completed! +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/rertyy/ip.git... +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [239/430] Analyzing https://github.com/cleowenxuan/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/chengjunyuan/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/xiaorui-ui/ip.git... +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/chengjunyuan/ip.git (master) completed! -Feb 06, 2024 3:23:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Joshy837/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Joshy837/ip.git (master) completed! -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/dabzpengu/ip.git completed! -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/xiaorui-ui/ip.git... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator analyzeRepos -INFO: [240/430] Analyzing https://github.com/dabzpengu/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [240/430] Analyzing https://github.com/camille-readbean/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/xiaorui-ui/ip.git to complete... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/dabzpengu/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/dabzpengu/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/camille-readbean/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cleowenxuan/ip.git completed! -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator analyzeRepos -INFO: [241/430] Analyzing https://github.com/cleowenxuan/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/TarinPairor/ip.git... -Feb 06, 2024 3:23:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/dabzpengu/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/rertyy/ip.git to complete... +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/TarinPairor/ip.git to complete... -Feb 06, 2024 3:23:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/camille-readbean/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/camille-readbean/ip.git (master) completed! -Feb 06, 2024 3:23:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/dabzpengu/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/dabzpengu/ip.git (master) completed! -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/cleowenxuan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/cleowenxuan/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/camille-readbean/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/camille-readbean/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Joshy837/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Joshy837/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cleowenxuan/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Joshy837/ip.git (master) completed! +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [241/430] Analyzing https://github.com/dabzpengu/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cleowenxuan/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cleowenxuan/ip.git (master) completed! +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/dabzpengu/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/dabzpengu/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ChrysanthemumT/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ChrysanthemumT/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ChrysanthemumT/ip.git (master) completed! -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ziiqii/ip.git completed! -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/amanzainal/ip.git... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepos INFO: [242/430] Analyzing https://github.com/ziiqii/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/amanzainal/ip.git... +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/amanzainal/ip.git to complete... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ChrysanthemumT/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ChrysanthemumT/ip.git (master) completed! +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ziiqii/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ziiqii/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cleowenxuan/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cleowenxuan/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cleowenxuan/ip.git (master) completed! -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/rertyy/ip.git completed! -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/dabzpengu/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/camille-readbean/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/dabzpengu/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/dabzpengu/ip.git (master) completed! +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/xiaorui-ui/ip.git completed! -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator analyzeRepos -INFO: [243/430] Analyzing https://github.com/rertyy/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/TarinPairor/ip.git completed! +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/minwaiphyo/ip.git... -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Javiery3889/ip.git... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [243/430] Analyzing https://github.com/TarinPairor/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepos INFO: [244/430] Analyzing https://github.com/xiaorui-ui/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Javiery3889/ip.git... +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/camille-readbean/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/camille-readbean/ip.git (master) completed! +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/minwaiphyo/ip.git to complete... -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Javiery3889/ip.git to complete... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/xiaorui-ui/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/xiaorui-ui/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/TarinPairor/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/TarinPairor/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/rertyy/ip.git completed! +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jimseah-0116/ip.git... +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [245/430] Analyzing https://github.com/rertyy/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jimseah-0116/ip.git to complete... +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/rertyy/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/rertyy/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/amanzainal/ip.git completed! +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ziiqii/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/VatsalVitosh/ip.git... +Feb 07, 2024 1:16:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/VatsalVitosh/ip.git to complete... +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xiaorui-ui/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/TarinPairor/ip.git (master)... +Feb 07, 2024 1:16:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ziiqii/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/TarinPairor/ip.git completed! -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ziiqii/ip.git (master) completed! -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator analyzeRepos -INFO: [245/430] Analyzing https://github.com/TarinPairor/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jimseah-0116/ip.git... -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jimseah-0116/ip.git to complete... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/TarinPairor/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/TarinPairor/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xiaorui-ui/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/amanzainal/ip.git completed! -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/VatsalVitosh/ip.git... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:11 AM reposense.report.ReportGenerator analyzeRepos INFO: [246/430] Analyzing https://github.com/amanzainal/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/xiaorui-ui/ip.git (master)... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/xiaorui-ui/ip.git (master) completed! -Feb 06, 2024 3:23:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/VatsalVitosh/ip.git to complete... -Feb 06, 2024 3:23:25 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/TarinPairor/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/amanzainal/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:25 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/amanzainal/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/TarinPairor/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/TarinPairor/ip.git (master) completed! +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/minwaiphyo/ip.git completed! -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepos -INFO: [247/430] Analyzing https://github.com/minwaiphyo/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/narwhalsilent/ip.git... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Javiery3889/ip.git completed! -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/TarinPairor/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/TarinPairor/ip.git (master) completed! -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [247/430] Analyzing https://github.com/minwaiphyo/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/narwhalsilent/ip.git to complete... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Javiery3889/ip.git completed! +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator analyzeRepos INFO: [248/430] Analyzing https://github.com/Javiery3889/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ChuaZiLong/ip.git... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ChuaZiLong/ip.git to complete... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/minwaiphyo/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/minwaiphyo/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Javiery3889/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Javiery3889/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/minwaiphyo/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jimseah-0116/ip.git completed! +Feb 07, 2024 1:16:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/minwaiphyo/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/minwaiphyo/ip.git (master) completed! -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/amanzainal/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/amanzainal/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/amanzainal/ip.git (master) completed! -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/rertyy/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jimseah-0116/ip.git completed! -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Lin-Shuang-Shuang/ip.git... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator analyzeRepos INFO: [249/430] Analyzing https://github.com/jimseah-0116/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/VatsalVitosh/ip.git completed! -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/rertyy/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Lin-Shuang-Shuang/ip.git to complete... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/rertyy/ip.git (master) completed! -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/whelan-low/ip.git... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepos -INFO: [250/430] Analyzing https://github.com/VatsalVitosh/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/whelan-low/ip.git to complete... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jimseah-0116/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jimseah-0116/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/VatsalVitosh/ip.git completed! +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/whelan-low/ip.git... +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/whelan-low/ip.git to complete... +Feb 07, 2024 1:16:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/amanzainal/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/amanzainal/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/amanzainal/ip.git (master) completed! +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [250/430] Analyzing https://github.com/VatsalVitosh/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/VatsalVitosh/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/VatsalVitosh/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Javiery3889/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Javiery3889/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/VatsalVitosh/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Javiery3889/ip.git (master) completed! -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/VatsalVitosh/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/VatsalVitosh/ip.git (master) completed! -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jimseah-0116/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/narwhalsilent/ip.git completed! -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepos -INFO: [251/430] Analyzing https://github.com/narwhalsilent/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ThitipatC/ip.git... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ThitipatC/ip.git to complete... -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/rertyy/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jimseah-0116/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ThitipatC/ip.git to complete... +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jimseah-0116/ip.git (master) completed! -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [251/430] Analyzing https://github.com/narwhalsilent/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/narwhalsilent/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/narwhalsilent/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/rertyy/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/VatsalVitosh/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/rertyy/ip.git (master) completed! +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ChuaZiLong/ip.git completed! -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepos -INFO: [252/430] Analyzing https://github.com/ChuaZiLong/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/YuvBindal/ip.git... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [252/430] Analyzing https://github.com/ChuaZiLong/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/YuvBindal/ip.git to complete... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/narwhalsilent/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/narwhalsilent/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/VatsalVitosh/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/VatsalVitosh/ip.git (master) completed! +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChuaZiLong/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChuaZiLong/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ChuaZiLong/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ChuaZiLong/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Javiery3889/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Javiery3889/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Javiery3889/ip.git (master) completed! +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Lin-Shuang-Shuang/ip.git completed! +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/doyelee0313/ip.git... +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [253/430] Analyzing https://github.com/Lin-Shuang-Shuang/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/doyelee0313/ip.git to complete... +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Lin-Shuang-Shuang/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Lin-Shuang-Shuang/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/whelan-low/ip.git completed! +Feb 07, 2024 1:16:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/narwhalsilent/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ChuaZiLong/ip.git (master) completed! -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/taniatsq/ip.git... +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [254/430] Analyzing https://github.com/whelan-low/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ChuaZiLong/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/taniatsq/ip.git to complete... +Feb 07, 2024 1:16:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/narwhalsilent/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/narwhalsilent/ip.git (master) completed! -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/whelan-low/ip.git completed! -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepos -INFO: [253/430] Analyzing https://github.com/whelan-low/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/doyelee0313/ip.git... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/doyelee0313/ip.git to complete... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Lin-Shuang-Shuang/ip.git completed! -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ChuaZiLong/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/whelan-low/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/whelan-low/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepos -INFO: [254/430] Analyzing https://github.com/Lin-Shuang-Shuang/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/taniatsq/ip.git... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/taniatsq/ip.git to complete... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Lin-Shuang-Shuang/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Lin-Shuang-Shuang/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/whelan-low/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/whelan-low/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/whelan-low/ip.git (master) completed! -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/YuvBindal/ip.git completed! -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepos -INFO: [255/430] Analyzing https://github.com/YuvBindal/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Rikko1204/ip.git... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ChuaZiLong/ip.git (master) completed! +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ThitipatC/ip.git completed! -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Rikko1204/ip.git... +Feb 07, 2024 1:16:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [255/430] Analyzing https://github.com/ThitipatC/ip.git (master)... +Feb 07, 2024 1:16:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Rikko1204/ip.git to complete... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepos -INFO: [256/430] Analyzing https://github.com/ThitipatC/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Yskie/ip.git... -Feb 06, 2024 3:23:26 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Yskie/ip.git to complete... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/YuvBindal/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/YuvBindal/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Lin-Shuang-Shuang/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ThitipatC/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:26 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ThitipatC/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/whelan-low/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Lin-Shuang-Shuang/ip.git (master)... -Feb 06, 2024 3:23:26 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Lin-Shuang-Shuang/ip.git (master) completed! -Feb 06, 2024 3:23:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/YuvBindal/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/YuvBindal/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/YuvBindal/ip.git (master) completed! -Feb 06, 2024 3:23:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ThitipatC/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ThitipatC/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ThitipatC/ip.git (master) completed! -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/taniatsq/ip.git completed! -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/YuvBindal/ip.git completed! +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Yskie/ip.git... +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [256/430] Analyzing https://github.com/YuvBindal/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/whelan-low/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/whelan-low/ip.git (master) completed! +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Yskie/ip.git to complete... +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/YuvBindal/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/YuvBindal/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/doyelee0313/ip.git completed! -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator analyzeRepos -INFO: [257/430] Analyzing https://github.com/taniatsq/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [257/430] Analyzing https://github.com/doyelee0313/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Fidget-Spinner/ip.git... -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Fidget-Spinner/ip.git to complete... -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator analyzeRepos -INFO: [258/430] Analyzing https://github.com/doyelee0313/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/doyelee0313/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/doyelee0313/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ThitipatC/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/taniatsq/ip.git completed! +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/FangRuoqing/ip.git... -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [258/430] Analyzing https://github.com/taniatsq/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/FangRuoqing/ip.git to complete... -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ThitipatC/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ThitipatC/ip.git (master) completed! +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/taniatsq/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/taniatsq/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/doyelee0313/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/doyelee0313/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Yskie/ip.git completed! -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator analyzeRepos -INFO: [259/430] Analyzing https://github.com/Yskie/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/YuvBindal/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/YuvBindal/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/YuvBindal/ip.git (master) completed! +Feb 07, 2024 1:16:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/doyelee0313/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/doyelee0313/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/doyelee0313/ip.git (master) completed! +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Rikko1204/ip.git completed! +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [259/430] Analyzing https://github.com/Rikko1204/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zhuuyicheng/ip.git... -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Yskie/ip.git completed! +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zhuuyicheng/ip.git to complete... -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Rikko1204/ip.git completed! -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Yskie/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Yskie/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator analyzeRepos -INFO: [260/430] Analyzing https://github.com/Rikko1204/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [260/430] Analyzing https://github.com/Yskie/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/smolegz/ip.git... -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/smolegz/ip.git to complete... -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Rikko1204/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/doyelee0313/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Rikko1204/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/doyelee0313/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/doyelee0313/ip.git (master) completed! -Feb 06, 2024 3:23:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/taniatsq/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Yskie/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Yskie/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/taniatsq/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/taniatsq/ip.git (master) completed! -Feb 06, 2024 3:23:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Yskie/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Yskie/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Yskie/ip.git (master) completed! -Feb 06, 2024 3:23:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Rikko1204/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Fidget-Spinner/ip.git completed! -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/FangRuoqing/ip.git completed! -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jinhanfromNUS/ip.git... -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepos INFO: [261/430] Analyzing https://github.com/Fidget-Spinner/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Rikko1204/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator analyzeRepos -INFO: [262/430] Analyzing https://github.com/FangRuoqing/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jinhanfromNUS/ip.git... +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jinhanfromNUS/ip.git to complete... +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Fidget-Spinner/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Fidget-Spinner/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/FangRuoqing/ip.git completed! +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/0nesheep/ip.git... -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Rikko1204/ip.git (master) completed! -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [262/430] Analyzing https://github.com/FangRuoqing/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/0nesheep/ip.git to complete... -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jinhanfromNUS/ip.git to complete... -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/FangRuoqing/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/FangRuoqing/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Fidget-Spinner/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Fidget-Spinner/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Yskie/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Rikko1204/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Yskie/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Yskie/ip.git (master) completed! +Feb 07, 2024 1:16:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Rikko1204/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Rikko1204/ip.git (master) completed! +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/zhuuyicheng/ip.git completed! -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepos INFO: [263/430] Analyzing https://github.com/zhuuyicheng/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AdityaB4/ip.git... -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AdityaB4/ip.git to complete... -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/smolegz/ip.git completed! -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/HM33-Stu/ip.git... -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator analyzeRepos -INFO: [264/430] Analyzing https://github.com/smolegz/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/FangRuoqing/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/zhuuyicheng/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/zhuuyicheng/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/FangRuoqing/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/FangRuoqing/ip.git (master) completed! +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/smolegz/ip.git completed! +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [264/430] Analyzing https://github.com/smolegz/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/HM33-Stu/ip.git... +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/HM33-Stu/ip.git to complete... -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/smolegz/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/smolegz/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/FangRuoqing/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/FangRuoqing/ip.git (master)... -Feb 06, 2024 3:23:27 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/FangRuoqing/ip.git (master) completed! -Feb 06, 2024 3:23:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Fidget-Spinner/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Fidget-Spinner/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Fidget-Spinner/ip.git (master) completed! -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jinhanfromNUS/ip.git completed! -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepos -INFO: [265/430] Analyzing https://github.com/jinhanfromNUS/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yap-zong-xin/ip.git... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [265/430] Analyzing https://github.com/jinhanfromNUS/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yap-zong-xin/ip.git to complete... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Fidget-Spinner/ip.git (master)... +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Fidget-Spinner/ip.git (master) completed! +Feb 07, 2024 1:16:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jinhanfromNUS/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jinhanfromNUS/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/smolegz/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/smolegz/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/smolegz/ip.git (master) completed! -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zhuuyicheng/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/0nesheep/ip.git completed! -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [266/430] Analyzing https://github.com/0nesheep/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jocelyn-soh/ip.git... -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zhuuyicheng/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jocelyn-soh/ip.git to complete... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zhuuyicheng/ip.git (master) completed! -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/0nesheep/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/0nesheep/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zhuuyicheng/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AdityaB4/ip.git completed! -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepos -INFO: [267/430] Analyzing https://github.com/AdityaB4/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/felixchanyy/ip.git... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zhuuyicheng/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/felixchanyy/ip.git to complete... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/HM33-Stu/ip.git completed! -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zhuuyicheng/ip.git (master) completed! +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [267/430] Analyzing https://github.com/AdityaB4/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jinhanfromNUS/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AdityaB4/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AdityaB4/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/smolegz/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jinhanfromNUS/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jinhanfromNUS/ip.git (master) completed! +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/smolegz/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/HM33-Stu/ip.git completed! +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/smolegz/ip.git (master) completed! +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [268/430] Analyzing https://github.com/HM33-Stu/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/donwong2308/ip.git... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/donwong2308/ip.git to complete... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/HM33-Stu/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/HM33-Stu/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/0nesheep/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jinhanfromNUS/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jinhanfromNUS/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jinhanfromNUS/ip.git (master) completed! -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/0nesheep/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/0nesheep/ip.git (master) completed! -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/HM33-Stu/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/HM33-Stu/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/HM33-Stu/ip.git (master) completed! -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AdityaB4/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AdityaB4/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AdityaB4/ip.git (master) completed! -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yap-zong-xin/ip.git completed! -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/HM33-Stu/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [269/430] Analyzing https://github.com/yap-zong-xin/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/minreiseah/ip.git... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/minreiseah/ip.git to complete... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/HM33-Stu/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/HM33-Stu/ip.git (master) completed! +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yap-zong-xin/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yap-zong-xin/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/0nesheep/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/0nesheep/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/0nesheep/ip.git (master) completed! +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AdityaB4/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AdityaB4/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AdityaB4/ip.git (master) completed! +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jocelyn-soh/ip.git completed! -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [270/430] Analyzing https://github.com/jocelyn-soh/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Pluiexo/ip.git... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Pluiexo/ip.git to complete... -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jocelyn-soh/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jocelyn-soh/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yap-zong-xin/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yap-zong-xin/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yap-zong-xin/ip.git (master) completed! +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/felixchanyy/ip.git completed! -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [271/430] Analyzing https://github.com/felixchanyy/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Emberlynn-Loo/ip.git... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jocelyn-soh/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jocelyn-soh/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yap-zong-xin/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Emberlynn-Loo/ip.git to complete... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yap-zong-xin/ip.git (master) completed! -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/felixchanyy/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/felixchanyy/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jocelyn-soh/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jocelyn-soh/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jocelyn-soh/ip.git (master) completed! +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/donwong2308/ip.git completed! -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [272/430] Analyzing https://github.com/donwong2308/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/DhiraPT/ip.git... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/DhiraPT/ip.git to complete... -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jocelyn-soh/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/donwong2308/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/donwong2308/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jocelyn-soh/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jocelyn-soh/ip.git (master) completed! -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/felixchanyy/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/felixchanyy/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/felixchanyy/ip.git (master) completed! -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/donwong2308/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/donwong2308/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/donwong2308/ip.git (master) completed! -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/minreiseah/ip.git completed! -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/felixchanyy/ip.git (master) completed! +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [273/430] Analyzing https://github.com/minreiseah/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/howen02/ip.git... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/howen02/ip.git to complete... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/donwong2308/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/minreiseah/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/minreiseah/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/donwong2308/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/donwong2308/ip.git (master) completed! +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/minreiseah/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/minreiseah/ip.git (master)... +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/minreiseah/ip.git (master) completed! +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Emberlynn-Loo/ip.git completed! -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/shunjieee/ip.git... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [274/430] Analyzing https://github.com/Emberlynn-Loo/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/shunjieee/ip.git... +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/shunjieee/ip.git to complete... -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Emberlynn-Loo/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Emberlynn-Loo/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Pluiexo/ip.git completed! -Feb 06, 2024 3:23:28 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [275/430] Analyzing https://github.com/Pluiexo/ip.git (master)... -Feb 06, 2024 3:23:28 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nigel27022001/ip.git... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nigel27022001/ip.git to complete... -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/minreiseah/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/minreiseah/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/minreiseah/ip.git (master) completed! -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Emberlynn-Loo/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Emberlynn-Loo/ip.git (master)... +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Pluiexo/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Pluiexo/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Emberlynn-Loo/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Emberlynn-Loo/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Emberlynn-Loo/ip.git (master) completed! -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/DhiraPT/ip.git completed! -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator analyzeRepos INFO: [276/430] Analyzing https://github.com/DhiraPT/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shayaansultan/ip.git... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/shayaansultan/ip.git to complete... -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/DhiraPT/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/DhiraPT/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Pluiexo/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Emberlynn-Loo/ip.git (master)... +Feb 07, 2024 1:16:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Emberlynn-Loo/ip.git (master)... +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Emberlynn-Loo/ip.git (master) completed! +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/howen02/ip.git completed! -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/mahadhir247/ip.git... -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator analyzeRepos INFO: [277/430] Analyzing https://github.com/howen02/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Pluiexo/ip.git (master)... +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/mahadhir247/ip.git to complete... -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Pluiexo/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Pluiexo/ip.git (master) completed! -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/howen02/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/howen02/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Pluiexo/ip.git (master)... +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Pluiexo/ip.git (master) completed! +Feb 07, 2024 1:16:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/DhiraPT/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/DhiraPT/ip.git (master)... +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/DhiraPT/ip.git (master) completed! +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/nigel27022001/ip.git completed! -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator analyzeRepos INFO: [278/430] Analyzing https://github.com/nigel27022001/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/GiselleTan/ip.git... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/GiselleTan/ip.git to complete... -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/DhiraPT/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/DhiraPT/ip.git (master) completed! -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shunjieee/ip.git completed! +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/lihaoquan/ip.git... +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [279/430] Analyzing https://github.com/shunjieee/ip.git (master)... +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/lihaoquan/ip.git to complete... +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nigel27022001/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nigel27022001/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/shayaansultan/ip.git completed! -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator analyzeRepos -INFO: [279/430] Analyzing https://github.com/shayaansultan/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/lihaoquan/ip.git... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/lihaoquan/ip.git to complete... -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shayaansultan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shayaansultan/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shunjieee/ip.git completed! -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator analyzeRepos -INFO: [280/430] Analyzing https://github.com/shunjieee/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [280/430] Analyzing https://github.com/shayaansultan/ip.git (master)... +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/PallonCX/ip.git... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/PallonCX/ip.git to complete... -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/shunjieee/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/shunjieee/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/PallonCX/ip.git to complete... +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shayaansultan/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shayaansultan/ip.git (master)... +Feb 07, 2024 1:16:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shunjieee/ip.git (master)... +Feb 07, 2024 1:16:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shunjieee/ip.git (master)... +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shunjieee/ip.git (master) completed! +Feb 07, 2024 1:16:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/howen02/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/howen02/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/mahadhir247/ip.git completed! -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/howen02/ip.git (master) completed! -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/yadunut/ip.git... -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator analyzeRepos INFO: [281/430] Analyzing https://github.com/mahadhir247/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/yadunut/ip.git... +Feb 07, 2024 1:16:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/howen02/ip.git (master)... +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/howen02/ip.git (master) completed! +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yadunut/ip.git to complete... -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shayaansultan/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nigel27022001/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/mahadhir247/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/mahadhir247/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shayaansultan/ip.git (master)... +Feb 07, 2024 1:16:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/shayaansultan/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/shayaansultan/ip.git (master) completed! -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nigel27022001/ip.git (master)... +Feb 07, 2024 1:16:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nigel27022001/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nigel27022001/ip.git (master) completed! -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shunjieee/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shunjieee/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shunjieee/ip.git (master) completed! -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/GiselleTan/ip.git completed! -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator analyzeRepos -INFO: [282/430] Analyzing https://github.com/GiselleTan/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/lihaoquan/ip.git completed! +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [282/430] Analyzing https://github.com/lihaoquan/ip.git (master)... +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yiwern5/ip.git... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yiwern5/ip.git to complete... -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/GiselleTan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/GiselleTan/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/GiselleTan/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/GiselleTan/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/GiselleTan/ip.git (master) completed! -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/lihaoquan/ip.git completed! -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator analyzeRepos -INFO: [283/430] Analyzing https://github.com/lihaoquan/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/GiselleTan/ip.git completed! +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/saiutkarsh33/ip.git... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [283/430] Analyzing https://github.com/GiselleTan/ip.git (master)... +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/saiutkarsh33/ip.git to complete... -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/lihaoquan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:29 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/lihaoquan/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/GiselleTan/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/GiselleTan/ip.git (master)... +Feb 07, 2024 1:16:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/mahadhir247/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/mahadhir247/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/mahadhir247/ip.git (master) completed! -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/PallonCX/ip.git completed! -Feb 06, 2024 3:23:29 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator analyzeRepos INFO: [284/430] Analyzing https://github.com/PallonCX/ip.git (master)... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Dexter-Wong/ip.git... -Feb 06, 2024 3:23:29 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/GiselleTan/ip.git (master)... +Feb 07, 2024 1:16:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Dexter-Wong/ip.git to complete... -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/GiselleTan/ip.git (master)... +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/GiselleTan/ip.git (master) completed! +Feb 07, 2024 1:16:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/PallonCX/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/PallonCX/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/lihaoquan/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/lihaoquan/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/lihaoquan/ip.git (master) completed! -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yadunut/ip.git completed! -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [285/430] Analyzing https://github.com/yadunut/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/h4ow3i/ip.git... -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/h4ow3i/ip.git to complete... -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/lihaoquan/ip.git (master)... +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/lihaoquan/ip.git (master) completed! +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yadunut/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yadunut/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/PallonCX/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/PallonCX/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/PallonCX/ip.git (master) completed! -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/saiutkarsh33/ip.git completed! -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Derekljh/ip.git... -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [286/430] Analyzing https://github.com/saiutkarsh33/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Derekljh/ip.git... +Feb 07, 2024 1:16:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/PallonCX/ip.git (master)... +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Derekljh/ip.git to complete... -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/saiutkarsh33/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/saiutkarsh33/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/PallonCX/ip.git (master)... +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/PallonCX/ip.git (master) completed! +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Dexter-Wong/ip.git completed! -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yadunut/ip.git (master)... +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jayne1010/ip.git... -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [287/430] Analyzing https://github.com/Dexter-Wong/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Jayne1010/ip.git to complete... -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Dexter-Wong/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Dexter-Wong/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yadunut/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yadunut/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yadunut/ip.git (master) completed! -Feb 06, 2024 3:23:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/saiutkarsh33/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yadunut/ip.git (master) completed! +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Dexter-Wong/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Dexter-Wong/ip.git (master)... +Feb 07, 2024 1:16:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/saiutkarsh33/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/saiutkarsh33/ip.git (master) completed! -Feb 06, 2024 3:23:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Dexter-Wong/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Dexter-Wong/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Dexter-Wong/ip.git (master) completed! -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/h4ow3i/ip.git completed! -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [288/430] Analyzing https://github.com/h4ow3i/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/officialchengyud/ip.git... -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/officialchengyud/ip.git to complete... -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/h4ow3i/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/h4ow3i/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yiwern5/ip.git completed! -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [289/430] Analyzing https://github.com/yiwern5/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chenyixin0/ip.git... -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chenyixin0/ip.git to complete... -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Dexter-Wong/ip.git (master)... +Feb 07, 2024 1:16:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Dexter-Wong/ip.git (master)... +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Dexter-Wong/ip.git (master) completed! +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yiwern5/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yiwern5/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Derekljh/ip.git completed! -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [290/430] Analyzing https://github.com/Derekljh/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shavonneg/ip.git... -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/shavonneg/ip.git to complete... -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Derekljh/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Derekljh/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Jayne1010/ip.git completed! -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/caitlyntang/ip.git... -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator analyzeRepos -INFO: [291/430] Analyzing https://github.com/Jayne1010/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/caitlyntang/ip.git to complete... -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Jayne1010/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:30 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Jayne1010/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/h4ow3i/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/h4ow3i/ip.git (master)... -Feb 06, 2024 3:23:30 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/h4ow3i/ip.git (master) completed! -Feb 06, 2024 3:23:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Derekljh/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Derekljh/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Derekljh/ip.git (master) completed! -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/officialchengyud/ip.git completed! -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [291/430] Analyzing https://github.com/officialchengyud/ip.git (master)... +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/caitlyntang/ip.git... +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/caitlyntang/ip.git to complete... +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/officialchengyud/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/officialchengyud/ip.git (master)... +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chenyixin0/ip.git completed! +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/getsquared/ip.git... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepos -INFO: [292/430] Analyzing https://github.com/officialchengyud/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:16 AM reposense.report.ReportGenerator analyzeRepos +INFO: [292/430] Analyzing https://github.com/chenyixin0/ip.git (master)... +Feb 07, 2024 1:16:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/getsquared/ip.git to complete... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chenyixin0/ip.git completed! -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepos -INFO: [293/430] Analyzing https://github.com/chenyixin0/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Jayne1010/ip.git completed! +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [293/430] Analyzing https://github.com/Jayne1010/ip.git (master)... +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ashleyy2444/ip.git... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/officialchengyud/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/officialchengyud/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ashleyy2444/ip.git to complete... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chenyixin0/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chenyixin0/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Jayne1010/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Jayne1010/ip.git (master)... +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/shavonneg/ip.git completed! -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/zhekaiii/ip.git... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/zhekaiii/ip.git to complete... -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jayne1010/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Jayne1010/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Jayne1010/ip.git (master) completed! -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepos -INFO: [294/430] Analyzing https://github.com/shavonneg/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shavonneg/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shavonneg/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/caitlyntang/ip.git completed! -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yiwern5/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/johnyoozhengxian/ip.git... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/johnyoozhengxian/ip.git to complete... -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/yiwern5/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yiwern5/ip.git (master) completed! -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepos -INFO: [295/430] Analyzing https://github.com/caitlyntang/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [294/430] Analyzing https://github.com/shavonneg/ip.git (master)... +Feb 07, 2024 1:16:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/officialchengyud/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/caitlyntang/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/caitlyntang/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chenyixin0/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shavonneg/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shavonneg/ip.git (master)... +Feb 07, 2024 1:16:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/officialchengyud/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/officialchengyud/ip.git (master) completed! -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chenyixin0/ip.git (master)... +Feb 07, 2024 1:16:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/chenyixin0/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/chenyixin0/ip.git (master) completed! -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/getsquared/ip.git completed! -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepos -INFO: [296/430] Analyzing https://github.com/getsquared/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/meenulekha/ip.git... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/meenulekha/ip.git to complete... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/getsquared/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/getsquared/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jayne1010/ip.git (master)... +Feb 07, 2024 1:16:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Jayne1010/ip.git (master)... +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Jayne1010/ip.git (master) completed! +Feb 07, 2024 1:16:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/shavonneg/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/shavonneg/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/shavonneg/ip.git (master) completed! -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/caitlyntang/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/caitlyntang/ip.git completed! +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [295/430] Analyzing https://github.com/caitlyntang/ip.git (master)... +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/johnyoozhengxian/ip.git... +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/johnyoozhengxian/ip.git to complete... +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ashleyy2444/ip.git completed! -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepos -INFO: [297/430] Analyzing https://github.com/ashleyy2444/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Li-Zizhen/ip.git... -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/caitlyntang/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/caitlyntang/ip.git (master) completed! -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Li-Zizhen/ip.git to complete... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [296/430] Analyzing https://github.com/ashleyy2444/ip.git (master)... +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/meenulekha/ip.git... +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/meenulekha/ip.git to complete... +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/caitlyntang/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/caitlyntang/ip.git (master)... +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ashleyy2444/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ashleyy2444/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/getsquared/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/caitlyntang/ip.git (master)... +Feb 07, 2024 1:16:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/caitlyntang/ip.git (master)... +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/caitlyntang/ip.git (master) completed! +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/zhekaiii/ip.git completed! +Feb 07, 2024 1:16:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ashleyy2444/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/getsquared/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/getsquared/ip.git (master) completed! -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [297/430] Analyzing https://github.com/zhekaiii/ip.git (master)... +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Li-Zizhen/ip.git... +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Li-Zizhen/ip.git to complete... +Feb 07, 2024 1:16:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ashleyy2444/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/johnyoozhengxian/ip.git completed! -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ashleyy2444/ip.git (master) completed! -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/zhekaiii/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/zhekaiii/ip.git (master)... +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/johnyoozhengxian/ip.git completed! +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator analyzeRepos INFO: [298/430] Analyzing https://github.com/johnyoozhengxian/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SimHanKiong/ip.git... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SimHanKiong/ip.git to complete... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/zhekaiii/ip.git (master)... +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/meenulekha/ip.git completed! +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/johnyoozhengxian/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/johnyoozhengxian/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/johnyoozhengxian/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/johnyoozhengxian/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/johnyoozhengxian/ip.git (master) completed! -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/meenulekha/ip.git completed! -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator analyzeRepos INFO: [299/430] Analyzing https://github.com/meenulekha/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/JuliaPoo/ip.git... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/zhekaiii/ip.git (master)... +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/zhekaiii/ip.git (master) completed! +Feb 07, 2024 1:16:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JuliaPoo/ip.git to complete... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/meenulekha/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/meenulekha/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/johnyoozhengxian/ip.git (master)... +Feb 07, 2024 1:16:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/johnyoozhengxian/ip.git (master)... +Feb 07, 2024 1:16:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/johnyoozhengxian/ip.git (master) completed! +Feb 07, 2024 1:16:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/meenulekha/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Li-Zizhen/ip.git completed! -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepos INFO: [300/430] Analyzing https://github.com/Li-Zizhen/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/vannykin/ip.git... -Feb 06, 2024 3:23:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/vannykin/ip.git to complete... -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/meenulekha/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/meenulekha/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/vannykin/ip.git to complete... +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/meenulekha/ip.git (master) completed! +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Li-Zizhen/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Li-Zizhen/ip.git (master)... -Feb 06, 2024 3:23:31 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/meenulekha/ip.git (master) completed! -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SimHanKiong/ip.git completed! -Feb 06, 2024 3:23:32 PM reposense.report.ReportGenerator analyzeRepos -INFO: [301/430] Analyzing https://github.com/SimHanKiong/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/getsquared/ip.git completed! +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [301/430] Analyzing https://github.com/getsquared/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/teojunda/ip.git... -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/teojunda/ip.git to complete... -Feb 06, 2024 3:23:32 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SimHanKiong/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SimHanKiong/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/getsquared/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/getsquared/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Li-Zizhen/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Li-Zizhen/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Li-Zizhen/ip.git (master) completed! -Feb 06, 2024 3:23:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SimHanKiong/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SimHanKiong/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SimHanKiong/ip.git (master) completed! -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/vannykin/ip.git completed! -Feb 06, 2024 3:23:32 PM reposense.report.ReportGenerator analyzeRepos -INFO: [302/430] Analyzing https://github.com/vannykin/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SimHanKiong/ip.git completed! +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Ko-Khan/ip.git... -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [302/430] Analyzing https://github.com/SimHanKiong/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Ko-Khan/ip.git to complete... -Feb 06, 2024 3:23:32 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/vannykin/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/vannykin/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SimHanKiong/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SimHanKiong/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/getsquared/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/getsquared/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/getsquared/ip.git (master) completed! +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/JuliaPoo/ip.git completed! -Feb 06, 2024 3:23:32 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepos INFO: [303/430] Analyzing https://github.com/JuliaPoo/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jyztintan/ip.git... -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jyztintan/ip.git to complete... -Feb 06, 2024 3:23:32 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JuliaPoo/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JuliaPoo/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/vannykin/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/vannykin/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/vannykin/ip.git (master) completed! -Feb 06, 2024 3:23:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JuliaPoo/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JuliaPoo/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JuliaPoo/ip.git (master) completed! -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/zhekaiii/ip.git completed! -Feb 06, 2024 3:23:32 PM reposense.report.ReportGenerator analyzeRepos -INFO: [304/430] Analyzing https://github.com/zhekaiii/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/vannykin/ip.git completed! +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jasperng-nus/ip.git... -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [304/430] Analyzing https://github.com/vannykin/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jasperng-nus/ip.git to complete... -Feb 06, 2024 3:23:32 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/zhekaiii/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/zhekaiii/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/vannykin/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/vannykin/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/teojunda/ip.git completed! -Feb 06, 2024 3:23:32 PM reposense.report.ReportGenerator analyzeRepos -INFO: [305/430] Analyzing https://github.com/teojunda/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/delishad21/ip.git... -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [305/430] Analyzing https://github.com/teojunda/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/delishad21/ip.git to complete... -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Ko-Khan/ip.git completed! -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/IamZhenHong/ip.git... -Feb 06, 2024 3:23:32 PM reposense.report.ReportGenerator analyzeRepos -INFO: [306/430] Analyzing https://github.com/Ko-Khan/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/teojunda/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/teojunda/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SimHanKiong/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/vannykin/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/vannykin/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/vannykin/ip.git (master) completed! +Feb 07, 2024 1:16:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SimHanKiong/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SimHanKiong/ip.git (master) completed! +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Ko-Khan/ip.git completed! +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [306/430] Analyzing https://github.com/Ko-Khan/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/IamZhenHong/ip.git... +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/IamZhenHong/ip.git to complete... -Feb 06, 2024 3:23:32 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JuliaPoo/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Ko-Khan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Ko-Khan/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JuliaPoo/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JuliaPoo/ip.git (master) completed! +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jyztintan/ip.git completed! -Feb 06, 2024 3:23:32 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepos INFO: [307/430] Analyzing https://github.com/jyztintan/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/shamesjen/ip.git... -Feb 06, 2024 3:23:32 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/shamesjen/ip.git to complete... -Feb 06, 2024 3:23:32 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jyztintan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jyztintan/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/teojunda/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Ko-Khan/ip.git (master)... -Feb 06, 2024 3:23:32 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/zhekaiii/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/zhekaiii/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/zhekaiii/ip.git (master) completed! -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jasperng-nus/ip.git completed! -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/teojunda/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/teojunda/ip.git (master) completed! +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [308/430] Analyzing https://github.com/jasperng-nus/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Ma-Yirui/ip.git... +Feb 07, 2024 1:16:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Ko-Khan/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Ko-Khan/ip.git (master) completed! -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Ma-Yirui/ip.git... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepos -INFO: [308/430] Analyzing https://github.com/jasperng-nus/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/teojunda/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Ma-Yirui/ip.git to complete... -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jyztintan/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jasperng-nus/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jasperng-nus/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/teojunda/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/teojunda/ip.git (master) completed! -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jasperng-nus/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jasperng-nus/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jyztintan/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jasperng-nus/ip.git (master) completed! +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/delishad21/ip.git completed! -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jyztintan/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jyztintan/ip.git (master) completed! -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepos INFO: [309/430] Analyzing https://github.com/delishad21/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/timothysashimi/ip.git... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/timothysashimi/ip.git to complete... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jyztintan/ip.git (master)... +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jyztintan/ip.git (master) completed! +Feb 07, 2024 1:16:18 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/delishad21/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/delishad21/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jasperng-nus/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jasperng-nus/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jasperng-nus/ip.git (master) completed! -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/IamZhenHong/ip.git completed! -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Xilef121/ip.git... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator analyzeRepos INFO: [310/430] Analyzing https://github.com/IamZhenHong/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Xilef121/ip.git... +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Xilef121/ip.git to complete... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/shamesjen/ip.git completed! -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/IamZhenHong/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/IamZhenHong/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/shamesjen/ip.git completed! +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator analyzeRepos INFO: [311/430] Analyzing https://github.com/shamesjen/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SamuelZero1/ip.git... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SamuelZero1/ip.git to complete... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/shamesjen/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/shamesjen/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/IamZhenHong/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SamuelZero1/ip.git to complete... +Feb 07, 2024 1:16:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/IamZhenHong/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/IamZhenHong/ip.git (master) completed! -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/delishad21/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Ma-Yirui/ip.git completed! -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/delishad21/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/shamesjen/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/shamesjen/ip.git (master)... +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator analyzeRepos INFO: [312/430] Analyzing https://github.com/Ma-Yirui/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/swtan346/ip.git... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/delishad21/ip.git (master) completed! -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/shamesjen/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/swtan346/ip.git to complete... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Ma-Yirui/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Ma-Yirui/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shamesjen/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shamesjen/ip.git (master) completed! -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/delishad21/ip.git (master)... +Feb 07, 2024 1:16:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/delishad21/ip.git (master)... +Feb 07, 2024 1:16:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Ma-Yirui/ip.git (master)... +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/delishad21/ip.git (master) completed! +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/timothysashimi/ip.git completed! -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator analyzeRepos INFO: [313/430] Analyzing https://github.com/timothysashimi/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/faaheem13/ip.git... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Ma-Yirui/ip.git (master)... +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Ma-Yirui/ip.git (master) completed! +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/faaheem13/ip.git to complete... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/timothysashimi/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/timothysashimi/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Ma-Yirui/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Ma-Yirui/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Ma-Yirui/ip.git (master) completed! -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/shamesjen/ip.git (master)... +Feb 07, 2024 1:16:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shamesjen/ip.git (master)... +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shamesjen/ip.git (master) completed! +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Xilef121/ip.git completed! -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator analyzeRepos INFO: [314/430] Analyzing https://github.com/Xilef121/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ChenXy128/ip.git... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ChenXy128/ip.git to complete... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/SamuelZero1/ip.git completed! -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepos -INFO: [315/430] Analyzing https://github.com/SamuelZero1/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Arixeyeion/ip.git... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Xilef121/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Xilef121/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Arixeyeion/ip.git to complete... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/SamuelZero1/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/SamuelZero1/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Xilef121/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/SamuelZero1/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Xilef121/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Xilef121/ip.git (master) completed! -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/SamuelZero1/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/SamuelZero1/ip.git (master) completed! -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/timothysashimi/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/timothysashimi/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/timothysashimi/ip.git (master) completed! -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/swtan346/ip.git completed! -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepos -INFO: [316/430] Analyzing https://github.com/swtan346/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Darylgolden/ip.git... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Darylgolden/ip.git to complete... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [315/430] Analyzing https://github.com/swtan346/ip.git (master)... +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Arixeyeion/ip.git... +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Arixeyeion/ip.git to complete... +Feb 07, 2024 1:16:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Xilef121/ip.git (master)... +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/swtan346/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/swtan346/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Xilef121/ip.git (master)... +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Xilef121/ip.git (master) completed! +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/faaheem13/ip.git completed! -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator analyzeRepos -INFO: [317/430] Analyzing https://github.com/faaheem13/ip.git (master)... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tankh99/ip.git... -Feb 06, 2024 3:23:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tankh99/ip.git to complete... -Feb 06, 2024 3:23:33 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [316/430] Analyzing https://github.com/faaheem13/ip.git (master)... +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Darylgolden/ip.git... +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Darylgolden/ip.git to complete... +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/faaheem13/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/faaheem13/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/swtan346/ip.git (master)... +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ChenXy128/ip.git completed! -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Tsenrae/ip.git... -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator analyzeRepos -INFO: [318/430] Analyzing https://github.com/ChenXy128/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Tsenrae/ip.git to complete... -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/swtan346/ip.git (master)... +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/swtan346/ip.git (master) completed! +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tankh99/ip.git... +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator analyzeRepos +INFO: [317/430] Analyzing https://github.com/ChenXy128/ip.git (master)... +Feb 07, 2024 1:16:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tankh99/ip.git to complete... +Feb 07, 2024 1:16:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/faaheem13/ip.git (master)... +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ChenXy128/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ChenXy128/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Arixeyeion/ip.git completed! -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator analyzeRepos -INFO: [319/430] Analyzing https://github.com/Arixeyeion/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/starsia/ip.git... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/starsia/ip.git to complete... -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Arixeyeion/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Arixeyeion/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/faaheem13/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/faaheem13/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/faaheem13/ip.git (master) completed! -Feb 06, 2024 3:23:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/swtan346/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/swtan346/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/swtan346/ip.git (master) completed! -Feb 06, 2024 3:23:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ChenXy128/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ChenXy128/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:19 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ChenXy128/ip.git (master) completed! -Feb 06, 2024 3:23:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Arixeyeion/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Arixeyeion/ip.git completed! +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [318/430] Analyzing https://github.com/Arixeyeion/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Tsenrae/ip.git... +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Tsenrae/ip.git to complete... +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Arixeyeion/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Arixeyeion/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Darylgolden/ip.git completed! -Feb 06, 2024 3:23:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [319/430] Analyzing https://github.com/Darylgolden/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/starsia/ip.git... +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/starsia/ip.git to complete... +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Darylgolden/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Darylgolden/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Arixeyeion/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Arixeyeion/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator analyzeRepos -INFO: [320/430] Analyzing https://github.com/Darylgolden/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Arixeyeion/ip.git (master) completed! +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tankh99/ip.git completed! +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [320/430] Analyzing https://github.com/tankh99/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/hjungwoo01/ip.git... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/hjungwoo01/ip.git to complete... -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Arixeyeion/ip.git (master) completed! -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Darylgolden/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Darylgolden/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/tankh99/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/tankh99/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Darylgolden/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Darylgolden/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Darylgolden/ip.git (master) completed! +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Tsenrae/ip.git completed! -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/YuSoonZ/ip.git... -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator analyzeRepos INFO: [321/430] Analyzing https://github.com/Tsenrae/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/YuSoonZ/ip.git... +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/YuSoonZ/ip.git to complete... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Tsenrae/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Tsenrae/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/starsia/ip.git completed! -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator analyzeRepos INFO: [322/430] Analyzing https://github.com/starsia/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Darkarche3/ip.git... -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Tsenrae/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Tsenrae/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Darkarche3/ip.git to complete... -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/SamuelZero1/ip.git completed! +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Vision-2000/ip.git... +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [323/430] Analyzing https://github.com/SamuelZero1/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/starsia/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/starsia/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tankh99/ip.git completed! -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator analyzeRepos -INFO: [323/430] Analyzing https://github.com/tankh99/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Vision-2000/ip.git... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Vision-2000/ip.git to complete... -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/tankh99/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/tankh99/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Darylgolden/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/SamuelZero1/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/SamuelZero1/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tankh99/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Tsenrae/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Tsenrae/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tankh99/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Tsenrae/ip.git (master) completed! +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tankh99/ip.git (master) completed! +Feb 07, 2024 1:16:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/starsia/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Darylgolden/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Darylgolden/ip.git (master) completed! -Feb 06, 2024 3:23:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/starsia/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/starsia/ip.git (master) completed! -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/SamuelZero1/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/SamuelZero1/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/SamuelZero1/ip.git (master) completed! +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/hjungwoo01/ip.git completed! -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator analyzeRepos INFO: [324/430] Analyzing https://github.com/hjungwoo01/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chiageng/ip.git... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chiageng/ip.git to complete... -Feb 06, 2024 3:23:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Tsenrae/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/hjungwoo01/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/hjungwoo01/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Tsenrae/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Tsenrae/ip.git (master) completed! -Feb 06, 2024 3:23:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tankh99/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tankh99/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tankh99/ip.git (master) completed! -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Darkarche3/ip.git completed! -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator analyzeRepos -INFO: [325/430] Analyzing https://github.com/Darkarche3/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/YuSoonZ/ip.git completed! +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [325/430] Analyzing https://github.com/YuSoonZ/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/logical-1985516/ip.git... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/logical-1985516/ip.git to complete... -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Darkarche3/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Darkarche3/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/YuSoonZ/ip.git completed! -Feb 06, 2024 3:23:34 PM reposense.report.ReportGenerator analyzeRepos -INFO: [326/430] Analyzing https://github.com/YuSoonZ/ip.git (master)... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/YuSoonZ/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/YuSoonZ/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Darkarche3/ip.git completed! +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ananya21/ip.git... -Feb 06, 2024 3:23:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/ananya21/ip.git to complete... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [326/430] Analyzing https://github.com/Darkarche3/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Vision-2000/ip.git completed! -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/ananya21/ip.git to complete... +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator analyzeRepos INFO: [327/430] Analyzing https://github.com/Vision-2000/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/purivirakarin/ip.git... -Feb 06, 2024 3:23:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/hjungwoo01/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/YuSoonZ/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/YuSoonZ/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/purivirakarin/ip.git to complete... -Feb 06, 2024 3:23:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/hjungwoo01/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Darkarche3/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Darkarche3/ip.git (master)... +Feb 07, 2024 1:16:20 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Vision-2000/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Vision-2000/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/hjungwoo01/ip.git (master)... +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/hjungwoo01/ip.git (master)... +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/hjungwoo01/ip.git (master) completed! -Feb 06, 2024 3:23:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Darkarche3/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Darkarche3/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Darkarche3/ip.git (master) completed! -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/chiageng/ip.git completed! -Feb 06, 2024 3:23:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Vision-2000/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator analyzeRepos INFO: [328/430] Analyzing https://github.com/chiageng/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/joenus/ip.git... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/joenus/ip.git to complete... -Feb 06, 2024 3:23:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Vision-2000/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Vision-2000/ip.git (master) completed! -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chiageng/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chiageng/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/YuSoonZ/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Vision-2000/ip.git (master)... +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/YuSoonZ/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/YuSoonZ/ip.git (master) completed! -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Vision-2000/ip.git (master)... +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Vision-2000/ip.git (master) completed! +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/logical-1985516/ip.git completed! -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator analyzeRepos -INFO: [329/430] Analyzing https://github.com/logical-1985516/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jessicawyz/ip.git... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [329/430] Analyzing https://github.com/logical-1985516/ip.git (master)... +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jessicawyz/ip.git to complete... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/logical-1985516/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/logical-1985516/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/purivirakarin/ip.git completed! -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ananya21/ip.git completed! +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [330/430] Analyzing https://github.com/ananya21/ip.git (master)... +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/casaarlai/ip.git... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator analyzeRepos -INFO: [330/430] Analyzing https://github.com/purivirakarin/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/purivirakarin/ip.git completed! +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/casaarlai/ip.git to complete... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ananya21/ip.git completed! -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator analyzeRepos -INFO: [331/430] Analyzing https://github.com/ananya21/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [331/430] Analyzing https://github.com/purivirakarin/ip.git (master)... +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Ryo-Seah/ip.git... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/purivirakarin/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/purivirakarin/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Ryo-Seah/ip.git to complete... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ananya21/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ananya21/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chiageng/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chiageng/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chiageng/ip.git (master) completed! -Feb 06, 2024 3:23:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/purivirakarin/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/purivirakarin/ip.git (master)... +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ananya21/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chiageng/ip.git (master)... +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ananya21/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ananya21/ip.git (master) completed! -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chiageng/ip.git (master)... +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chiageng/ip.git (master) completed! +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/logical-1985516/ip.git (master)... +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/logical-1985516/ip.git (master)... +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/logical-1985516/ip.git (master) completed! +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/purivirakarin/ip.git (master)... +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/joenus/ip.git completed! -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator analyzeRepos INFO: [332/430] Analyzing https://github.com/joenus/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jeremiahlzz/ip.git... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jeremiahlzz/ip.git to complete... -Feb 06, 2024 3:23:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/logical-1985516/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/purivirakarin/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/joenus/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/joenus/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/logical-1985516/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/logical-1985516/ip.git (master) completed! -Feb 06, 2024 3:23:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/purivirakarin/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/purivirakarin/ip.git (master) completed! -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/joenus/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/joenus/ip.git (master)... +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jessicawyz/ip.git completed! -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/macareonie/ip.git... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator analyzeRepos INFO: [333/430] Analyzing https://github.com/jessicawyz/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/macareonie/ip.git... +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/macareonie/ip.git to complete... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/casaarlai/ip.git completed! -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator analyzeRepos -INFO: [334/430] Analyzing https://github.com/casaarlai/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/chin-herng/ip.git... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Ryo-Seah/ip.git completed! -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jessicawyz/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/chin-herng/ip.git to complete... -Feb 06, 2024 3:23:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jessicawyz/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator analyzeRepos -INFO: [335/430] Analyzing https://github.com/Ryo-Seah/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Ryo-Seah/ip.git completed! +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [334/430] Analyzing https://github.com/Ryo-Seah/ip.git (master)... +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/chin-herng/ip.git... +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/casaarlai/ip.git completed! +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/chin-herng/ip.git to complete... +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [335/430] Analyzing https://github.com/casaarlai/ip.git (master)... +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/gowthaman-01/ip.git... -Feb 06, 2024 3:23:35 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/gowthaman-01/ip.git to complete... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/casaarlai/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/casaarlai/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Ryo-Seah/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Ryo-Seah/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/casaarlai/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/casaarlai/ip.git (master)... +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/joenus/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/joenus/ip.git (master)... -Feb 06, 2024 3:23:35 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/joenus/ip.git (master) completed! -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jessicawyz/ip.git (master)... +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jessicawyz/ip.git (master)... +Feb 07, 2024 1:16:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jessicawyz/ip.git (master) completed! +Feb 07, 2024 1:16:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/casaarlai/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jeremiahlzz/ip.git completed! +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/casaarlai/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/casaarlai/ip.git (master) completed! -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jeremiahlzz/ip.git completed! -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepos INFO: [336/430] Analyzing https://github.com/jeremiahlzz/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Joseph31416/ip.git... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Joseph31416/ip.git to complete... -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Ryo-Seah/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jeremiahlzz/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jeremiahlzz/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jessicawyz/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Ryo-Seah/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Ryo-Seah/ip.git (master) completed! -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jessicawyz/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jessicawyz/ip.git (master) completed! -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jeremiahlzz/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/macareonie/ip.git completed! -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jeremiahlzz/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepos INFO: [337/430] Analyzing https://github.com/macareonie/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/radeon2525/ip.git... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jeremiahlzz/ip.git (master) completed! -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/radeon2525/ip.git to complete... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/macareonie/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/macareonie/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/gowthaman-01/ip.git completed! -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jeremiahlzz/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jeremiahlzz/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jeremiahlzz/ip.git (master) completed! +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/chin-herng/ip.git completed! +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ejnan/ip.git... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [338/430] Analyzing https://github.com/gowthaman-01/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [338/430] Analyzing https://github.com/chin-herng/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ejnan/ip.git to complete... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/chin-herng/ip.git completed! -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/gowthaman-01/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/gowthaman-01/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [339/430] Analyzing https://github.com/chin-herng/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/gowthaman-01/ip.git completed! +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [339/430] Analyzing https://github.com/gowthaman-01/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jskimdev/ip.git... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jskimdev/ip.git to complete... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chin-herng/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chin-herng/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jskimdev/ip.git to complete... +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/gowthaman-01/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/gowthaman-01/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/macareonie/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/macareonie/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/macareonie/ip.git (master) completed! +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chin-herng/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chin-herng/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chin-herng/ip.git (master) completed! +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Joseph31416/ip.git completed! -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepos INFO: [340/430] Analyzing https://github.com/Joseph31416/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Chiarena/ip.git... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Chiarena/ip.git to complete... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Joseph31416/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Joseph31416/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chin-herng/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/gowthaman-01/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chin-herng/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chin-herng/ip.git (master) completed! -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/macareonie/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Chiarena/ip.git to complete... +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/gowthaman-01/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/gowthaman-01/ip.git (master) completed! -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/macareonie/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/macareonie/ip.git (master) completed! -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Joseph31416/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Joseph31416/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/radeon2525/ip.git completed! -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepos INFO: [341/430] Analyzing https://github.com/radeon2525/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chonghaoen/ip.git... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chonghaoen/ip.git to complete... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/radeon2525/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/radeon2525/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ejnan/ip.git completed! -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [342/430] Analyzing https://github.com/ejnan/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jskimdev/ip.git completed! +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [342/430] Analyzing https://github.com/jskimdev/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/CJerrong/ip.git... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/CJerrong/ip.git to complete... -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Joseph31416/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jskimdev/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jskimdev/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ejnan/ip.git completed! +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [343/430] Analyzing https://github.com/ejnan/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/qinxutan/ip.git... +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/qinxutan/ip.git to complete... +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ejnan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ejnan/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Joseph31416/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Joseph31416/ip.git (master) completed! -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jskimdev/ip.git completed! -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [343/430] Analyzing https://github.com/jskimdev/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/qinxutan/ip.git... -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/radeon2525/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/qinxutan/ip.git to complete... -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/radeon2525/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jskimdev/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jskimdev/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/radeon2525/ip.git (master) completed! -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Joseph31416/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jskimdev/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Joseph31416/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Joseph31416/ip.git (master) completed! +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jskimdev/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ejnan/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/jskimdev/ip.git (master) completed! +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ejnan/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ejnan/ip.git (master) completed! -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Chiarena/ip.git completed! -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepos INFO: [344/430] Analyzing https://github.com/Chiarena/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/billyhoce/ip.git... -Feb 06, 2024 3:23:36 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/billyhoce/ip.git to complete... -Feb 06, 2024 3:23:36 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Chiarena/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Chiarena/ip.git (master)... -Feb 06, 2024 3:23:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jskimdev/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jskimdev/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/jskimdev/ip.git (master) completed! -Feb 06, 2024 3:23:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Chiarena/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Chiarena/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Chiarena/ip.git (master) completed! -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/chonghaoen/ip.git completed! -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator analyzeRepos -INFO: [345/430] Analyzing https://github.com/chonghaoen/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/4llysa/ip.git... -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [345/430] Analyzing https://github.com/chonghaoen/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/4llysa/ip.git to complete... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/chonghaoen/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/chonghaoen/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Chiarena/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Chiarena/ip.git (master)... +Feb 07, 2024 1:16:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Chiarena/ip.git (master) completed! +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/CJerrong/ip.git completed! -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator analyzeRepos INFO: [346/430] Analyzing https://github.com/CJerrong/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/TopKec/ip.git... -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/TopKec/ip.git to complete... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/CJerrong/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/CJerrong/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chonghaoen/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chonghaoen/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chonghaoen/ip.git (master) completed! -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/qinxutan/ip.git completed! -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tahsinhasem/ip.git... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator analyzeRepos INFO: [347/430] Analyzing https://github.com/qinxutan/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tahsinhasem/ip.git... +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tahsinhasem/ip.git to complete... -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/billyhoce/ip.git completed! -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chonghaoen/ip.git (master)... +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/qinxutan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/MarcusGitty/ip.git... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator analyzeRepos -INFO: [348/430] Analyzing https://github.com/billyhoce/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/qinxutan/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chonghaoen/ip.git (master)... +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chonghaoen/ip.git (master) completed! +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/billyhoce/ip.git completed! +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [348/430] Analyzing https://github.com/billyhoce/ip.git (master)... +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/MarcusGitty/ip.git... +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/MarcusGitty/ip.git to complete... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/billyhoce/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/billyhoce/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/CJerrong/ip.git (master)... +Feb 07, 2024 1:16:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/CJerrong/ip.git (master)... +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/CJerrong/ip.git (master) completed! +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/4llysa/ip.git completed! -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/shawnnlimm/ip.git... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator analyzeRepos INFO: [349/430] Analyzing https://github.com/4llysa/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/shawnnlimm/ip.git... +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/shawnnlimm/ip.git to complete... -Feb 06, 2024 3:23:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/CJerrong/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/4llysa/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/4llysa/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/CJerrong/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/CJerrong/ip.git (master) completed! -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/TopKec/ip.git completed! -Feb 06, 2024 3:23:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/qinxutan/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/qinxutan/ip.git (master)... +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/qinxutan/ip.git (master) completed! +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/TopKec/ip.git completed! +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator analyzeRepos INFO: [350/430] Analyzing https://github.com/TopKec/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/huekoh/ip.git... -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/huekoh/ip.git to complete... -Feb 06, 2024 3:23:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/qinxutan/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/qinxutan/ip.git (master) completed! -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/TopKec/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/TopKec/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/4llysa/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/billyhoce/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/4llysa/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/4llysa/ip.git (master) completed! -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tahsinhasem/ip.git completed! -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JonChong98/ip.git... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator analyzeRepos INFO: [351/430] Analyzing https://github.com/tahsinhasem/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JonChong98/ip.git... +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/JonChong98/ip.git to complete... -Feb 06, 2024 3:23:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/billyhoce/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/billyhoce/ip.git (master) completed! -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tahsinhasem/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tahsinhasem/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/4llysa/ip.git (master)... +Feb 07, 2024 1:16:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/billyhoce/ip.git (master)... +Feb 07, 2024 1:16:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/4llysa/ip.git (master)... +Feb 07, 2024 1:16:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/billyhoce/ip.git (master)... +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/4llysa/ip.git (master) completed! +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/billyhoce/ip.git (master) completed! +Feb 07, 2024 1:16:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tahsinhasem/ip.git (master)... +Feb 07, 2024 1:16:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tahsinhasem/ip.git (master)... +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tahsinhasem/ip.git (master) completed! +Feb 07, 2024 1:16:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/TopKec/ip.git (master)... +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/MarcusGitty/ip.git completed! -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator analyzeRepos INFO: [352/430] Analyzing https://github.com/MarcusGitty/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/STELLA-LYE/ip.git... -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/STELLA-LYE/ip.git to complete... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/TopKec/ip.git (master)... +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/TopKec/ip.git (master) completed! +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/MarcusGitty/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/MarcusGitty/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tahsinhasem/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/shawnnlimm/ip.git completed! -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator analyzeRepos INFO: [353/430] Analyzing https://github.com/shawnnlimm/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nyankoclaws/ip.git... -Feb 06, 2024 3:23:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tahsinhasem/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tahsinhasem/ip.git (master) completed! -Feb 06, 2024 3:23:37 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nyankoclaws/ip.git to complete... -Feb 06, 2024 3:23:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/TopKec/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/shawnnlimm/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/shawnnlimm/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/TopKec/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/TopKec/ip.git (master) completed! -Feb 06, 2024 3:23:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/MarcusGitty/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/MarcusGitty/ip.git (master)... -Feb 06, 2024 3:23:37 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/MarcusGitty/ip.git (master) completed! -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/huekoh/ip.git completed! -Feb 06, 2024 3:23:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/shawnnlimm/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/shawnnlimm/ip.git (master)... +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/shawnnlimm/ip.git (master) completed! +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/huekoh/ip.git completed! +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator analyzeRepos INFO: [354/430] Analyzing https://github.com/huekoh/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/meowwtama/ip.git... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/meowwtama/ip.git to complete... -Feb 06, 2024 3:23:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/shawnnlimm/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/huekoh/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/shawnnlimm/ip.git (master) completed! -Feb 06, 2024 3:23:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/huekoh/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/JonChong98/ip.git completed! -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:23 AM reposense.report.ReportGenerator analyzeRepos INFO: [355/430] Analyzing https://github.com/JonChong98/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/KohGuanZeh/ip.git... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/KohGuanZeh/ip.git to complete... -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/JonChong98/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/JonChong98/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/huekoh/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/huekoh/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/huekoh/ip.git (master) completed! -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JonChong98/ip.git (master)... +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JonChong98/ip.git (master)... +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JonChong98/ip.git (master) completed! +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/STELLA-LYE/ip.git completed! -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator analyzeRepos INFO: [356/430] Analyzing https://github.com/STELLA-LYE/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nuyer/ip.git... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nuyer/ip.git to complete... -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/STELLA-LYE/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/STELLA-LYE/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JonChong98/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/nyankoclaws/ip.git completed! -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator analyzeRepos INFO: [357/430] Analyzing https://github.com/nyankoclaws/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/SeaHogs/ip.git... -Feb 06, 2024 3:23:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JonChong98/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JonChong98/ip.git (master) completed! -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/SeaHogs/ip.git to complete... -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nyankoclaws/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nyankoclaws/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/nyankoclaws/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nyankoclaws/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nyankoclaws/ip.git (master) completed! -Feb 06, 2024 3:23:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/STELLA-LYE/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/STELLA-LYE/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/STELLA-LYE/ip.git (master) completed! -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/meowwtama/ip.git completed! -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator analyzeRepos -INFO: [358/430] Analyzing https://github.com/meowwtama/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/KohGuanZeh/ip.git completed! +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [358/430] Analyzing https://github.com/KohGuanZeh/ip.git (master)... +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/S-Aishvarya/ip.git... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/S-Aishvarya/ip.git to complete... -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/meowwtama/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/meowwtama/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/KohGuanZeh/ip.git completed! -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator analyzeRepos -INFO: [359/430] Analyzing https://github.com/KohGuanZeh/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/meowwtama/ip.git completed! +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/STELLA-LYE/ip.git (master)... +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [359/430] Analyzing https://github.com/meowwtama/ip.git (master)... +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tejas-1405/ip.git... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tejas-1405/ip.git to complete... -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/KohGuanZeh/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/KohGuanZeh/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/STELLA-LYE/ip.git (master)... +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/meowwtama/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/meowwtama/ip.git (master)... +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/STELLA-LYE/ip.git (master) completed! +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/nuyer/ip.git completed! -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator analyzeRepos INFO: [360/430] Analyzing https://github.com/nuyer/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/youdonnnn/ip.git... -Feb 06, 2024 3:23:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/meowwtama/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/youdonnnn/ip.git to complete... -Feb 06, 2024 3:23:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/meowwtama/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/meowwtama/ip.git (master) completed! -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nuyer/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nuyer/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/SeaHogs/ip.git completed! -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator analyzeRepos INFO: [361/430] Analyzing https://github.com/SeaHogs/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tcjazwei/ip.git... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tcjazwei/ip.git to complete... -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/meowwtama/ip.git (master)... +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/SeaHogs/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/SeaHogs/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nuyer/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/meowwtama/ip.git (master)... +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/meowwtama/ip.git (master) completed! +Feb 07, 2024 1:16:24 AM 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'... @@ -6634,1105 +6632,1105 @@ 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) -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jieqiboh/ip.git... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jieqiboh/ip.git to complete... -Feb 06, 2024 3:23:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nuyer/ip.git (master)... +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nuyer/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nuyer/ip.git (master) completed! -Feb 06, 2024 3:23:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/SeaHogs/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/KohGuanZeh/ip.git (master)... +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/KohGuanZeh/ip.git (master)... +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/SeaHogs/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/tejas-1405/ip.git completed! +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/SeaHogs/ip.git (master) completed! -Feb 06, 2024 3:23:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/KohGuanZeh/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/KohGuanZeh/ip.git (master) completed! +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/S-Aishvarya/ip.git completed! -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator analyzeRepos -INFO: [362/430] Analyzing https://github.com/S-Aishvarya/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/wongkj12/ip.git... -Feb 06, 2024 3:23:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/KohGuanZeh/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/KohGuanZeh/ip.git (master) completed! -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [362/430] Analyzing https://github.com/tejas-1405/ip.git (master)... +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [363/430] Analyzing https://github.com/S-Aishvarya/ip.git (master)... +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/GERARDJM018/ip.git... +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/wongkj12/ip.git to complete... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/tejas-1405/ip.git completed! -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/GERARDJM018/ip.git to complete... +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/S-Aishvarya/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/S-Aishvarya/ip.git (master)... -Feb 06, 2024 3:23:38 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/GERARDJM018/ip.git... -Feb 06, 2024 3:23:38 PM reposense.report.ReportGenerator analyzeRepos -INFO: [363/430] Analyzing https://github.com/tejas-1405/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/GERARDJM018/ip.git to complete... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/youdonnnn/ip.git completed! -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tejas-1405/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tejas-1405/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/blaukc/ip.git... -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [364/430] Analyzing https://github.com/youdonnnn/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/blaukc/ip.git to complete... -Feb 06, 2024 3:23:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/S-Aishvarya/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/S-Aishvarya/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/S-Aishvarya/ip.git (master) completed! -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tejas-1405/ip.git (master)... +Feb 07, 2024 1:16:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tejas-1405/ip.git (master)... +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/youdonnnn/ip.git completed! +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tejas-1405/ip.git (master) completed! +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [364/430] Analyzing https://github.com/youdonnnn/ip.git (master)... +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/blaukc/ip.git... +Feb 07, 2024 1:16:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/blaukc/ip.git to complete... +Feb 07, 2024 1:16:24 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/youdonnnn/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/youdonnnn/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/youdonnnn/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tejas-1405/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/youdonnnn/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/youdonnnn/ip.git (master) completed! -Feb 06, 2024 3:23:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tejas-1405/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tejas-1405/ip.git (master) completed! -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jieqiboh/ip.git completed! -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator analyzeRepos INFO: [365/430] Analyzing https://github.com/jieqiboh/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tohlh/ip.git... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tohlh/ip.git to complete... -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/GERARDJM018/ip.git completed! +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/wongkj12/ip.git completed! +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jieqiboh/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jieqiboh/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/wongkj12/ip.git completed! -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [366/430] Analyzing https://github.com/GERARDJM018/ip.git (master)... +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/hiivan/ip.git... -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [366/430] Analyzing https://github.com/wongkj12/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [367/430] Analyzing https://github.com/wongkj12/ip.git (master)... +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/darkvoid32/ip.git... +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/darkvoid32/ip.git to complete... +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/hiivan/ip.git to complete... -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/wongkj12/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/wongkj12/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/GERARDJM018/ip.git completed! -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [367/430] Analyzing https://github.com/GERARDJM018/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/darkvoid32/ip.git... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/darkvoid32/ip.git to complete... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/GERARDJM018/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/GERARDJM018/ip.git (master)... +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/blaukc/ip.git completed! -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [368/430] Analyzing https://github.com/blaukc/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yapxuanxuan/ip.git... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [368/430] Analyzing https://github.com/blaukc/ip.git (master)... +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/yapxuanxuan/ip.git to complete... -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/GERARDJM018/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/GERARDJM018/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/blaukc/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/blaukc/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jieqiboh/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/wongkj12/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/jieqiboh/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jieqiboh/ip.git (master)... +Feb 07, 2024 1:16:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/wongkj12/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/wongkj12/ip.git (master) completed! -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/GERARDJM018/ip.git (master)... +Feb 07, 2024 1:16:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/jieqiboh/ip.git (master)... +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jieqiboh/ip.git (master) completed! -Feb 06, 2024 3:23:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/blaukc/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tohlh/ip.git completed! -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/GERARDJM018/ip.git (master)... +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/darkvoid32/ip.git completed! +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/GERARDJM018/ip.git (master) completed! +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [369/430] Analyzing https://github.com/darkvoid32/ip.git (master)... +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanjiajiajun/ip.git... -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [369/430] Analyzing https://github.com/tohlh/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/blaukc/ip.git (master)... +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [370/430] Analyzing https://github.com/tohlh/ip.git (master)... +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Greg-Tan/ip.git... +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanjiajiajun/ip.git to complete... -Feb 06, 2024 3:23:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Greg-Tan/ip.git to complete... +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/hiivan/ip.git completed! +Feb 07, 2024 1:16:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/blaukc/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/blaukc/ip.git (master) completed! -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tohlh/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tohlh/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/GERARDJM018/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/GERARDJM018/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/GERARDJM018/ip.git (master) completed! -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/hiivan/ip.git completed! -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/darkvoid32/ip.git completed! -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [370/430] Analyzing https://github.com/hiivan/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Greg-Tan/ip.git... -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [371/430] Analyzing https://github.com/darkvoid32/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/darkvoid32/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/darkvoid32/ip.git (master)... +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [371/430] Analyzing https://github.com/hiivan/ip.git (master)... +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kervyntan/ip.git... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kervyntan/ip.git to complete... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Greg-Tan/ip.git to complete... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/yapxuanxuan/ip.git completed! -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AndrewOng2066/ip.git... -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator analyzeRepos INFO: [372/430] Analyzing https://github.com/yapxuanxuan/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/darkvoid32/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/darkvoid32/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/hiivan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/hiivan/ip.git (master)... -Feb 06, 2024 3:23:39 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kervyntan/ip.git to complete... +Feb 07, 2024 1:16:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AndrewOng2066/ip.git to complete... -Feb 06, 2024 3:23:39 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/yapxuanxuan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/yapxuanxuan/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/hiivan/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/hiivan/ip.git (master)... +Feb 07, 2024 1:16:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/yapxuanxuan/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yapxuanxuan/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/darkvoid32/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yapxuanxuan/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/yapxuanxuan/ip.git (master) completed! -Feb 06, 2024 3:23:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/tohlh/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/darkvoid32/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/darkvoid32/ip.git (master) completed! -Feb 06, 2024 3:23:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/tohlh/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/tohlh/ip.git (master) completed! -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tanjiajiajun/ip.git completed! -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator analyzeRepos INFO: [373/430] Analyzing https://github.com/tanjiajiajun/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/g-tejas/ip.git... -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/g-tejas/ip.git to complete... -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tanjiajiajun/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tanjiajiajun/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/hiivan/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/tohlh/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Greg-Tan/ip.git completed! -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/tohlh/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kervyntan/ip.git completed! -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [374/430] Analyzing https://github.com/Greg-Tan/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AndrewOng2066/ip.git completed! +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/tohlh/ip.git (master) completed! +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [374/430] Analyzing https://github.com/kervyntan/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/RyanNgWH/ip.git... -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [375/430] Analyzing https://github.com/kervyntan/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/yeoshuheng/ip.git... -Feb 06, 2024 3:23:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/hiivan/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/hiivan/ip.git (master) completed! -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/yeoshuheng/ip.git to complete... -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [375/430] Analyzing https://github.com/Greg-Tan/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/RyanNgWH/ip.git to complete... -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Greg-Tan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Greg-Tan/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AndrewOng2066/ip.git completed! -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [376/430] Analyzing https://github.com/AndrewOng2066/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jonpwk/ip.git... -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/yeoshuheng/ip.git to complete... +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jonpwk/ip.git to complete... +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kervyntan/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kervyntan/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jonpwk/ip.git to complete... -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Greg-Tan/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Greg-Tan/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/hiivan/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/hiivan/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/hiivan/ip.git (master) completed! +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [376/430] Analyzing https://github.com/AndrewOng2066/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AndrewOng2066/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AndrewOng2066/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/Greg-Tan/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/Greg-Tan/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/Greg-Tan/ip.git (master) completed! -Feb 06, 2024 3:23:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tanjiajiajun/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kervyntan/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tanjiajiajun/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tanjiajiajun/ip.git (master) completed! -Feb 06, 2024 3:23:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kervyntan/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kervyntan/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kervyntan/ip.git (master) completed! -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/g-tejas/ip.git completed! -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [377/430] Analyzing https://github.com/g-tejas/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/xinen26/ip.git... -Feb 06, 2024 3:23:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AndrewOng2066/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [377/430] Analyzing https://github.com/g-tejas/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/xinen26/ip.git to complete... -Feb 06, 2024 3:23:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AndrewOng2066/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/RyanNgWH/ip.git completed! -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/g-tejas/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/g-tejas/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AndrewOng2066/ip.git (master) completed! -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [378/430] Analyzing https://github.com/RyanNgWH/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jonpwk/ip.git completed! +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/RyanNgWH/ip.git completed! +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/gerteck/ip.git... -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/gerteck/ip.git to complete... -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/RyanNgWH/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/RyanNgWH/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/yeoshuheng/ip.git completed! -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [378/430] Analyzing https://github.com/jonpwk/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/drustanyjt/ip.git... -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [379/430] Analyzing https://github.com/yeoshuheng/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jonpwk/ip.git completed! -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [379/430] Analyzing https://github.com/RyanNgWH/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/yeoshuheng/ip.git completed! +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/gerteck/ip.git to complete... +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/drustanyjt/ip.git to complete... -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/angsongyee/ip.git... -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [380/430] Analyzing https://github.com/jonpwk/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/angsongyee/ip.git to complete... -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/yeoshuheng/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/yeoshuheng/ip.git (master)... -Feb 06, 2024 3:23:40 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/jonpwk/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/jonpwk/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/g-tejas/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/angsongyee/ip.git to complete... +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/RyanNgWH/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/RyanNgWH/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AndrewOng2066/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AndrewOng2066/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AndrewOng2066/ip.git (master) completed! +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [380/430] Analyzing https://github.com/yeoshuheng/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jonpwk/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jonpwk/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/yeoshuheng/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/yeoshuheng/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jonpwk/ip.git (master) completed! -Feb 06, 2024 3:23:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/g-tejas/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/g-tejas/ip.git (master) completed! -Feb 06, 2024 3:23:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/RyanNgWH/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/yeoshuheng/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/gerteck/ip.git completed! -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/g-tejas/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/xinen26/ip.git completed! +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/alfaloo/ip.git... -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator analyzeRepos -INFO: [381/430] Analyzing https://github.com/gerteck/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [381/430] Analyzing https://github.com/xinen26/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/g-tejas/ip.git (master)... +Feb 07, 2024 1:16:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/alfaloo/ip.git to complete... -Feb 06, 2024 3:23:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/RyanNgWH/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/yeoshuheng/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/RyanNgWH/ip.git (master) completed! -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/yeoshuheng/ip.git (master) completed! -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/gerteck/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/gerteck/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/g-tejas/ip.git (master) completed! +Feb 07, 2024 1:16:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/xinen26/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/xinen26/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/drustanyjt/ip.git completed! -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ivan24004/ip.git... -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/gerteck/ip.git completed! +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/angsongyee/ip.git completed! +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator analyzeRepos INFO: [382/430] Analyzing https://github.com/drustanyjt/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ivan24004/ip.git... +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/cheahTJ/ip.git... +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/bertrandong/ip.git... +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/bertrandong/ip.git to complete... +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/cheahTJ/ip.git to complete... +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ivan24004/ip.git to complete... -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/drustanyjt/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/drustanyjt/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/angsongyee/ip.git completed! -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/RyanNgWH/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/RyanNgWH/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/yeoshuheng/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/RyanNgWH/ip.git (master) completed! +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator analyzeRepos INFO: [383/430] Analyzing https://github.com/angsongyee/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/cheahTJ/ip.git... -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/cheahTJ/ip.git to complete... -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/xinen26/ip.git completed! -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/bertrandong/ip.git... -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator analyzeRepos -INFO: [384/430] Analyzing https://github.com/xinen26/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/angsongyee/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/angsongyee/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/bertrandong/ip.git to complete... -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/xinen26/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/xinen26/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/gerteck/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/yeoshuheng/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/yeoshuheng/ip.git (master) completed! +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [384/430] Analyzing https://github.com/gerteck/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/gerteck/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/gerteck/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/xinen26/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/alfaloo/ip.git completed! -Feb 06, 2024 3:23:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/gerteck/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/gerteck/ip.git (master) completed! -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/headcube1/ip.git... -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator analyzeRepos -INFO: [385/430] Analyzing https://github.com/alfaloo/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/headcube1/ip.git to complete... -Feb 06, 2024 3:23:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/drustanyjt/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/xinen26/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/xinen26/ip.git (master) completed! +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [385/430] Analyzing https://github.com/alfaloo/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/alfaloo/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/alfaloo/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/drustanyjt/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/drustanyjt/ip.git (master) completed! -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ivan24004/ip.git completed! -Feb 06, 2024 3:23:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/angsongyee/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/bertrandong/ip.git completed! +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/pjanthony2001/ip.git... -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator analyzeRepos -INFO: [386/430] Analyzing https://github.com/ivan24004/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/cheahTJ/ip.git completed! +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/pjanthony2001/ip.git to complete... -Feb 06, 2024 3:23:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/angsongyee/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/angsongyee/ip.git (master) completed! -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ivan24004/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ivan24004/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/bertrandong/ip.git completed! -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/ruijietay/ip.git... -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator analyzeRepos -INFO: [387/430] Analyzing https://github.com/bertrandong/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ruijietay/ip.git to complete... -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/cheahTJ/ip.git completed! -Feb 06, 2024 3:23:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/xinen26/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ivan24004/ip.git completed! +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/sindhurajain/ip.git... -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/drustanyjt/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/sindhurajain/ip.git to complete... +Feb 07, 2024 1:16:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/drustanyjt/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/drustanyjt/ip.git (master) completed! +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [386/430] Analyzing https://github.com/bertrandong/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/bertrandong/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/bertrandong/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/sindhurajain/ip.git to complete... -Feb 06, 2024 3:23:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/xinen26/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/xinen26/ip.git (master) completed! -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator analyzeRepos -INFO: [388/430] Analyzing https://github.com/cheahTJ/ip.git (master)... -Feb 06, 2024 3:23:41 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/angsongyee/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/angsongyee/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/angsongyee/ip.git (master) completed! +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [387/430] Analyzing https://github.com/cheahTJ/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/cheahTJ/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/cheahTJ/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ivan24004/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ivan24004/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/gerteck/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/gerteck/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/gerteck/ip.git (master) completed! +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [388/430] Analyzing https://github.com/ivan24004/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ivan24004/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ivan24004/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/headcube1/ip.git completed! -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ivan24004/ip.git (master) completed! -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [389/430] Analyzing https://github.com/headcube1/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Ragnapop/ip.git... -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Ragnapop/ip.git to complete... -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/alfaloo/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/cheahTJ/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/headcube1/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/headcube1/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ruijietay/ip.git completed! +Feb 07, 2024 1:16:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/alfaloo/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/alfaloo/ip.git (master) completed! -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/cheahTJ/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/cheahTJ/ip.git (master) completed! -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/bertrandong/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/bertrandong/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/bertrandong/ip.git (master) completed! -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/pjanthony2001/ip.git completed! -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [390/430] Analyzing https://github.com/pjanthony2001/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/nobodyishappy/ip.git... -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ruijietay/ip.git completed! -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/nobodyishappy/ip.git to complete... -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Pughal77/ip.git... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [391/430] Analyzing https://github.com/ruijietay/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Pughal77/ip.git to complete... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/pjanthony2001/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/pjanthony2001/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [389/430] Analyzing https://github.com/headcube1/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/sindhurajain/ip.git completed! -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/bertrandong/ip.git (master)... +Feb 07, 2024 1:16:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/pjanthony2001/ip.git completed! +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Pughal77/ip.git... +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/headcube1/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/headcube1/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/PateShin/ip.git... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Pughal77/ip.git to complete... +Feb 07, 2024 1:16:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/bertrandong/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/PateShin/ip.git to complete... +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/bertrandong/ip.git (master) completed! +Feb 07, 2024 1:16:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/cheahTJ/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [390/430] Analyzing https://github.com/ruijietay/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/cheahTJ/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/cheahTJ/ip.git (master) completed! +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [391/430] Analyzing https://github.com/sindhurajain/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ruijietay/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ruijietay/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [392/430] Analyzing https://github.com/sindhurajain/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/PateShin/ip.git to complete... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/sindhurajain/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/sindhurajain/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ivan24004/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ivan24004/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ivan24004/ip.git (master) completed! +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [392/430] Analyzing https://github.com/pjanthony2001/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Ragnapop/ip.git completed! +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/jayllo-c/ip.git... +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/jayllo-c/ip.git to complete... +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/pjanthony2001/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/pjanthony2001/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/headcube1/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/headcube1/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/headcube1/ip.git (master) completed! -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Ragnapop/ip.git completed! -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator analyzeRepos INFO: [393/430] Analyzing https://github.com/Ragnapop/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/jayllo-c/ip.git... -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/jayllo-c/ip.git to complete... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/nobodyishappy/ip.git completed! +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Ragnapop/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Ragnapop/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/Pughal77/ip.git completed! -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/gosongying/ip.git... -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/gosongying/ip.git to complete... -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/PateShin/ip.git completed! -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/nobodyishappy/ip.git completed! -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/gosongying/ip.git to complete... +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/biinnnggggg/ip.git... -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/sindhurajain/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ShanylOng/ip.git... -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/Pughal77/ip.git completed! +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/biinnnggggg/ip.git to complete... -Feb 06, 2024 3:23:42 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ShanylOng/ip.git... +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ShanylOng/ip.git to complete... -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/sindhurajain/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/sindhurajain/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/sindhurajain/ip.git (master) completed! -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [394/430] Analyzing https://github.com/Pughal77/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/pjanthony2001/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/ruijietay/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Pughal77/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Pughal77/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/ruijietay/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ruijietay/ip.git (master) completed! -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/pjanthony2001/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [395/430] Analyzing https://github.com/PateShin/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/pjanthony2001/ip.git (master) completed! -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [396/430] Analyzing https://github.com/nobodyishappy/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Ragnapop/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/PateShin/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/PateShin/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [394/430] Analyzing https://github.com/nobodyishappy/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/nobodyishappy/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/nobodyishappy/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Ragnapop/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Ragnapop/ip.git (master) completed! -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Pughal77/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Pughal77/ip.git (master)... -Feb 06, 2024 3:23:42 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Pughal77/ip.git (master) completed! -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/ruijietay/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/jayllo-c/ip.git completed! -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator analyzeRepos -INFO: [397/430] Analyzing https://github.com/jayllo-c/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Ragnapop/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/KinTatHo/ip.git... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Ragnapop/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/KinTatHo/ip.git to complete... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jayllo-c/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jayllo-c/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/PateShin/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Ragnapop/ip.git (master) completed! +Feb 07, 2024 1:16:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/ruijietay/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [395/430] Analyzing https://github.com/PateShin/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ruijietay/ip.git (master) completed! +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [396/430] Analyzing https://github.com/Pughal77/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/PateShin/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/PateShin/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Pughal77/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Pughal77/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/pjanthony2001/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/gosongying/ip.git completed! -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator analyzeRepos -INFO: [398/430] Analyzing https://github.com/gosongying/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Rishit02/ip.git... -Feb 06, 2024 3:23:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/PateShin/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Rishit02/ip.git to complete... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/PateShin/ip.git (master) completed! -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/ShanylOng/ip.git completed! -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator analyzeRepos -INFO: [399/430] Analyzing https://github.com/ShanylOng/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/rahhulleee/ip.git... -Feb 06, 2024 3:23:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/nobodyishappy/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/biinnnggggg/ip.git completed! -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/rahhulleee/ip.git to complete... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/pjanthony2001/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/rahhulleee/ip.git... +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/pjanthony2001/ip.git (master) completed! +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/chaaaaun/ip.git... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/ShanylOng/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/ShanylOng/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [397/430] Analyzing https://github.com/jayllo-c/ip.git (master)... +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/rahhulleee/ip.git to complete... +Feb 07, 2024 1:16:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/chaaaaun/ip.git to complete... -Feb 06, 2024 3:23:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jayllo-c/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jayllo-c/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Pughal77/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/nobodyishappy/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Pughal77/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Pughal77/ip.git (master) completed! +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [398/430] Analyzing https://github.com/gosongying/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/nobodyishappy/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/nobodyishappy/ip.git (master) completed! -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [399/430] Analyzing https://github.com/ShanylOng/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/gosongying/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/gosongying/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator analyzeRepos -INFO: [400/430] Analyzing https://github.com/biinnnggggg/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/biinnnggggg/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/biinnnggggg/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/ShanylOng/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/ShanylOng/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/KinTatHo/ip.git completed! +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/JerryO3/ip.git... +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/JerryO3/ip.git to complete... +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/PateShin/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ShanylOng/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/jayllo-c/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ShanylOng/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/ShanylOng/ip.git (master) completed! -Feb 06, 2024 3:23:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/jayllo-c/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/PateShin/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [400/430] Analyzing https://github.com/biinnnggggg/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/PateShin/ip.git (master) completed! +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [401/430] Analyzing https://github.com/KinTatHo/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jayllo-c/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jayllo-c/ip.git (master) completed! -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/KinTatHo/ip.git completed! -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/JerryO3/ip.git... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator analyzeRepos -INFO: [401/430] Analyzing https://github.com/KinTatHo/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/JerryO3/ip.git to complete... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/biinnnggggg/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/biinnnggggg/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/KinTatHo/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/KinTatHo/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Rishit02/ip.git completed! -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator analyzeRepos -INFO: [402/430] Analyzing https://github.com/Rishit02/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/tzaph/ip.git... -Feb 06, 2024 3:23:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/biinnnggggg/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/tzaph/ip.git to complete... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/rahhulleee/ip.git completed! -Feb 06, 2024 3:23:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/gosongying/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Rishit02/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Rishit02/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [402/430] Analyzing https://github.com/rahhulleee/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/tzaph/ip.git... +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/RingoftheKing/ip.git... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/tzaph/ip.git to complete... +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/RingoftheKing/ip.git to complete... -Feb 06, 2024 3:23:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/biinnnggggg/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/biinnnggggg/ip.git (master) completed! -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator analyzeRepos -INFO: [403/430] Analyzing https://github.com/rahhulleee/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/gosongying/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/gosongying/ip.git (master) completed! -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/chaaaaun/ip.git completed! -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/ashleyclx/ip.git... +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/rahhulleee/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/rahhulleee/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/ashleyclx/ip.git... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator analyzeRepos -INFO: [404/430] Analyzing https://github.com/chaaaaun/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/ashleyclx/ip.git to complete... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/chaaaaun/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/chaaaaun/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Rishit02/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/gosongying/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/gosongying/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/gosongying/ip.git (master) completed! +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [403/430] Analyzing https://github.com/Rishit02/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/KinTatHo/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Rishit02/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Rishit02/ip.git (master) completed! -Feb 06, 2024 3:23:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/KinTatHo/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/KinTatHo/ip.git (master) completed! -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/JerryO3/ip.git completed! -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator analyzeRepos -INFO: [405/430] Analyzing https://github.com/JerryO3/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Rishit02/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Rishit02/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/KinTatHo/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/laney0808/ip.git... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/laney0808/ip.git to complete... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/JerryO3/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/JerryO3/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/KinTatHo/ip.git (master) completed! +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [404/430] Analyzing https://github.com/chaaaaun/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/biinnnggggg/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/chaaaaun/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/chaaaaun/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/biinnnggggg/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/rahhulleee/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/biinnnggggg/ip.git (master) completed! +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [405/430] Analyzing https://github.com/JerryO3/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/rahhulleee/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/rahhulleee/ip.git (master) completed! +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tzaph/ip.git completed! -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/ashleyclx/ip.git completed! +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/NatLeong/ip.git... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepos INFO: [406/430] Analyzing https://github.com/tzaph/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/chaaaaun/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/RingoftheKing/ip.git completed! -Feb 06, 2024 3:23:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/rahhulleee/ip.git (master)... -Feb 06, 2024 3:23:43 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/rahhulleee/ip.git (master) completed! -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [407/430] Analyzing https://github.com/RingoftheKing/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/JerryO3/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/JerryO3/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/Jajared/ip.git... -Feb 06, 2024 3:23:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/chaaaaun/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/NatLeong/ip.git to complete... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/chaaaaun/ip.git (master) completed! -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/Jajared/ip.git to complete... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tzaph/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tzaph/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/RingoftheKing/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/RingoftheKing/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/ashleyclx/ip.git completed! -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/Jajared/ip.git to complete... +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/RingoftheKing/ip.git completed! +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kailashgautham/ip.git... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [408/430] Analyzing https://github.com/ashleyclx/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/kailashgautham/ip.git to complete... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Rishit02/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Rishit02/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Rishit02/ip.git (master) completed! +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [407/430] Analyzing https://github.com/ashleyclx/ip.git (master)... +Feb 07, 2024 1:16:29 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/ashleyclx/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/ashleyclx/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/JerryO3/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/JerryO3/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/JerryO3/ip.git (master) completed! -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/laney0808/ip.git completed! -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [409/430] Analyzing https://github.com/laney0808/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/J-wang-CSMA/ip.git... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/J-wang-CSMA/ip.git to complete... -Feb 06, 2024 3:23:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/RingoftheKing/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/laney0808/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/laney0808/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/RingoftheKing/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/RingoftheKing/ip.git (master) completed! -Feb 06, 2024 3:23:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/chaaaaun/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/chaaaaun/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/chaaaaun/ip.git (master) completed! +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [408/430] Analyzing https://github.com/RingoftheKing/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tzaph/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/JerryO3/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/RingoftheKing/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/RingoftheKing/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tzaph/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/JerryO3/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tzaph/ip.git (master) completed! -Feb 06, 2024 3:23:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/JerryO3/ip.git (master) completed! +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [409/430] Analyzing https://github.com/laney0808/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/laney0808/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/laney0808/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/ashleyclx/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/laney0808/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/NatLeong/ip.git completed! +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/ashleyclx/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Jajared/ip.git completed! -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/ashleyclx/ip.git (master) completed! -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [410/430] Analyzing https://github.com/Jajared/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/kinjalagarwal1810/ip.git... -Feb 06, 2024 3:23:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/laney0808/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/laney0808/ip.git (master) completed! -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/kinjalagarwal1810/ip.git to complete... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/NatLeong/ip.git completed! -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/Jajared/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/Jajared/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [411/430] Analyzing https://github.com/NatLeong/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [410/430] Analyzing https://github.com/NatLeong/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/ashleyclx/ip.git (master) completed! +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [411/430] Analyzing https://github.com/Jajared/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/NewtonKoh/ip.git... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/kinjalagarwal1810/ip.git to complete... +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/NewtonKoh/ip.git to complete... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/NatLeong/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/NatLeong/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/Jajared/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/Jajared/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/kailashgautham/ip.git completed! -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [412/430] Analyzing https://github.com/kailashgautham/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/UdhayaShan1/ip.git... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/UdhayaShan1/ip.git to complete... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/laney0808/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/RingoftheKing/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/laney0808/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/laney0808/ip.git (master) completed! +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [412/430] Analyzing https://github.com/kailashgautham/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/RingoftheKing/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/RingoftheKing/ip.git (master) completed! +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/kailashgautham/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/kailashgautham/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/NatLeong/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/NatLeong/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/NatLeong/ip.git (master) completed! -Feb 06, 2024 3:23:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Jajared/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/J-wang-CSMA/ip.git completed! -Feb 06, 2024 3:23:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Jajared/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepos INFO: [413/430] Analyzing https://github.com/J-wang-CSMA/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/tanqinyong/ip.git... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Jajared/ip.git (master) completed! -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/tanqinyong/ip.git to complete... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/J-wang-CSMA/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/J-wang-CSMA/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Jajared/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Jajared/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Jajared/ip.git (master) completed! +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/NewtonKoh/ip.git completed! +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/kailashgautham/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/kailashgautham/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/kailashgautham/ip.git (master) completed! -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/kinjalagarwal1810/ip.git completed! -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [414/430] Analyzing https://github.com/kinjalagarwal1810/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/theman-oj10/ip.git... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [414/430] Analyzing https://github.com/NewtonKoh/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/theman-oj10/ip.git to complete... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/kinjalagarwal1810/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/kinjalagarwal1810/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/NewtonKoh/ip.git completed! -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [415/430] Analyzing https://github.com/NewtonKoh/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/kinjalagarwal1810/ip.git completed! +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/kailashgautham/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/kailashgautham/ip.git (master) completed! +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [415/430] Analyzing https://github.com/kinjalagarwal1810/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/c-j-lh/ip.git... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/c-j-lh/ip.git to complete... -Feb 06, 2024 3:23:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/J-wang-CSMA/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/UdhayaShan1/ip.git completed! -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/NewtonKoh/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/NewtonKoh/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/c-j-lh/ip.git to complete... +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/UdhayaShan1/ip.git completed! +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepos INFO: [416/430] Analyzing https://github.com/UdhayaShan1/ip.git (master)... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/kinjalagarwal1810/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/jovantanyk/ip.git... -Feb 06, 2024 3:23:44 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/kinjalagarwal1810/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/jovantanyk/ip.git to complete... -Feb 06, 2024 3:23:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/J-wang-CSMA/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/J-wang-CSMA/ip.git (master) completed! -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/UdhayaShan1/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/UdhayaShan1/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/NewtonKoh/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/NewtonKoh/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/NewtonKoh/ip.git (master) completed! +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/J-wang-CSMA/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/J-wang-CSMA/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/J-wang-CSMA/ip.git (master) completed! +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/tanqinyong/ip.git completed! -Feb 06, 2024 3:23:45 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/Kappaccinoh/ip.git... -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepos INFO: [417/430] Analyzing https://github.com/tanqinyong/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/Kappaccinoh/ip.git... +Feb 07, 2024 1:16:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/Kappaccinoh/ip.git to complete... -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/kinjalagarwal1810/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/tanqinyong/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/tanqinyong/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/kinjalagarwal1810/ip.git (master)... +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/kinjalagarwal1810/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:30 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/kinjalagarwal1810/ip.git (master) completed! -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/NewtonKoh/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/NewtonKoh/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/NewtonKoh/ip.git (master) completed! -Feb 06, 2024 3:23:45 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/UdhayaShan1/ip.git (master)... +Feb 07, 2024 1:16:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/theman-oj10/ip.git completed! -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/UdhayaShan1/ip.git (master)... +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator analyzeRepos INFO: [418/430] Analyzing https://github.com/theman-oj10/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:31 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/itstrueitstrueitsrealitsreal/ip.git... -Feb 06, 2024 3:23:45 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/UdhayaShan1/ip.git (master) completed! +Feb 07, 2024 1:16:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/itstrueitstrueitsrealitsreal/ip.git to complete... -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/UdhayaShan1/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/theman-oj10/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/theman-oj10/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/UdhayaShan1/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/UdhayaShan1/ip.git (master) completed! -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/tanqinyong/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/c-j-lh/ip.git completed! -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator analyzeRepos -INFO: [419/430] Analyzing https://github.com/c-j-lh/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/agreatdayy/ip.git... -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/tanqinyong/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/c-j-lh/ip.git completed! +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/tanqinyong/ip.git (master) completed! -Feb 06, 2024 3:23:45 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:31 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/agreatdayy/ip.git... +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [419/430] Analyzing https://github.com/c-j-lh/ip.git (master)... +Feb 07, 2024 1:16:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/agreatdayy/ip.git to complete... -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/jovantanyk/ip.git completed! +Feb 07, 2024 1:16:31 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/SampsonYe1999/ip.git... +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [420/430] Analyzing https://github.com/jovantanyk/ip.git (master)... +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/c-j-lh/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/c-j-lh/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:31 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/SampsonYe1999/ip.git to complete... +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/jovantanyk/ip.git (master) does not contain a standalone config file. +Feb 07, 2024 1:16:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/jovantanyk/ip.git (master)... +Feb 07, 2024 1:16:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/c-j-lh/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/theman-oj10/ip.git (master)... +Feb 07, 2024 1:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/c-j-lh/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/c-j-lh/ip.git (master) completed! -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/theman-oj10/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/jovantanyk/ip.git completed! -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator analyzeRepos -INFO: [420/430] Analyzing https://github.com/jovantanyk/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/SampsonYe1999/ip.git... -Feb 06, 2024 3:23:45 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/SampsonYe1999/ip.git to complete... -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/theman-oj10/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/theman-oj10/ip.git (master) completed! -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/jovantanyk/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/jovantanyk/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/Kappaccinoh/ip.git completed! -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator analyzeRepos INFO: [421/430] Analyzing https://github.com/Kappaccinoh/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.RepoCloner spawnCloneProcess +Feb 07, 2024 1:16:31 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/The-Dudeski/ip.git... -Feb 06, 2024 3:23:45 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/The-Dudeski/ip.git to complete... -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/jovantanyk/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/Kappaccinoh/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/Kappaccinoh/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/jovantanyk/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/jovantanyk/ip.git (master) completed! -Feb 06, 2024 3:23:45 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/itstrueitstrueitsrealitsreal/ip.git completed! -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator analyzeRepos -INFO: [422/430] Analyzing https://github.com/itstrueitstrueitsrealitsreal/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:31 AM reposense.report.RepoCloner waitForCloneProcess WARNING: Exception met while trying to clone the repo "The-Dudeski/ip[master]", will skip this repo. reposense.system.CommandRunnerProcessException: Error returned from command git clone --bare 'https://github.com/The-Dudeski/ip.git' 'repos/The-Dudeski_ip/ip_bare' on path . : Cloning into bare repository 'repos/The-Dudeski_ip/ip_bare'... @@ -7748,51 +7746,53 @@ 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) -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [422/430] Analyzing https://github.com/itstrueitstrueitsrealitsreal/ip.git (master)... +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/itstrueitstrueitsrealitsreal/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/itstrueitstrueitsrealitsreal/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/Kappaccinoh/ip.git (master)... +Feb 07, 2024 1:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/Kappaccinoh/ip.git (master)... +Feb 07, 2024 1:16:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/agreatdayy/ip.git completed! -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/Kappaccinoh/ip.git (master) completed! +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator analyzeRepos INFO: [423/430] Analyzing https://github.com/agreatdayy/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/Kappaccinoh/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/agreatdayy/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/agreatdayy/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/Kappaccinoh/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/Kappaccinoh/ip.git (master) completed! -Feb 06, 2024 3:23:45 PM reposense.report.RepoCloner waitForCloneProcess +Feb 07, 2024 1:16:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/SampsonYe1999/ip.git completed! -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/agreatdayy/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator analyzeRepos +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator analyzeRepos INFO: [424/430] Analyzing https://github.com/SampsonYe1999/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/agreatdayy/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/agreatdayy/ip.git (master) completed! -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator updateRepoConfig +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/SampsonYe1999/ip.git (master) does not contain a standalone config file. -Feb 06, 2024 3:23:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Feb 07, 2024 1:16:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/SampsonYe1999/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/agreatdayy/ip.git (master)... +Feb 07, 2024 1:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/agreatdayy/ip.git (master)... +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/agreatdayy/ip.git (master) completed! +Feb 07, 2024 1:16:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/SampsonYe1999/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/SampsonYe1999/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/SampsonYe1999/ip.git (master) completed! -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Feb 07, 2024 1:16:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/itstrueitstrueitsrealitsreal/ip.git (master)... -Feb 06, 2024 3:23:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Feb 07, 2024 1:16:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/itstrueitstrueitsrealitsreal/ip.git (master)... -Feb 06, 2024 3:23:46 PM reposense.report.ReportGenerator analyzeRepo +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/itstrueitstrueitsrealitsreal/ip.git (master) completed! -Feb 06, 2024 3:23:46 PM reposense.report.ReportGenerator generateReposReport +Feb 07, 2024 1:16:31 AM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/ip-dashboard/ip-dashboard/reposense-report -Feb 06, 2024 3:23:47 PM reposense.RepoSense main -INFO: Elapsed processing time: 52.82 second(s) +Feb 07, 2024 1:16:32 AM reposense.RepoSense main +INFO: Elapsed processing time: 50.88 second(s) diff --git a/ruijietay_ip_master/authorship.json b/ruijietay_ip_master/authorship.json index 289a622f..6f9397e7 100644 --- a/ruijietay_ip_master/authorship.json +++ b/ruijietay_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"# Capone project template","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"3. After that, locate the `src/main/java/Capone.java` file, right-click it, and choose `Run Capone.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-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" ░█▀▀░█▀█░█▀█░█▀█░█▀█░█▀▀░","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" ░█░░░█▀█░█▀▀░█░█░█░█░█▀▀░","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" ░▀▀▀░▀░▀░▀░░░▀▀▀░▀░▀░▀▀▀░","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"ruijietay":5,"-":17}},{"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":"ruijietay"},"content":" implementation group: \u0027org.json\u0027, name: \u0027json\u0027, version: \u002720231013\u0027","lastModifiedDate":"2024-01-31"},{"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":"ruijietay"},"content":" mainClass.set(\"capone.Capone\")","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" archiveBaseName \u003d \"capone\"","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"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":{"ruijietay":3,"-":40}},{"path":"src/main/java/capone/Capone.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import capone.commands.Command;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.TaskListCorruptedException;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" * The main class responsible for running the application and handling user commands.","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"public class Capone {","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" private final TaskList tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" private final Ui ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" * Constructs a Capone instance with the specified task list path and name.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" * @param taskListPath The path where the task list is stored.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" * @param taskListName The name of the task list file.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" public Capone(String taskListPath, String taskListName) {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" this.storage \u003d new Storage(taskListPath, taskListName);","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" * Runs the instance, displaying a welcome message and reading tasks from storage.","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" * Continuously processes user commands in a loop till user exits.","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" public void run() {","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" this.ui.printWelcomeMsg();","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" this.storage.readTasksFromJsonFile(this.tasks);","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" } catch (TaskListCorruptedException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" while (true) {","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" Command command \u003d Parser.processInputs();","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" command.execute(tasks, ui, storage);","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" } catch (CaponeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" * The main method to start the Capone application.","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" * @param args Command-line arguments (not used).","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" new Capone(\"./data/\", \"tasks.json\").run();","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":62}},{"path":"src/main/java/capone/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"import capone.commands.ByeCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"import capone.commands.Command;","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"import capone.commands.DeadlineCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"import capone.commands.DeleteCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"import capone.commands.EventCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":"import capone.commands.FindCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":"import capone.commands.HelpCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"import capone.commands.InvalidCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":"import capone.commands.ListCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":"import capone.commands.MarkCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":"import capone.commands.TodoCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"import capone.commands.UnmarkCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidDateException;","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidTimeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" * This class is responsible for processing user inputs and generating","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" * corresponding command objects. It also provides methods for reading","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" * and splitting user inputs, and checking date and time formats.","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":"public class Parser {","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" private static ArrayList\u003cString\u003e inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" private static final Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" * Splits the user input into a list of strings.","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" * @param input The user input to be split.","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" * @return ArrayList of tokens obtained by splitting the input.","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" public static ArrayList\u003cString\u003e splitInput(String input) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(input.split(\"\\\\s+\")));","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" * Reads a line of user input from the console.","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" * @return The user input as a String.","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" public static String readUserInput() {","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" return Parser.scanner.nextLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" * Processes user inputs and returns the appropriate","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" * Command instance based on the first word of the input.","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" * @return Command object corresponding to the user input.","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" public static Command processInputs() {","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" Parser.inputList \u003d Parser.splitInput(Parser.readUserInput());","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" String firstWord \u003d inputList.get(0);","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" if (firstWord.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" } else if (firstWord.equalsIgnoreCase(\"mark\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" return new MarkCommand(Parser.inputList);","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" } else if (firstWord.equalsIgnoreCase(\"unmark\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" return new UnmarkCommand(Parser.inputList);","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" } else if (firstWord.equalsIgnoreCase(\"todo\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" return new TodoCommand(Parser.inputList);","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" } else if (firstWord.equalsIgnoreCase(\"deadline\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" return new DeadlineCommand(inputList);","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" } else if (firstWord.equalsIgnoreCase(\"event\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":" return new EventCommand(inputList);","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":" } else if (firstWord.equalsIgnoreCase(\"delete\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":" return new DeleteCommand(inputList);","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" } else if (firstWord.equalsIgnoreCase(\"find\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" return new FindCommand(inputList);","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":" } else if (firstWord.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":" return new ByeCommand(scanner);","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":" } else if (firstWord.equalsIgnoreCase(\"help\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":" return new HelpCommand();","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" return new InvalidCommand();","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"ruijietay"},"content":" * Checks if the given input string follows the date format \u0027YYYY-MM-DD\u0027.","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"ruijietay"},"content":" * @param input The input string to be checked.","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"ruijietay"},"content":" * @return True if the input matches the date format, false otherwise.","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"ruijietay"},"content":" public static boolean isDateFormat(String input) {","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"ruijietay"},"content":" String dateFormatRegex \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2}\";","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"ruijietay"},"content":" return input.matches(dateFormatRegex);","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"ruijietay"},"content":" * Checks if the given input string follows the time","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"ruijietay"},"content":" * format \u0027HHmm\u0027 (24-hour format).","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"ruijietay"},"content":" * @param input The input string to be checked.","lastModifiedDate":"2024-02-01"},{"lineNumber":108,"author":{"gitId":"ruijietay"},"content":" * @return True if the input matches the time format, false otherwise.","lastModifiedDate":"2024-02-01"},{"lineNumber":109,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"ruijietay"},"content":" public static boolean isTimeFormat(String input) {","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"ruijietay"},"content":" String timeFormatRegex \u003d \"(\\\\d{4})\";","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"ruijietay"},"content":" return input.matches(timeFormatRegex);","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":116,"author":{"gitId":"ruijietay"},"content":" * Processes the date and time components and returns a LocalDateTime object.","lastModifiedDate":"2024-02-01"},{"lineNumber":117,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":118,"author":{"gitId":"ruijietay"},"content":" * @param date The LocalDate object representing the date.","lastModifiedDate":"2024-02-01"},{"lineNumber":119,"author":{"gitId":"ruijietay"},"content":" * @param time The LocalTime object representing the time.","lastModifiedDate":"2024-02-01"},{"lineNumber":120,"author":{"gitId":"ruijietay"},"content":" * @return LocalDateTime object combining the date and time.","lastModifiedDate":"2024-02-01"},{"lineNumber":121,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":122,"author":{"gitId":"ruijietay"},"content":" public static LocalDateTime processDateTime(LocalDate date, LocalTime time) {","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"ruijietay"},"content":" if (date !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"ruijietay"},"content":" if (time !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":125,"author":{"gitId":"ruijietay"},"content":" return date.atTime(time);","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":127,"author":{"gitId":"ruijietay"},"content":" return date.atStartOfDay();","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":129,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"ruijietay"},"content":" if (time !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"ruijietay"},"content":" return LocalDate.now().plusDays(1).atTime(time);","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"ruijietay"},"content":" return null;","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":136,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":137,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":138,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":139,"author":{"gitId":"ruijietay"},"content":" * Parses the input string into a LocalDate object.","lastModifiedDate":"2024-02-01"},{"lineNumber":140,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":141,"author":{"gitId":"ruijietay"},"content":" * @param date The input string representing the date.","lastModifiedDate":"2024-02-01"},{"lineNumber":142,"author":{"gitId":"ruijietay"},"content":" * @return LocalDate object parsed from the input.","lastModifiedDate":"2024-02-01"},{"lineNumber":143,"author":{"gitId":"ruijietay"},"content":" * @throws InvalidDateException If the input string is not a valid date.","lastModifiedDate":"2024-02-01"},{"lineNumber":144,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":145,"author":{"gitId":"ruijietay"},"content":" public static LocalDate parseDate(String date) throws InvalidDateException {","lastModifiedDate":"2024-01-31"},{"lineNumber":146,"author":{"gitId":"ruijietay"},"content":" DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-31"},{"lineNumber":147,"author":{"gitId":"ruijietay"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":148,"author":{"gitId":"ruijietay"},"content":" return LocalDate.parse(date, dateFormatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"ruijietay"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":150,"author":{"gitId":"ruijietay"},"content":" throw new InvalidDateException(\"Oops! You have entered an invalid date. Please try again.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":151,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":152,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":153,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":154,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":155,"author":{"gitId":"ruijietay"},"content":" * Parses the input string into a LocalTime object.","lastModifiedDate":"2024-02-01"},{"lineNumber":156,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":157,"author":{"gitId":"ruijietay"},"content":" * @param time The input string representing the time.","lastModifiedDate":"2024-02-01"},{"lineNumber":158,"author":{"gitId":"ruijietay"},"content":" * @return LocalTime object parsed from the input.","lastModifiedDate":"2024-02-01"},{"lineNumber":159,"author":{"gitId":"ruijietay"},"content":" * @throws InvalidTimeException If the input string is not a valid time.","lastModifiedDate":"2024-02-01"},{"lineNumber":160,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":161,"author":{"gitId":"ruijietay"},"content":" public static LocalTime parseTime(String time) throws InvalidTimeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":162,"author":{"gitId":"ruijietay"},"content":" DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\"HHmm\");","lastModifiedDate":"2024-01-31"},{"lineNumber":163,"author":{"gitId":"ruijietay"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":164,"author":{"gitId":"ruijietay"},"content":" return LocalTime.parse(time, timeFormatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":165,"author":{"gitId":"ruijietay"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":166,"author":{"gitId":"ruijietay"},"content":" throw new InvalidTimeException(\"Oops! You have entered an invalid time. Please try again.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":167,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":168,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":169,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":169}},{"path":"src/main/java/capone/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.io.File;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import org.json.JSONArray;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import org.json.JSONException;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"import org.json.JSONObject;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.TaskListCorruptedException;","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Deadline;","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Event;","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.ToDo;","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" * The Storage class is responsible for reading and writing tasks","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" * to a JSON file. It provides methods to initialize the file if","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" * it doesn\u0027t exist, read and writes tasks to the file.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" * The file is stored in a specified folder with a given filename.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":"public class Storage {","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" private final String jsonFilename;","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" private final String jsonFilepath;","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" * Constructor for the Storage class.","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * @param path The path where the JSON file is stored.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" * @param name The name of the JSON file.","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" public Storage(String path, String name) {","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" this.jsonFilepath \u003d path;","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" this.jsonFilename \u003d name;","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" * Gets the full path of the JSON file,","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" * including the folder path and filename.","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" * @return The full path of the JSON file.","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" private String getFullPath() {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" return this.jsonFilepath + this.jsonFilename;","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" * Gets the filename of the JSON file.","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" * @return The filename of the JSON file.","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" private String getFileName() {","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" return this.jsonFilename;","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" * Gets the folder path where the JSON file is stored.","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" * @return The folder path where the JSON file is stored.","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" private String getFilePath() {","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" return this.jsonFilepath;","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" * Writes tasks from the task list to the JSON file.","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList containing tasks to be written to the file.","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" public void writeTasksToJsonFile(TaskList taskList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" JSONArray jsonArray \u003d new JSONArray();","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":" JSONObject jsonTask \u003d new JSONObject();","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":" jsonTask.put(\"taskType\", task.getTaskType());","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" jsonTask.put(\"description\", task.getDescription());","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" jsonTask.put(\"status\", task.getStatus());","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":" // Add type-specific information for Deadline and Event tasks","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":" jsonTask.put(\"deadline\", ((Deadline) task).getDeadline());","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" jsonTask.put(\"fromDate\", ((Event) task).getFromDateTime());","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" jsonTask.put(\"toDate\", ((Event) task).getToDateTime());","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":" jsonArray.put(jsonTask);","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"ruijietay"},"content":" try (FileWriter fileWriter \u003d new FileWriter(this.getFullPath())) {","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"ruijietay"},"content":" jsonArray.write(fileWriter);","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"ruijietay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"ruijietay"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"ruijietay"},"content":" * Reads tasks from the JSON file and adds them to the task list.","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList where tasks will be added.","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"ruijietay"},"content":" * @throws TaskListCorruptedException If the JSON file is corrupted or has an invalid format.","lastModifiedDate":"2024-02-01"},{"lineNumber":107,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":108,"author":{"gitId":"ruijietay"},"content":" public void readTasksFromJsonFile(TaskList taskList) throws TaskListCorruptedException {","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"ruijietay"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"ruijietay"},"content":" this.initFileIfNotExist();","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"ruijietay"},"content":" String jsonContent \u003d new String(Files.readAllBytes(Paths.get(this.getFullPath())));","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"ruijietay"},"content":" JSONArray jsonArray \u003d new JSONArray(jsonContent);","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"ruijietay"},"content":" for (int i \u003d 0; i \u003c jsonArray.length(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"ruijietay"},"content":" JSONObject jsonTask \u003d jsonArray.getJSONObject(i);","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":118,"author":{"gitId":"ruijietay"},"content":" String type \u003d jsonTask.getString(\"taskType\");","lastModifiedDate":"2024-01-31"},{"lineNumber":119,"author":{"gitId":"ruijietay"},"content":" String description \u003d jsonTask.getString(\"description\");","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"ruijietay"},"content":" boolean status \u003d jsonTask.getBoolean(\"status\");","lastModifiedDate":"2024-01-31"},{"lineNumber":121,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"ruijietay"},"content":" if (type.equals(\"todo\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":123,"author":{"gitId":"ruijietay"},"content":" taskList.addTask(new ToDo(description, status));","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"ruijietay"},"content":" } else if (type.equals(\"deadline\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":125,"author":{"gitId":"ruijietay"},"content":" String deadline \u003d jsonTask.getString(\"deadline\");","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"ruijietay"},"content":" taskList.addTask(new Deadline(description, status, deadline));","lastModifiedDate":"2024-01-31"},{"lineNumber":127,"author":{"gitId":"ruijietay"},"content":" } else if (type.equals(\"event\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":128,"author":{"gitId":"ruijietay"},"content":" String fromDate \u003d jsonTask.getString(\"fromDate\");","lastModifiedDate":"2024-01-31"},{"lineNumber":129,"author":{"gitId":"ruijietay"},"content":" String toDate \u003d jsonTask.getString(\"toDate\");","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"ruijietay"},"content":" taskList.addTask(new Event(description, status, fromDate, toDate));","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"ruijietay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"ruijietay"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"ruijietay"},"content":" } catch (JSONException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":136,"author":{"gitId":"ruijietay"},"content":" initFileIfNotExist();","lastModifiedDate":"2024-01-31"},{"lineNumber":137,"author":{"gitId":"ruijietay"},"content":" throw new TaskListCorruptedException(\"Detected corrupted task list file.\"","lastModifiedDate":"2024-02-01"},{"lineNumber":138,"author":{"gitId":"ruijietay"},"content":" + \" New file will be created when new tasks are created.\");","lastModifiedDate":"2024-02-01"},{"lineNumber":139,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":140,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":141,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":142,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":143,"author":{"gitId":"ruijietay"},"content":" * Initializes the JSON file if it does not exist.","lastModifiedDate":"2024-02-01"},{"lineNumber":144,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":145,"author":{"gitId":"ruijietay"},"content":" public void initFileIfNotExist() {","lastModifiedDate":"2024-01-31"},{"lineNumber":146,"author":{"gitId":"ruijietay"},"content":" // Create the folder if it doesn\u0027t exist","lastModifiedDate":"2024-01-31"},{"lineNumber":147,"author":{"gitId":"ruijietay"},"content":" File folder \u003d new File(this.getFilePath());","lastModifiedDate":"2024-01-31"},{"lineNumber":148,"author":{"gitId":"ruijietay"},"content":" if (!folder.exists()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"ruijietay"},"content":" folder.mkdir();","lastModifiedDate":"2024-01-31"},{"lineNumber":150,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":151,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":152,"author":{"gitId":"ruijietay"},"content":" // Create the file within the folder","lastModifiedDate":"2024-01-31"},{"lineNumber":153,"author":{"gitId":"ruijietay"},"content":" File file \u003d new File(folder, this.getFileName());","lastModifiedDate":"2024-01-31"},{"lineNumber":154,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":155,"author":{"gitId":"ruijietay"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":156,"author":{"gitId":"ruijietay"},"content":" try (FileWriter fileWriter \u003d new FileWriter(file)) {","lastModifiedDate":"2024-01-31"},{"lineNumber":157,"author":{"gitId":"ruijietay"},"content":" fileWriter.write(\"[]\");","lastModifiedDate":"2024-01-31"},{"lineNumber":158,"author":{"gitId":"ruijietay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":159,"author":{"gitId":"ruijietay"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-31"},{"lineNumber":160,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":161,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":162,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":163,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":163}},{"path":"src/main/java/capone/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":" * The TaskList class represents a list of tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" * It provides methods to manage and iterate through tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"public class TaskList implements Iterable\u003cTask\u003e {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" public TaskList() {","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" * Constructs a TaskList with the specified list of tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" * @param taskList The list of tasks to be added to the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * Gets the number of tasks in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" * @return The number of tasks in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" public int getSize() {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" return this.taskList.size();","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" * Gets the task at the specified index in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" * @param ndx The index of the task to retrieve.","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" * @return The task at the specified index.","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" public Task getTask(int ndx) {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" return this.taskList.get(ndx);","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" * Gets the last task in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" * @return The last task in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" public Task getLastTask() {","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" return this.taskList.get(this.getSize() - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" * Removes and returns the task at the specified index in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" * @param ndx The index of the task to remove.","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" * @return The removed task.","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" public Task removeTask(int ndx) {","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" return this.taskList.remove(ndx);","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" * Adds a task to the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" * @return true if the task is added successfully, false otherwise.","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" public boolean addTask(Task task) {","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":" return this.taskList.add(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" * Returns an iterator over the tasks in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":" * @return An iterator over the tasks in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" public Iterator\u003cTask\u003e iterator() {","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" return this.taskList.iterator();","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":" return this.taskList.isEmpty();","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":94}},{"path":"src/main/java/capone/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":" * The Ui class handles user interface-related operations.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":" * It includes methods for printing welcome messages and","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":" * sending messages to the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"public class Ui {","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" * Prints a welcome message with the Capone logo.","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" public void printWelcomeMsg() {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" String logo \u003d \"░█▀▀░█▀█░█▀█░█▀█░█▀█░█▀▀░\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" + \"░█░░░█▀█░█▀▀░█░█░█░█░█▀▀░\\n\"","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" + \"░▀▀▀░▀░▀░▀░░░▀▀▀░▀░▀░▀▀▀░\";","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" System.out.printf(\"Hello! I\u0027m\\n%s\\nWhat can I do for you?\\n%n\", logo);","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" * Sends a message to the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" * @param message The message to be sent.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" public void sendMessage(String message) {","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" System.out.printf(message);","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":30}},{"path":"src/main/java/capone/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import capone.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" * Represents a command to terminate the application. Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" /** Scanner used for handling user input. */","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" private final Scanner scanner;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" * Constructs a ByeCommand with the specified scanner.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" * @param scanner The scanner for user input.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" public ByeCommand(Scanner scanner) {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" this.scanner \u003d scanner;","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" * Executes the ByeCommand, displaying a farewell message and terminating the application.","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList to be updated (not used in this command).","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data (not used in this command).","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If any Capone-related exception occurs.","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" ui.sendMessage(\"Bye. Hope to see you again soon!\\n\");","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" scanner.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" System.exit(0);","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":43}},{"path":"src/main/java/capone/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":" * An abstract class representing a command in the Capone application.","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" * All concrete command classes must extend this class and implement the execute method.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * Executes the command with the specified TaskList, Ui, and Storage.","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList to be updated.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If any Capone-related exception occurs.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" public abstract void execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":25}},{"path":"src/main/java/capone/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import capone.Parser;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"import capone.Ui;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InsufficientArgumentException;","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Deadline;","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * Represents a command to add a deadline task to TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" * Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" /** List containing input parameters for DeadlineCommand. */","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" private final ArrayList\u003cString\u003e inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" * Constructs a DeadlineCommand with the specified input list.","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" * @param inputList The list containing input parameters for the DeadlineCommand.","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" public DeadlineCommand(ArrayList\u003cString\u003e inputList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" this.inputList \u003d inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" * Executes the DeadlineCommand, adding a new deadline task to the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList to be updated.","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data.","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If any Capone-related exception occurs.","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" * @inheritDoc","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" // If the inputList has only one string, throw error (insufficient args).","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" if (inputList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Insufficient arguments!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" + \"Usage: deadline [description] /by [date]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" // Find the index of the /by command.","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" int byNdx \u003d inputList.indexOf(\"/by\");","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" // Catch potential errors from date entry.","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" if (byNdx \u003d\u003d inputList.size() - 1 || byNdx \u003d\u003d -1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Please enter a date for this deadline task!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" + \"Usage: deadline [description] /by [date]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" // Combine description of task into one string.","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" StringBuilder description \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" for (int i \u003d 1; i \u003c byNdx; i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" if (i \u003d\u003d byNdx - 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" description.append(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" description.append(inputList.get(i)).append(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" if (description.toString().equalsIgnoreCase(\"\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Insufficient arguments!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" + \"Usage: deadline [description] /by [date]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" LocalDate date \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":" LocalTime time \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":" // Process input for the deadline (i.e. after the /by command).","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":" StringBuilder byDate \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" for (int i \u003d byNdx + 1; i \u003c inputList.size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" if (Parser.isDateFormat(inputList.get(i))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":" date \u003d Parser.parseDate(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":" continue;","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" if (Parser.isTimeFormat(inputList.get(i))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" time \u003d Parser.parseTime(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" continue;","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":" // If this is the last word to be added.","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"ruijietay"},"content":" if (i \u003d\u003d inputList.size() - 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"ruijietay"},"content":" byDate.append(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"ruijietay"},"content":" byDate.append(inputList.get(i)).append(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"ruijietay"},"content":" LocalDateTime deadlineDateTime \u003d Parser.processDateTime(date, time);","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"ruijietay"},"content":" if (deadlineDateTime !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"ruijietay"},"content":" taskList.addTask(new Deadline(description.toString(), false, deadlineDateTime));","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"ruijietay"},"content":" taskList.addTask(new Deadline(description.toString(), false, byDate.toString()));","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"ruijietay"},"content":" storage.writeTasksToJsonFile(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"ruijietay"},"content":" ui.sendMessage(String.format(\"Got it. I\u0027ve added this task:\\n%s\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":111,"author":{"gitId":"ruijietay"},"content":" + \"Now you have %d task(s) in the list.\\n\",","lastModifiedDate":"2024-02-01"},{"lineNumber":112,"author":{"gitId":"ruijietay"},"content":" taskList.getLastTask().toString(), taskList.getSize()));","lastModifiedDate":"2024-02-01"},{"lineNumber":113,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":114}},{"path":"src/main/java/capone/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import capone.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InsufficientArgumentException;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidIndexException;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * Represents a command to delete a task from the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" * Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" /** List containing input parameters for DeleteCommand. */","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" private final ArrayList\u003cString\u003e inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" * Constructs a DeleteCommand with the specified input list.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" * @param inputList The list containing input parameters for the DeleteCommand.","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" public DeleteCommand(ArrayList\u003cString\u003e inputList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" this.inputList \u003d inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * Executes the DeleteCommand, removing a task from the TaskList based on the provided index.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList to be updated.","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If any Capone-related exception occurs.","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" // If the inputList has more than two arguments, throw exception.","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" if (inputList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Please enter an index of a task you\u0027d like to delete.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" + \"You can view all tasks using the \u0027list\u0027 command.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" + \"Usage: delete [index]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" } else if (inputList.size() \u003e 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" throw new InvalidIndexException(\"Please enter only one index you would like to delete.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" + \"You can view all tasks using the \u0027list\u0027 command.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" + \"Usage: delete [index]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" // Remove the task from the tasks ArrayList.","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" Task removedTask \u003d taskList.removeTask(Integer.parseInt(inputList.get(1)) - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" storage.writeTasksToJsonFile(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" ui.sendMessage(String.format(\"Noted. I\u0027ve removed this task:\\n%s\\nNow you have %d tasks in the list.\\n\",","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" removedTask.toString(), taskList.getSize()));","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" } catch (IndexOutOfBoundsException | NumberFormatException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" throw new InvalidIndexException(\"Sorry, you have entered an invalid index.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" + \"You can check the list of valid indices using the \u0027list\u0027 command.\");","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":67}},{"path":"src/main/java/capone/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import capone.Parser;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"import capone.Ui;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InsufficientArgumentException;","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Event;","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" * Represents a command to add an event task to the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" * Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" /** List containing input parameters for EventCommand. */","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" private final ArrayList\u003cString\u003e inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" * Constructs an EventCommand with the specified input list.","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" * @param inputList The list containing input parameters for the EventCommand.","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" public EventCommand(ArrayList\u003cString\u003e inputList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" this.inputList \u003d inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" * Executes the EventCommand, adding a new event task to the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList to be updated.","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data.","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If any Capone-related exception occurs.","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" // If the inputList has only one string, throw error (insufficient args).","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" if (inputList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Insufficient arguments!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" + \"Usage: event [description] /from [date] /to [date]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" int fromNdx \u003d inputList.indexOf(\"/from\");","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" int toNdx \u003d inputList.indexOf(\"/to\");","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" // If /to is specified before /from, throw error.","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" if (toNdx \u003c fromNdx) {","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" throw new InvalidCommandException(\"Please input from date followed by to date!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" + \"Usage: event [description] /from [date] /to [date]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" // Catch potential errors from date entry.","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" if (fromNdx \u003d\u003d -1 || toNdx \u003d\u003d -1 || toNdx - fromNdx \u003d\u003d 1 || fromNdx - toNdx \u003d\u003d 1","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" || fromNdx \u003d\u003d inputList.size() - 1 || toNdx \u003d\u003d inputList.size() - 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Please enter a start and end date!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" + \"Usage: event [description] /from [date] /to [date]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" // Combine the task description into a single string.","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" StringBuilder description \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" for (int i \u003d 1; i \u003c fromNdx; i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" if (i \u003d\u003d fromNdx - 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" description.append(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" description.append(inputList.get(i)).append(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":" if (description.toString().equalsIgnoreCase(\"\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Insufficient arguments!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" + \"Usage: event [description] /from [date] /to [date]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":" LocalDate fromDate \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":" LocalTime fromTime \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":" // Process input for the deadline (i.e. after the /by command).","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" StringBuilder fromDateString \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" for (int i \u003d fromNdx + 1; i \u003c toNdx; i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" if (Parser.isDateFormat(inputList.get(i))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":" fromDate \u003d Parser.parseDate(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":" continue;","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"ruijietay"},"content":" if (Parser.isTimeFormat(inputList.get(i))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"ruijietay"},"content":" fromTime \u003d Parser.parseTime(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"ruijietay"},"content":" continue;","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"ruijietay"},"content":" // If this is the last word to be added.","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"ruijietay"},"content":" if (i \u003d\u003d inputList.size() - 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"ruijietay"},"content":" fromDateString.append(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"ruijietay"},"content":" fromDateString.append(inputList.get(i)).append(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"ruijietay"},"content":" LocalDate toDate \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"ruijietay"},"content":" LocalTime toTime \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"ruijietay"},"content":" // Process input for the deadline (i.e. after the /by command).","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"ruijietay"},"content":" StringBuilder toDateString \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"ruijietay"},"content":" for (int i \u003d toNdx + 1; i \u003c inputList.size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"ruijietay"},"content":" if (Parser.isDateFormat(inputList.get(i))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"ruijietay"},"content":" toDate \u003d Parser.parseDate(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"ruijietay"},"content":" continue;","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"ruijietay"},"content":" if (Parser.isTimeFormat(inputList.get(i))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":118,"author":{"gitId":"ruijietay"},"content":" toTime \u003d Parser.parseTime(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":119,"author":{"gitId":"ruijietay"},"content":" continue;","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":121,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"ruijietay"},"content":" // If this is the last word to be added.","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"ruijietay"},"content":" if (i \u003d\u003d inputList.size() - 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"ruijietay"},"content":" toDateString.append(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":125,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"ruijietay"},"content":" toDateString.append(inputList.get(i)).append(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":127,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":129,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"ruijietay"},"content":" LocalDateTime fromDateTime \u003d Parser.processDateTime(fromDate, fromTime);","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"ruijietay"},"content":" LocalDateTime toDateTime \u003d Parser.processDateTime(toDate, toTime);","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"ruijietay"},"content":" if (fromDateTime !\u003d null \u0026\u0026 toDateTime !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"ruijietay"},"content":" taskList.addTask(new Event(description.toString(), false, fromDateTime, toDateTime));","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"ruijietay"},"content":" } else if (fromDateTime !\u003d null || toDateTime !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":136,"author":{"gitId":"ruijietay"},"content":" // If either fromDateTime or toDateTime is null but the other is not.","lastModifiedDate":"2024-01-31"},{"lineNumber":137,"author":{"gitId":"ruijietay"},"content":" throw new InvalidCommandException(\"Oops! It seems like there is a format mismatch between\"","lastModifiedDate":"2024-02-01"},{"lineNumber":138,"author":{"gitId":"ruijietay"},"content":" + \"your start and dates and end dates.\\nMake sure you enter both of them in the accepted \"","lastModifiedDate":"2024-02-01"},{"lineNumber":139,"author":{"gitId":"ruijietay"},"content":" + \"date format!\\nAlternatively, you can specify a string for both your start and end dates.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":140,"author":{"gitId":"ruijietay"},"content":" + \"Use the \u0027help\u0027 command for more information.\");","lastModifiedDate":"2024-02-01"},{"lineNumber":141,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":142,"author":{"gitId":"ruijietay"},"content":" taskList.addTask(new Event(description.toString(), false,","lastModifiedDate":"2024-01-31"},{"lineNumber":143,"author":{"gitId":"ruijietay"},"content":" fromDateString.toString(), toDateString.toString()));","lastModifiedDate":"2024-01-31"},{"lineNumber":144,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":145,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":146,"author":{"gitId":"ruijietay"},"content":" storage.writeTasksToJsonFile(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":147,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":148,"author":{"gitId":"ruijietay"},"content":" ui.sendMessage(String.format(\"Got it. I\u0027ve added this task:\\n%s\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":149,"author":{"gitId":"ruijietay"},"content":" + \"Now you have %d task(s) in the list.\\n\", taskList.getLastTask().toString(), taskList.getSize()));","lastModifiedDate":"2024-02-01"},{"lineNumber":150,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":151,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":152,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":152}},{"path":"src/main/java/capone/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import capone.Ui;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InsufficientArgumentException;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * Represents a command to find tasks containing a specific keyword.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" * Inherits from the Command class.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" /** The list of input strings provided by the user for the find command. */","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" private final ArrayList\u003cString\u003e inputList;","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" * Constructs a FindCommand instance with the specified input list.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" * @param inputList The list of input strings provided by the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" public FindCommand(ArrayList\u003cString\u003e inputList) {","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" this.inputList \u003d inputList;","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * Executes the find command, searching for tasks containing a specific keyword.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" * @param taskList The list of tasks to search within.","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" * @param storage The storage to handle data storage operations.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If there is an issue executing the find command.","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" // If the inputList has only one string, throw error (insufficient args).","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" if (this.inputList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Insufficient arguments!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" + \"Usage: deadline [description] /by [date]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" } else if (this.inputList.size() \u003e 2) {","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" throw new InvalidCommandException(\"Too many arguments entered - Please only enter one keyword:\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" + \"Usage: find [keyword]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" String keyword \u003d inputList.get(1);","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" TaskList filteredList \u003d new TaskList();","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" if (task.getDescription().contains(keyword)) {","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" filteredList.addTask(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" if (filteredList.isEmpty()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" ui.sendMessage(String.format(\"No results found for the given keyword %s\\n\", keyword));","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" new ListCommand().execute(filteredList, ui, storage);","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"ruijietay":68}},{"path":"src/main/java/capone/commands/HelpCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":" * Represents a command to display a list of supported commands.","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" * Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * Executes the HelpCommand, displaying a list of supported commands.","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList (not used in this command).","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data (not used in this command).","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If any Capone-related exception occurs.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" ui.sendMessage(\"Commands I understand:\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" + \"1. list - Lists the tasks entered.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" + \"2. todo [description] - Creates a new capone.tasks.ToDo task. Remember to enter the description!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" + \"3. deadline [description] /by [date] - Creates a new capone.tasks.Deadline task.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" + \" Remember to enter the description and date!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" + \" Dates are recognised in the following format - \u0027yyyy-mm-dd HHmm\u0027 (24-hour).\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" + \"4. event [description] /from [date] /to [date] - Creates a new capone.tasks.Event task.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" + \" Remember to enter the description, as well as the start and end date!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" + \" Dates are recognised in the following format - \u0027yyyy-mm-dd HHmm\u0027 (24-hour).\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" + \"5. mark [index] - Marks a task as completed. Use this in conjunction with the \u0027list\u0027 command!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" + \"6. unmark [index] - Unmarks a task. Use this in conjunction with the \u0027list\u0027 command!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" + \"7. delete [index] - Deletes a task. Use this in conjunction with the \u0027list\u0027 command!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" + \"8. find [keyword] - Finds all tasks that matches the given input keyword.\\n\");","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":40}},{"path":"src/main/java/capone/commands/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidCommandException;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":" * Represents a command to handle invalid user commands.","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" * Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * Executes the InvalidCommand, throwing an InvalidCommandException with a helpful message.","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList (not used in this command).","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data (not used in this command).","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" * @throws InvalidCommandException If an invalid command is encountered.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws InvalidCommandException {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" throw new InvalidCommandException(\"I\u0027m sorry, I don\u0027t understand what you just said.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" + \"Use \u0027help\u0027 to display the list of valid commands\");","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":29}},{"path":"src/main/java/capone/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" * Represents a command to list all tasks in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":" * Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" * Executes the ListCommand, displaying the list of tasks to the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList to be displayed.","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data (not used in this command).","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) {","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" for (int i \u003d 0; i \u003c taskList.getSize(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" ui.sendMessage(String.format(\"%d. %s\\n\", i + 1, taskList.getTask(i).toString()));","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":28}},{"path":"src/main/java/capone/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import capone.Ui;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InsufficientArgumentException;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidIndexException;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Task;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * Represents a command to mark a task as completed in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" * Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" /** List containing input parameters for MarkCommand. */","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" private final ArrayList\u003cString\u003e inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" * Constructs a MarkCommand with the specified input list.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" * @param inputList The list containing input parameters for the MarkCommand.","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" public MarkCommand(ArrayList\u003cString\u003e inputList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" this.inputList \u003d inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * Executes the MarkCommand, marking a task as completed in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList to be updated.","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If any Capone-related exception occurs.","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" if (inputList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Please enter an index of a task you\u0027d like to mark.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" + \"You can view all tasks using the \u0027list\u0027 command.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" + \"Usage: mark [index]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" } else if (inputList.size() \u003e 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" throw new InvalidIndexException(\"Please enter only one index you would like to mark.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" + \"You can view all tasks using the \u0027list\u0027 command.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" + \"Usage: mark [index]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" // Mark task as done.","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" Task markedTask \u003d taskList.getTask(Integer.parseInt(inputList.get(1)) - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" markedTask.markTask();","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" storage.writeTasksToJsonFile(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" // Inform the user that the task has been marked.","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" ui.sendMessage(\"Nice! I\u0027ve marked this task as done:\\n\" + markedTask + \"\\n\");","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" } catch (IndexOutOfBoundsException | NumberFormatException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" throw new InvalidIndexException(\"Sorry, you have entered an invalid index.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" + \"You can check the list of valid indices using the \u0027list\u0027 command.\");","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":66}},{"path":"src/main/java/capone/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import capone.Ui;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InsufficientArgumentException;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.ToDo;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" * Represents a command to create a new ToDo task and add it to the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" /** List containing input parameters for TodoCommand. */","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" private final ArrayList\u003cString\u003e inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" * Constructs a TodoCommand with the specified input list.","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" * @param inputList The list containing input parameters for the TodoCommand.","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" public TodoCommand(ArrayList\u003cString\u003e inputList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" this.inputList \u003d inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" * Executes the TodoCommand, creating a new ToDo task and adding it to the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList to be updated.","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If any Capone-related exception occurs.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" // If the inputList has only one string, throw an error (insufficient args).","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" if (inputList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Please enter a description for this capone.tasks.ToDo task!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" + \"Usage: todo [description]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" // Combine the remaining words into a single string.","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" StringBuilder description \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" for (int i \u003d 1; i \u003c inputList.size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" if (i \u003d\u003d inputList.size() - 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" description.append(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" description.append(inputList.get(i)).append(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" ToDo newTodo \u003d new ToDo(description.toString(), false);","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" taskList.addTask(newTodo);","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" storage.writeTasksToJsonFile(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" ui.sendMessage(String.format(\"Got it. I\u0027ve added this task:\\n%s\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" + \"Now you have %d task(s) in the list.\\n\", newTodo.toString(), taskList.getSize()));","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":65}},{"path":"src/main/java/capone/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import capone.Ui;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InsufficientArgumentException;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidIndexException;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Task;","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * Represents a command to unmark a completed task in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" * Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" /** List containing input parameters for UnmarkCommand. */","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" private final ArrayList\u003cString\u003e inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" * Constructs an UnmarkCommand with the specified input list.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" * @param inputList The list containing input parameters for the UnmarkCommand.","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" public UnmarkCommand(ArrayList\u003cString\u003e inputList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" this.inputList \u003d inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * Executes the UnmarkCommand, unmarking a completed task in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList to be updated.","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If any Capone-related exception occurs.","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" public void execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" if (inputList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Please enter an index of a task you\u0027d like to unmark.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" + \"You can view all tasks using the \u0027list\u0027 command.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" + \"Usage: unmark [index]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" } else if (inputList.size() \u003e 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Please enter only one index you would like to unmark.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" + \"You can view all tasks using the \u0027list\u0027 command.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" + \"Usage: unmark [index]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" Task unmarkedTask \u003d taskList.getTask(Integer.parseInt(inputList.get(1)) - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" unmarkedTask.unmarkTask();","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" storage.writeTasksToJsonFile(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" // Inform the user that the task has been marked.","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" ui.sendMessage(\"OK, I\u0027ve marked this task as not done yet:\\n\" + unmarkedTask + \"\\n\");","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" } catch (IndexOutOfBoundsException | NumberFormatException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" throw new InvalidIndexException(\"Sorry, you have entered an invalid index.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" + \"You can check the list of valid indices using the \u0027list\u0027 command.\");","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":65}},{"path":"src/main/java/capone/exceptions/CaponeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.exceptions;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":" * Custom exception class for handling task-related exceptions.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":" * Extends the Java built-in Exception class.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"public abstract class CaponeException extends Exception {","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * Constructs a new CaponeException with the specified error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * @param errorMessage The error message associated with the exception.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" public CaponeException(String errorMessage) {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" super(errorMessage);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ruijietay":19}},{"path":"src/main/java/capone/exceptions/InsufficientArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.exceptions;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":" * Custom exception class for handling insufficient arguments in commands.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":" * Extends the CaponeException class.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"public class InsufficientArgumentException extends CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * Constructs a new InsufficientArgumentException with the specified error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * @param errorMessage The error message associated with the insufficient argument exception.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" public InsufficientArgumentException(String errorMessage) {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" super(errorMessage);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":19}},{"path":"src/main/java/capone/exceptions/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.exceptions;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":" * Custom exception class for handling invalid commands.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":" * Extends the CaponeException class.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"public class InvalidCommandException extends CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * Constructs a new InvalidCommandException with the specified error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * @param errorMessage The error message associated with the invalid command exception.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" public InvalidCommandException(String errorMessage) {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" super(errorMessage);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":19}},{"path":"src/main/java/capone/exceptions/InvalidDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.exceptions;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":" * Custom exception class for handling invalid date format in commands.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":" * Extends the CaponeException class.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"public class InvalidDateException extends CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * Constructs a new InvalidDateException with the specified error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * @param errorMessage The error message associated with the invalid date exception.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" public InvalidDateException(String errorMessage) {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" super(errorMessage);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":19}},{"path":"src/main/java/capone/exceptions/InvalidIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.exceptions;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":" * Custom exception class for handling invalid indices in commands.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":" * Extends the CaponeException class.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"public class InvalidIndexException extends CaponeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * Constructs a new InvalidIndexException with the specified error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * @param errorMessage The error message associated with the invalid index exception.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" public InvalidIndexException(String errorMessage) {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" super(errorMessage);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"ruijietay":19}},{"path":"src/main/java/capone/exceptions/InvalidTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.exceptions;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":" * Custom exception class for handling invalid time format in commands.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":" * Extends the CaponeException class.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"public class InvalidTimeException extends CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * Constructs a new InvalidTimeException with the specified error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * @param errorMessage The error message associated with the invalid time exception.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" public InvalidTimeException(String errorMessage) {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" super(errorMessage);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":19}},{"path":"src/main/java/capone/exceptions/TaskListCorruptedException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.exceptions;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":" * Custom exception class for handling corrupted task lists.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":" * Extends the CaponeException class.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"public class TaskListCorruptedException extends CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * Constructs a new TaskListCorruptedException with the specified error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * @param errorMessage The error message associated with the task list corruption exception.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" public TaskListCorruptedException(String errorMessage) {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" super(errorMessage);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":19}},{"path":"src/main/java/capone/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * Represents a task with a specific deadline.","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" * Extends the Task class.","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" * The deadline in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" * Used when deadline is not provided in LocalDateTime format.","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" private String deadlineString;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" /** The deadline in LocalDateTime format. */","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" * Constructs a Deadline task with the specified description,","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" * status, and deadline in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" * @param status The completion status of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" * @param deadline The deadline of the task in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" public Deadline(String description, boolean status, String deadline) {","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" super(TaskType.DEADLINE, description, status);","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" this.deadlineString \u003d deadline;","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" * Constructs a Deadline task with the specified description, status,","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" * and deadline in LocalDateTime format.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" * @param status The completion status of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" * @param deadline The deadline of the task in LocalDateTime format.","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" public Deadline(String description, boolean status, LocalDateTime deadline) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" super(TaskType.DEADLINE, description, status);","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" * Gets the formatted deadline as a string.","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" * @return The formatted deadline string.","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" public String getDeadline() {","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" if (this.deadline !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" return this.deadline.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" return this.deadlineString;","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" * Overrides the toString method to represent the Deadline task as a string.","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" * @return A formatted string representation of the Deadline task.","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.getDeadline() + \")\";","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ruijietay":70}},{"path":"src/main/java/capone/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * Represents an event task with a from and to date entry.","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" * Extends the Task class.","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" * The start date and time of the event in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" * Used when fromDate is not provided in LocalDateTime format.","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" protected String fromDateTimeString;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" * The end date and time of the event in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" * Used when toDate is not provided in LocalDateTime format.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" protected String toDateTimeString;","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" /** The start date and time of the event in LocalDateTime format. */","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" private LocalDateTime fromDateTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" /** The end date and time of the event in LocalDateTime format. */","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" private LocalDateTime toDateTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" * Constructs an Event task with the specified description,","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * status, start date, and end date in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" * @param status The completion status of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" * @param fromDate The start date and time of the event in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" * @param toDate The end date and time of the event in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" public Event(String description, boolean status, String fromDate, String toDate) {","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" super(TaskType.EVENT, description, status);","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" this.fromDateTimeString \u003d fromDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" this.toDateTimeString \u003d toDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" * Constructs an Event task with the specified description, status,","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" * start date, and end date in LocalDateTime format.","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" * @param status The completion status of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" * @param fromDate The start date and time of the event in LocalDateTime format.","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" * @param toDate The end date and time of the event in LocalDateTime format.","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" public Event(String description, boolean status, LocalDateTime fromDate, LocalDateTime toDate) {","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" super(TaskType.EVENT, description, status);","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" this.fromDateTime \u003d fromDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" this.toDateTime \u003d toDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" * Gets the formatted start date and time of the event as a string.","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" * @return The formatted start date and time string.","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" public String getFromDateTime() {","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" if (this.fromDateTime !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" return this.fromDateTime.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" return this.fromDateTimeString;","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" * Gets the formatted end date and time of the event as a string.","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" * @return The formatted end date and time string.","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":" public String getToDateTime() {","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":" if (this.toDateTime !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" return this.toDateTime.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":" return this.toDateTimeString;","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" * Overrides the toString method to represent the Event task as a string.","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" * @return A formatted string representation of the Event task.","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"ruijietay"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.getFromDateTime()","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"ruijietay"},"content":" + \" to: \" + this.getToDateTime() + \")\";","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ruijietay":96}},{"path":"src/main/java/capone/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":" * Represents an abstract task.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":" * Contains common attributes and methods shared by various types of tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * Enumeration representing the type of task","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" * (TODO, DEADLINE, EVENT).","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" protected enum TaskType {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" TODO(\"todo\"), DEADLINE(\"deadline\"), EVENT(\"event\");","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" private String taskName;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" TaskType(String name) {","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" this.taskName \u003d name;","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" public String toString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" return this.taskName;","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" /** The type of the task */","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" /** The description of the task. */","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" /** The completion status of the task */","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" * Constructs a task with the specified type, description, and completion status.","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" * @param type The type of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" * @param status The completion status of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" public Task(TaskType type, String description, boolean status) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" this.taskType \u003d type;","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" this.isDone \u003d status;","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" * Gets the type of the task as a string.","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" * @return The type of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" public String getTaskType() {","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" return this.taskType.toString();","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" * Gets the description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" * @return The description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" return this.description;","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" * Gets the completion status of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" * @return The completion status of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" public Boolean getStatus() {","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" return this.isDone;","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":" * Marks the task as done.","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" public void markTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" * Unmarks the task as done.","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" public void unmarkTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"ruijietay"},"content":" * Gets the status icon for the task (X if done, empty if not).","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"ruijietay"},"content":" * @return The status icon for the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"ruijietay"},"content":" private String getStatusIcon() {","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"ruijietay"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2024-02-01"},{"lineNumber":100,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"ruijietay"},"content":" * Overrides the toString method to represent the task as a string.","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"ruijietay"},"content":" * @return A formatted string representation of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":107,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"ruijietay"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"ruijietay"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ruijietay":111}},{"path":"src/main/java/capone/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":" * Represents a ToDo task.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":" * Inherits from the Task class and provides specific implementation for ToDo tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * Constructs a ToDo task with the specified description and completion status.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * @param description The description of the ToDo task.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" * @param status The completion status of the ToDo task.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" public ToDo(String description, boolean status) {","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" super(TaskType.TODO, description, status);","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" * Overrides the toString method to represent the ToDo task as a string.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" * @return A formatted string representation of the ToDo task.","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ruijietay":30}},{"path":"src/test/java/capone/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidDateException;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidTimeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" * Test class for the Parser utility class.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" * Tests the behavior of parseDate when an invalid date format is provided.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" * Expects an InvalidDateException to be thrown.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" public void parseDate_invalidDate1_throwsInvalidDateException() {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" assertThrows(InvalidDateException.class, () -\u003e {","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" Parser.parseDate(\"this is not a valid date\");","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" });","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" * Tests the behavior of parseDate when an invalid date","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * (with incorrect month and day format) is provided.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" * Expects an InvalidDateException to be thrown.","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" public void parseDate_invalidDate2_throwsInvalidDateException() {","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" assertThrows(InvalidDateException.class, () -\u003e {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" Parser.parseDate(\"2023-2-2\");","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" });","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" * Tests the behavior of parseDate with a valid date.","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" * Expects the parsed LocalDate to match the expected value.","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" * @throws InvalidDateException if the date is invalid (which is not expected in this test).","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" public void parseDate_validDate_success() throws InvalidDateException {","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" LocalDate expectedDate \u003d LocalDate.of(2001, 9, 26);","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" LocalDate actualDate \u003d Parser.parseDate(\"2001-09-26\");","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" assertEquals(expectedDate, actualDate);","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" * Tests the behavior of parseTime when an invalid time format is provided.","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" * Expects an InvalidTimeException to be thrown.","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" public void parseTime_invalidTime1_throwsInvalidTimeException() {","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" assertThrows(InvalidTimeException.class, () -\u003e {","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" Parser.parseTime(\"this is not a valid time\");","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" });","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" * Tests the behavior of parseTime when an invalid time","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" * (with incorrect hour) is provided.","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" * Expects an InvalidTimeException to be thrown.","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" public void parseTime_invalidTime2_throwsInvalidTimeException() {","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" assertThrows(InvalidTimeException.class, () -\u003e {","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" Parser.parseTime(\"2395\");","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" });","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" * Tests the behavior of parseTime with a valid time.","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" * Expects the parsed LocalTime to match the expected value.","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":" * @throws InvalidTimeException if the time is invalid (which is not expected in this test).","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" public void parseTime_validTime_success() throws InvalidTimeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" LocalTime expectedTime \u003d LocalTime.of(23, 59);","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" LocalTime actualTime \u003d Parser.parseTime(\"2359\");","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":" assertEquals(expectedTime, actualTime);","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":92}},{"path":"src/test/java/capone/commands/DeadlineCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import java.io.PrintStream;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"import capone.Parser;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"import capone.Ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InsufficientArgumentException;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" * Test class for the DeadlineCommand.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":"public class DeadlineCommandTest {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" private Ui ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" private Storage storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" private final ByteArrayOutputStream stdoutMsg \u003d new ByteArrayOutputStream();","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" * Initializes the components needed for each test.","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" @BeforeEach","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" public void initializeComponents() {","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" this.storage \u003d new Storage(\"./data/\", \"test.json\");","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" System.setOut(new PrintStream(stdoutMsg));","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" * Tests the behavior of the DeadlineCommand when no description is provided.","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" * Expects an InsufficientArgumentException to be thrown with the correct error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" public void execute_noDescription_throwsInsufficientArgumentException() {","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" Command deadlineCommand \u003d new DeadlineCommand(Parser.splitInput(\"deadline /by 2023-12-12 1800\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" InsufficientArgumentException exception \u003d assertThrows(InsufficientArgumentException.class, () -\u003e {","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" deadlineCommand.execute(this.taskList, this.ui, this.storage);","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" });","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" String expectedMsg \u003d \"Insufficient arguments!\\nUsage: deadline [description] /by [date]\";","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" assertEquals(expectedMsg, exception.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" * Tests the behavior of the DeadlineCommand when no date/time is provided.","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" * Expects an InsufficientArgumentException to be thrown with the correct error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" public void execute_noDateTime_throwsInsufficientArgumentException() {","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" Command deadlineCommand \u003d new DeadlineCommand(Parser.splitInput(\"deadline do iP /by\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" InsufficientArgumentException exception \u003d assertThrows(InsufficientArgumentException.class, () -\u003e {","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" deadlineCommand.execute(this.taskList, this.ui, this.storage);","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" });","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" String expectedMsg \u003d \"Please enter a date for this deadline task!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" + \"Usage: deadline [description] /by [date]\";","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" assertEquals(expectedMsg, exception.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" * Tests the behavior of the DeadlineCommand with valid input.","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" * Expects the command to execute successfully and the correct message to be printed.","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":" public void execute_validInput_success() throws CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":" Command deadlineCommand \u003d new DeadlineCommand(Parser.splitInput(\"deadline clean room /by 2024-01-31 1800\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" deadlineCommand.execute(this.taskList, this.ui, this.storage);","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":" String expectedMsg \u003d String.format(\"Got it. I\u0027ve added this task:\\n%s\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":" + \"Now you have %d task(s) in the list.\\n\", taskList.getLastTask().toString(), taskList.getSize());","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" assertEquals(expectedMsg, stdoutMsg.toString());","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":90}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"-h","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"todo make cake","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"thisisaninvalidinput","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"deadline submit weekly report /by friday 26 Jan 2023","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"event party at home /from saturday, 27 jan 2023 /to 28 jan 2023, sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"delete asdf","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"delete 333","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":"unmark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":"deadline ps1 /by 2024-02-01 2359","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":"deadline ps2 /by 2024-02-01 9999","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":"deadline ps1 /by 2069-02-01 2359","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"event career fair /from 2024-02-05 1300 /to 2024-02-10 2200","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":"event career fair /from 2024-02-05 1300 /to thisisnotadate","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":"event career fair /from 2024-02-05 9999 /to 2024-02-10 2200","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ruijietay":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":"ruijietay"},"content":"REM run the program, feed capone.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":"java -classpath ..\\bin Capone \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":{"ruijietay":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":"ruijietay"},"content":"# run the program, feed capone.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"java -classpath ../bin Capone \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":"ruijietay"},"content":"#dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"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":{"ruijietay":3,"-":35}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"# Capone project template","lastModifiedDate":"2024-01-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"3. After that, locate the `src/main/java/Capone.java` file, right-click it, and choose `Run Capone.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-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" ░█▀▀░█▀█░█▀█░█▀█░█▀█░█▀▀░","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" ░█░░░█▀█░█▀▀░█░█░█░█░█▀▀░","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" ░▀▀▀░▀░▀░▀░░░▀▀▀░▀░▀░▀▀▀░","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"ruijietay":5,"-":17}},{"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":"ruijietay"},"content":" // JSONArray","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" implementation group: \u0027org.json\u0027, name: \u0027json\u0027, version: \u002720231013\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" // JUnit tests","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" // JavaFX","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" mainClass.set(\"capone.Capone\")","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" archiveBaseName \u003d \"capone\"","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"ruijietay":21,"-":40}},{"path":"src/main/java/capone/Capone.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import capone.commands.Command;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.TaskListCorruptedException;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import capone.ui.cli.Cli;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" * The main class responsible for running the application and handling user commands.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"public class Capone {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" private static final String STORAGE_PATH \u003d \"./data/\";","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" private static final String STORAGE_FILE \u003d \"tasks.json\";","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" private final TaskList tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" private final Storage storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" private final Ui ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" * Constructs a Capone instance with the specified task list path and name.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" * @param taskListPath The path where the task list is stored.","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" * @param taskListName The name of the task list file.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" public Capone(String taskListPath, String taskListName) {","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" this.storage \u003d new Storage(taskListPath, taskListName);","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" this.ui \u003d new Cli();","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * Constructs a Capone instance with the default task list path and name.","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" public Capone() {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" this.storage \u003d new Storage(Capone.STORAGE_PATH, Capone.STORAGE_FILE);","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" this.tasks \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" this.ui \u003d new Cli();","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" * Runs the instance, displaying a welcome message and reading tasks from storage.","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" * Continuously processes user commands in a loop till user exits.","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" public void runCli() {","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" this.ui.printWelcomeMsg();","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" this.storage.readTasksFromJsonFile(this.tasks);","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" } catch (TaskListCorruptedException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" * Runs the instance, displaying a welcome message and reading tasks from storage.","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" * Continuously processes user commands in a loop till user exits.","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" public void runGui() {","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" this.storage.readTasksFromJsonFile(this.tasks);","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" } catch (TaskListCorruptedException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" * The main method to start the Capone application.","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" * @param args Command-line arguments (not used).","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" new Capone().runCli();","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":" * Gets the response from processing the user\u0027s input.","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":" * @param input The user\u0027s input.","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" public String getResponse(String input) {","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":" Command command \u003d Parser.processInputs(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":" return command.execute(tasks, ui, storage);","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":" } catch (CaponeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" return e.getMessage();","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":" * Gets the ui object of this Capone instance.","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"ruijietay"},"content":" * @return The ui instance associated with this Capone instance.","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"ruijietay"},"content":" public Ui getUi() {","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"ruijietay"},"content":" return this.ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":99}},{"path":"src/main/java/capone/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.time.DateTimeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"import capone.commands.ByeCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"import capone.commands.Command;","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"import capone.commands.DeadlineCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"import capone.commands.DeleteCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"import capone.commands.EventCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":"import capone.commands.FindCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":"import capone.commands.HelpCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"import capone.commands.InvalidCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":"import capone.commands.ListCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":"import capone.commands.MarkCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":"import capone.commands.TodoCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"import capone.commands.UnmarkCommand;","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidDateException;","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidTimeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" * This class is responsible for processing user inputs and generating","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" * corresponding command objects. It also provides methods for reading","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" * and splitting user inputs, and checking date and time formats.","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":"public class Parser {","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" private static ArrayList\u003cString\u003e inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" private static final Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" * Splits the user input into a list of strings.","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" * @param input The user input to be split.","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" * @return ArrayList of tokens obtained by splitting the input.","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" public static ArrayList\u003cString\u003e splitInput(String input) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(input.split(\"\\\\s+\")));","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" * Reads a line of user input from the console.","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" * @return The user input as a String.","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" public static String readUserInput() {","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" return Parser.scanner.nextLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" * Processes user inputs and returns the appropriate","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" * Command instance based on the first word of the input.","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" * @return Command object corresponding to the user input.","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" public static Command processInputs() {","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" Parser.inputList \u003d Parser.splitInput(Parser.readUserInput());","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" String firstWord \u003d inputList.get(0);","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" return Parser.findCommand(firstWord);","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" * Processes user inputs and returns the appropriate","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" * Command instance based on the first word of the input.","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" * @return Command object corresponding to the user input.","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" public static Command processInputs(String input) {","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" Parser.inputList \u003d Parser.splitInput(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" String firstWord \u003d inputList.get(0);","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":" return Parser.findCommand(firstWord);","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" * Finds the command type from the user\u0027s input.","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":" * @param command The user\u0027s input command.","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":" * @return A new instance of the user\u0027s command.","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" private static Command findCommand(String command) {","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" if (command.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" return new ListCommand();","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":" } else if (command.equalsIgnoreCase(\"mark\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":" return new MarkCommand(Parser.inputList);","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":" } else if (command.equalsIgnoreCase(\"unmark\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"ruijietay"},"content":" return new UnmarkCommand(Parser.inputList);","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"ruijietay"},"content":" } else if (command.equalsIgnoreCase(\"todo\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"ruijietay"},"content":" return new TodoCommand(Parser.inputList);","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"ruijietay"},"content":" } else if (command.equalsIgnoreCase(\"deadline\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"ruijietay"},"content":" return new DeadlineCommand(inputList);","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"ruijietay"},"content":" } else if (command.equalsIgnoreCase(\"event\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"ruijietay"},"content":" return new EventCommand(inputList);","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"ruijietay"},"content":" } else if (command.equalsIgnoreCase(\"delete\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"ruijietay"},"content":" return new DeleteCommand(inputList);","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"ruijietay"},"content":" } else if (command.equalsIgnoreCase(\"find\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"ruijietay"},"content":" return new FindCommand(inputList);","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"ruijietay"},"content":" } else if (command.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"ruijietay"},"content":" return new ByeCommand(scanner);","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"ruijietay"},"content":" } else if (command.equalsIgnoreCase(\"help\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":107,"author":{"gitId":"ruijietay"},"content":" return new HelpCommand();","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"ruijietay"},"content":" return new InvalidCommand();","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"ruijietay"},"content":" * Checks if the given input string follows the date format \u0027YYYY-MM-DD\u0027.","lastModifiedDate":"2024-02-01"},{"lineNumber":115,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"ruijietay"},"content":" * @param input The input string to be checked.","lastModifiedDate":"2024-02-01"},{"lineNumber":117,"author":{"gitId":"ruijietay"},"content":" * @return True if the input matches the date format, false otherwise.","lastModifiedDate":"2024-02-01"},{"lineNumber":118,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":119,"author":{"gitId":"ruijietay"},"content":" public static boolean isDateFormat(String input) {","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"ruijietay"},"content":" String dateFormatRegex \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2}\";","lastModifiedDate":"2024-01-31"},{"lineNumber":121,"author":{"gitId":"ruijietay"},"content":" return input.matches(dateFormatRegex);","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-01-31"},{"lineNumber":125,"author":{"gitId":"ruijietay"},"content":" * Checks if the given input string follows the time","lastModifiedDate":"2024-02-01"},{"lineNumber":126,"author":{"gitId":"ruijietay"},"content":" * format \u0027HHmm\u0027 (24-hour format).","lastModifiedDate":"2024-02-01"},{"lineNumber":127,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"ruijietay"},"content":" * @param input The input string to be checked.","lastModifiedDate":"2024-02-01"},{"lineNumber":129,"author":{"gitId":"ruijietay"},"content":" * @return True if the input matches the time format, false otherwise.","lastModifiedDate":"2024-02-01"},{"lineNumber":130,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"ruijietay"},"content":" public static boolean isTimeFormat(String input) {","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"ruijietay"},"content":" String timeFormatRegex \u003d \"(\\\\d{4})\";","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"ruijietay"},"content":" return input.matches(timeFormatRegex);","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":136,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":137,"author":{"gitId":"ruijietay"},"content":" * Processes the date and time components and returns a LocalDateTime object.","lastModifiedDate":"2024-02-01"},{"lineNumber":138,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":139,"author":{"gitId":"ruijietay"},"content":" * @param date The LocalDate object representing the date.","lastModifiedDate":"2024-02-01"},{"lineNumber":140,"author":{"gitId":"ruijietay"},"content":" * @param time The LocalTime object representing the time.","lastModifiedDate":"2024-02-01"},{"lineNumber":141,"author":{"gitId":"ruijietay"},"content":" * @return LocalDateTime object combining the date and time.","lastModifiedDate":"2024-02-01"},{"lineNumber":142,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":143,"author":{"gitId":"ruijietay"},"content":" public static LocalDateTime processDateTime(LocalDate date, LocalTime time) {","lastModifiedDate":"2024-01-31"},{"lineNumber":144,"author":{"gitId":"ruijietay"},"content":" if (date !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":145,"author":{"gitId":"ruijietay"},"content":" if (time !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":146,"author":{"gitId":"ruijietay"},"content":" return date.atTime(time);","lastModifiedDate":"2024-01-31"},{"lineNumber":147,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":148,"author":{"gitId":"ruijietay"},"content":" return date.atStartOfDay();","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":150,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":151,"author":{"gitId":"ruijietay"},"content":" if (time !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":152,"author":{"gitId":"ruijietay"},"content":" return LocalDate.now().plusDays(1).atTime(time);","lastModifiedDate":"2024-01-31"},{"lineNumber":153,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":154,"author":{"gitId":"ruijietay"},"content":" return null;","lastModifiedDate":"2024-01-31"},{"lineNumber":155,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":156,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":157,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":158,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":159,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":160,"author":{"gitId":"ruijietay"},"content":" * Parses the input string into a LocalDate object.","lastModifiedDate":"2024-02-01"},{"lineNumber":161,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":162,"author":{"gitId":"ruijietay"},"content":" * @param date The input string representing the date.","lastModifiedDate":"2024-02-01"},{"lineNumber":163,"author":{"gitId":"ruijietay"},"content":" * @return LocalDate object parsed from the input.","lastModifiedDate":"2024-02-01"},{"lineNumber":164,"author":{"gitId":"ruijietay"},"content":" * @throws InvalidDateException If the input string is not a valid date.","lastModifiedDate":"2024-02-01"},{"lineNumber":165,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":166,"author":{"gitId":"ruijietay"},"content":" public static LocalDate parseDate(String date) throws InvalidDateException {","lastModifiedDate":"2024-01-31"},{"lineNumber":167,"author":{"gitId":"ruijietay"},"content":" DateTimeFormatter dateFormatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd\");","lastModifiedDate":"2024-01-31"},{"lineNumber":168,"author":{"gitId":"ruijietay"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":169,"author":{"gitId":"ruijietay"},"content":" return LocalDate.parse(date, dateFormatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":170,"author":{"gitId":"ruijietay"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":171,"author":{"gitId":"ruijietay"},"content":" throw new InvalidDateException(\"Oops! You have entered an invalid date. Please try again.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":172,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":173,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":174,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":175,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":176,"author":{"gitId":"ruijietay"},"content":" * Parses the input string into a LocalTime object.","lastModifiedDate":"2024-02-01"},{"lineNumber":177,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":178,"author":{"gitId":"ruijietay"},"content":" * @param time The input string representing the time.","lastModifiedDate":"2024-02-01"},{"lineNumber":179,"author":{"gitId":"ruijietay"},"content":" * @return LocalTime object parsed from the input.","lastModifiedDate":"2024-02-01"},{"lineNumber":180,"author":{"gitId":"ruijietay"},"content":" * @throws InvalidTimeException If the input string is not a valid time.","lastModifiedDate":"2024-02-01"},{"lineNumber":181,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":182,"author":{"gitId":"ruijietay"},"content":" public static LocalTime parseTime(String time) throws InvalidTimeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":183,"author":{"gitId":"ruijietay"},"content":" DateTimeFormatter timeFormatter \u003d DateTimeFormatter.ofPattern(\"HHmm\");","lastModifiedDate":"2024-01-31"},{"lineNumber":184,"author":{"gitId":"ruijietay"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":185,"author":{"gitId":"ruijietay"},"content":" return LocalTime.parse(time, timeFormatter);","lastModifiedDate":"2024-01-31"},{"lineNumber":186,"author":{"gitId":"ruijietay"},"content":" } catch (DateTimeException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":187,"author":{"gitId":"ruijietay"},"content":" throw new InvalidTimeException(\"Oops! You have entered an invalid time. Please try again.\");","lastModifiedDate":"2024-01-31"},{"lineNumber":188,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":189,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":190,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":190}},{"path":"src/main/java/capone/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.io.File;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import org.json.JSONArray;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import org.json.JSONException;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"import org.json.JSONObject;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.TaskListCorruptedException;","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Deadline;","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Event;","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.ToDo;","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" * The Storage class is responsible for reading and writing tasks","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" * to a JSON file. It provides methods to initialize the file if","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" * it doesn\u0027t exist, read and writes tasks to the file.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" * The file is stored in a specified folder with a given filename.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":"public class Storage {","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" private final String jsonFilename;","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" private final String jsonFilepath;","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" * Constructor for the Storage class.","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * @param path The path where the JSON file is stored.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" * @param name The name of the JSON file.","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" public Storage(String path, String name) {","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" this.jsonFilepath \u003d path;","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" this.jsonFilename \u003d name;","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" * Gets the full path of the JSON file,","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" * including the folder path and filename.","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" * @return The full path of the JSON file.","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" private String getFullPath() {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" return this.jsonFilepath + this.jsonFilename;","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" * Gets the filename of the JSON file.","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" * @return The filename of the JSON file.","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" private String getFileName() {","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" return this.jsonFilename;","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" * Gets the folder path where the JSON file is stored.","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" * @return The folder path where the JSON file is stored.","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" private String getFilePath() {","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" return this.jsonFilepath;","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" * Writes tasks from the task list to the JSON file.","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList containing tasks to be written to the file.","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" public void writeTasksToJsonFile(TaskList taskList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" JSONArray jsonArray \u003d new JSONArray();","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":" JSONObject jsonTask \u003d new JSONObject();","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":" jsonTask.put(\"taskType\", task.getTaskType());","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" jsonTask.put(\"description\", task.getDescription());","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" jsonTask.put(\"status\", task.getStatus());","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":" // Add type-specific information for Deadline and Event tasks","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":" if (task instanceof Deadline) {","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":" jsonTask.put(\"deadline\", ((Deadline) task).getDeadline());","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" jsonTask.put(\"fromDate\", ((Event) task).getFromDateTime());","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" jsonTask.put(\"toDate\", ((Event) task).getToDateTime());","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":" jsonArray.put(jsonTask);","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"ruijietay"},"content":" try (FileWriter fileWriter \u003d new FileWriter(this.getFullPath())) {","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"ruijietay"},"content":" jsonArray.write(fileWriter);","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"ruijietay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"ruijietay"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"ruijietay"},"content":" * Reads tasks from the JSON file and adds them to the task list.","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList where tasks will be added.","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"ruijietay"},"content":" * @throws TaskListCorruptedException If the JSON file is corrupted or has an invalid format.","lastModifiedDate":"2024-02-01"},{"lineNumber":107,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":108,"author":{"gitId":"ruijietay"},"content":" public void readTasksFromJsonFile(TaskList taskList) throws TaskListCorruptedException {","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"ruijietay"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"ruijietay"},"content":" this.initFileIfNotExist();","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"ruijietay"},"content":" String jsonContent \u003d new String(Files.readAllBytes(Paths.get(this.getFullPath())));","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"ruijietay"},"content":" JSONArray jsonArray \u003d new JSONArray(jsonContent);","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"ruijietay"},"content":" for (int i \u003d 0; i \u003c jsonArray.length(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"ruijietay"},"content":" JSONObject jsonTask \u003d jsonArray.getJSONObject(i);","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":118,"author":{"gitId":"ruijietay"},"content":" String type \u003d jsonTask.getString(\"taskType\");","lastModifiedDate":"2024-01-31"},{"lineNumber":119,"author":{"gitId":"ruijietay"},"content":" String description \u003d jsonTask.getString(\"description\");","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"ruijietay"},"content":" boolean status \u003d jsonTask.getBoolean(\"status\");","lastModifiedDate":"2024-01-31"},{"lineNumber":121,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"ruijietay"},"content":" if (type.equals(\"todo\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":123,"author":{"gitId":"ruijietay"},"content":" taskList.addTask(new ToDo(description, status));","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"ruijietay"},"content":" } else if (type.equals(\"deadline\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":125,"author":{"gitId":"ruijietay"},"content":" String deadline \u003d jsonTask.getString(\"deadline\");","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"ruijietay"},"content":" taskList.addTask(new Deadline(description, status, deadline));","lastModifiedDate":"2024-01-31"},{"lineNumber":127,"author":{"gitId":"ruijietay"},"content":" } else if (type.equals(\"event\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":128,"author":{"gitId":"ruijietay"},"content":" String fromDate \u003d jsonTask.getString(\"fromDate\");","lastModifiedDate":"2024-01-31"},{"lineNumber":129,"author":{"gitId":"ruijietay"},"content":" String toDate \u003d jsonTask.getString(\"toDate\");","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"ruijietay"},"content":" taskList.addTask(new Event(description, status, fromDate, toDate));","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"ruijietay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"ruijietay"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"ruijietay"},"content":" } catch (JSONException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":136,"author":{"gitId":"ruijietay"},"content":" initFileIfNotExist();","lastModifiedDate":"2024-01-31"},{"lineNumber":137,"author":{"gitId":"ruijietay"},"content":" throw new TaskListCorruptedException(\"Detected corrupted task list file.\"","lastModifiedDate":"2024-02-01"},{"lineNumber":138,"author":{"gitId":"ruijietay"},"content":" + \" New file will be created when new tasks are created.\");","lastModifiedDate":"2024-02-01"},{"lineNumber":139,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":140,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":141,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":142,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":143,"author":{"gitId":"ruijietay"},"content":" * Initializes the JSON file if it does not exist.","lastModifiedDate":"2024-02-01"},{"lineNumber":144,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":145,"author":{"gitId":"ruijietay"},"content":" public void initFileIfNotExist() {","lastModifiedDate":"2024-01-31"},{"lineNumber":146,"author":{"gitId":"ruijietay"},"content":" // Create the folder if it doesn\u0027t exist","lastModifiedDate":"2024-01-31"},{"lineNumber":147,"author":{"gitId":"ruijietay"},"content":" File folder \u003d new File(this.getFilePath());","lastModifiedDate":"2024-01-31"},{"lineNumber":148,"author":{"gitId":"ruijietay"},"content":" if (!folder.exists()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"ruijietay"},"content":" folder.mkdir();","lastModifiedDate":"2024-01-31"},{"lineNumber":150,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":151,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":152,"author":{"gitId":"ruijietay"},"content":" // Create the file within the folder","lastModifiedDate":"2024-01-31"},{"lineNumber":153,"author":{"gitId":"ruijietay"},"content":" File file \u003d new File(folder, this.getFileName());","lastModifiedDate":"2024-01-31"},{"lineNumber":154,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":155,"author":{"gitId":"ruijietay"},"content":" if (!file.exists()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":156,"author":{"gitId":"ruijietay"},"content":" try (FileWriter fileWriter \u003d new FileWriter(file)) {","lastModifiedDate":"2024-01-31"},{"lineNumber":157,"author":{"gitId":"ruijietay"},"content":" fileWriter.write(\"[]\");","lastModifiedDate":"2024-01-31"},{"lineNumber":158,"author":{"gitId":"ruijietay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":159,"author":{"gitId":"ruijietay"},"content":" e.printStackTrace();","lastModifiedDate":"2024-01-31"},{"lineNumber":160,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":161,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":162,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":163,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":163}},{"path":"src/main/java/capone/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":" * The TaskList class represents a list of tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" * It provides methods to manage and iterate through tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"public class TaskList implements Iterable\u003cTask\u003e {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" private final ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" public TaskList() {","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" this.taskList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" * Constructs a TaskList with the specified list of tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" * @param taskList The list of tasks to be added to the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" public TaskList(ArrayList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * Gets the number of tasks in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" * @return The number of tasks in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" public int getSize() {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" return this.taskList.size();","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" * Gets the task at the specified index in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" * @param ndx The index of the task to retrieve.","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" * @return The task at the specified index.","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" public Task getTask(int ndx) {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" return this.taskList.get(ndx);","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" * Gets the last task in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" * @return The last task in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" public Task getLastTask() {","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" return this.taskList.get(this.getSize() - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" * Removes and returns the task at the specified index in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" * @param ndx The index of the task to remove.","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" * @return The removed task.","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" public Task removeTask(int ndx) {","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" return this.taskList.remove(ndx);","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" * Adds a task to the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" * @param task The task to be added.","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" * @return true if the task is added successfully, false otherwise.","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" public boolean addTask(Task task) {","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":" return this.taskList.add(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" * Returns an iterator over the tasks in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":" * @return An iterator over the tasks in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" public Iterator\u003cTask\u003e iterator() {","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" return this.taskList.iterator();","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":" return this.taskList.isEmpty();","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":94}},{"path":"src/main/java/capone/commands/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import capone.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" * Represents a command to terminate the application. Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" /** Scanner used for handling user input. */","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" private final Scanner scanner;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" * Constructs a ByeCommand with the specified scanner.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" * @param scanner The scanner for user input.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" public ByeCommand(Scanner scanner) {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" this.scanner \u003d scanner;","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" * Executes the ByeCommand, displaying a farewell message and terminating the application.","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList to be updated (not used in this command).","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data (not used in this command).","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If any Capone-related exception occurs.","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" scanner.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" System.exit(0);","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" return ui.sendGoodbye();","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":43}},{"path":"src/main/java/capone/commands/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":" * An abstract class representing a command in the Capone application.","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" * All concrete command classes must extend this class and implement the execute method.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"public abstract class Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * Executes the command with the specified TaskList, Ui, and Storage.","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList to be updated.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" * @return The String output of the bot after executing the user\u0027s command.","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If any Capone-related exception occurs.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" public abstract String execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":26}},{"path":"src/main/java/capone/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import capone.Parser;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InsufficientArgumentException;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Deadline;","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"import capone.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * Represents a command to add a deadline task to TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" * Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" /** List containing input parameters for DeadlineCommand. */","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" private final ArrayList\u003cString\u003e inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" * Constructs a DeadlineCommand with the specified input list.","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" * @param inputList The list containing input parameters for the DeadlineCommand.","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" public DeadlineCommand(ArrayList\u003cString\u003e inputList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" this.inputList \u003d inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" * Executes the DeadlineCommand, adding a new deadline task to the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList to be updated.","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data.","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" * @return The String output of the bot after executing the user\u0027s command.","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If any Capone-related exception occurs.","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" // If the inputList has only one string, throw error (insufficient args).","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" if (inputList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Insufficient arguments!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" + \"Usage: deadline [description] /by [date]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" // Find the index of the /by command.","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" int byNdx \u003d inputList.indexOf(\"/by\");","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" // Catch potential errors from date entry.","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" if (byNdx \u003d\u003d inputList.size() - 1 || byNdx \u003d\u003d -1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Please enter a date for this deadline task!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" + \"Usage: deadline [description] /by [date]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" // Combine description of task into one string.","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" StringBuilder description \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" for (int i \u003d 1; i \u003c byNdx; i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" if (i \u003d\u003d byNdx - 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" description.append(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" description.append(inputList.get(i)).append(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" if (description.toString().equalsIgnoreCase(\"\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Insufficient arguments!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" + \"Usage: deadline [description] /by [date]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" LocalDate date \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":" LocalTime time \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":" // Process input for the deadline (i.e. after the /by command).","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":" StringBuilder byDate \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" for (int i \u003d byNdx + 1; i \u003c inputList.size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" if (Parser.isDateFormat(inputList.get(i))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":" date \u003d Parser.parseDate(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":" continue;","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" if (Parser.isTimeFormat(inputList.get(i))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" time \u003d Parser.parseTime(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" continue;","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":" // If this is the last word to be added.","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"ruijietay"},"content":" if (i \u003d\u003d inputList.size() - 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"ruijietay"},"content":" byDate.append(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"ruijietay"},"content":" byDate.append(inputList.get(i)).append(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"ruijietay"},"content":" LocalDateTime deadlineDateTime \u003d Parser.processDateTime(date, time);","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"ruijietay"},"content":" if (deadlineDateTime !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"ruijietay"},"content":" taskList.addTask(new Deadline(description.toString(), false, deadlineDateTime));","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"ruijietay"},"content":" taskList.addTask(new Deadline(description.toString(), false, byDate.toString()));","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"ruijietay"},"content":" storage.writeTasksToJsonFile(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"ruijietay"},"content":" return ui.sendDeadline(taskList);","lastModifiedDate":"2024-02-07"},{"lineNumber":111,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":112}},{"path":"src/main/java/capone/commands/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InsufficientArgumentException;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidIndexException;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"import capone.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * Represents a command to delete a task from the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" * Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" /** List containing input parameters for DeleteCommand. */","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" private final ArrayList\u003cString\u003e inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" * Constructs a DeleteCommand with the specified input list.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" * @param inputList The list containing input parameters for the DeleteCommand.","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" public DeleteCommand(ArrayList\u003cString\u003e inputList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" this.inputList \u003d inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * Executes the DeleteCommand, removing a task from the TaskList based on the provided index.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList to be updated.","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" * @return The String output of the bot after executing the user\u0027s command.","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If any Capone-related exception occurs.","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" // If the inputList has more than two arguments, throw exception.","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" if (inputList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Please enter an index of a task you\u0027d like to delete.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" + \"You can view all tasks using the \u0027list\u0027 command.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" + \"Usage: delete [index]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" } else if (inputList.size() \u003e 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" throw new InvalidIndexException(\"Please enter only one index you would like to delete.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" + \"You can view all tasks using the \u0027list\u0027 command.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" + \"Usage: delete [index]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" // Remove the task from the tasks ArrayList.","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" Task removedTask \u003d taskList.removeTask(Integer.parseInt(inputList.get(1)) - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" storage.writeTasksToJsonFile(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" return ui.sendDelete(taskList, removedTask);","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" } catch (IndexOutOfBoundsException | NumberFormatException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" throw new InvalidIndexException(\"Sorry, you have entered an invalid index.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" + \"You can check the list of valid indices using the \u0027list\u0027 command.\");","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":67}},{"path":"src/main/java/capone/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import capone.Parser;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InsufficientArgumentException;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Event;","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"import capone.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" * Represents a command to add an event task to the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" * Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" /** List containing input parameters for EventCommand. */","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" private final ArrayList\u003cString\u003e inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" * Constructs an EventCommand with the specified input list.","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" * @param inputList The list containing input parameters for the EventCommand.","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" public EventCommand(ArrayList\u003cString\u003e inputList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" this.inputList \u003d inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" * Executes the EventCommand, adding a new event task to the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList to be updated.","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data.","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" * @return The String output of the bot after executing the user\u0027s command.","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If any Capone-related exception occurs.","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" // If the inputList has only one string, throw error (insufficient args).","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" if (inputList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Insufficient arguments!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" + \"Usage: event [description] /from [date] /to [date]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" int fromNdx \u003d inputList.indexOf(\"/from\");","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" int toNdx \u003d inputList.indexOf(\"/to\");","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" // If /to is specified before /from, throw error.","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" if (toNdx \u003c fromNdx) {","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" throw new InvalidCommandException(\"Please input from date followed by to date!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" + \"Usage: event [description] /from [date] /to [date]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" // Catch potential errors from date entry.","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" if (fromNdx \u003d\u003d -1 || toNdx \u003d\u003d -1 || toNdx - fromNdx \u003d\u003d 1 || fromNdx - toNdx \u003d\u003d 1","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" || fromNdx \u003d\u003d inputList.size() - 1 || toNdx \u003d\u003d inputList.size() - 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Please enter a start and end date!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" + \"Usage: event [description] /from [date] /to [date]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" // Combine the task description into a single string.","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" StringBuilder description \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" for (int i \u003d 1; i \u003c fromNdx; i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" if (i \u003d\u003d fromNdx - 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" description.append(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" description.append(inputList.get(i)).append(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":" if (description.toString().equalsIgnoreCase(\"\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Insufficient arguments!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" + \"Usage: event [description] /from [date] /to [date]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":" LocalDate fromDate \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":" LocalTime fromTime \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" // Process input for the deadline (i.e. after the /by command).","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" StringBuilder fromDateString \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" for (int i \u003d fromNdx + 1; i \u003c toNdx; i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":" if (Parser.isDateFormat(inputList.get(i))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":" fromDate \u003d Parser.parseDate(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":" continue;","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"ruijietay"},"content":" if (Parser.isTimeFormat(inputList.get(i))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"ruijietay"},"content":" fromTime \u003d Parser.parseTime(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"ruijietay"},"content":" continue;","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"ruijietay"},"content":" // If this is the last word to be added.","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"ruijietay"},"content":" if (i \u003d\u003d inputList.size() - 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"ruijietay"},"content":" fromDateString.append(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"ruijietay"},"content":" fromDateString.append(inputList.get(i)).append(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"ruijietay"},"content":" LocalDate toDate \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"ruijietay"},"content":" LocalTime toTime \u003d null;","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"ruijietay"},"content":" // Process input for the deadline (i.e. after the /by command).","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"ruijietay"},"content":" StringBuilder toDateString \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"ruijietay"},"content":" for (int i \u003d toNdx + 1; i \u003c inputList.size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"ruijietay"},"content":" if (Parser.isDateFormat(inputList.get(i))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"ruijietay"},"content":" toDate \u003d Parser.parseDate(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"ruijietay"},"content":" continue;","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":118,"author":{"gitId":"ruijietay"},"content":" if (Parser.isTimeFormat(inputList.get(i))) {","lastModifiedDate":"2024-01-31"},{"lineNumber":119,"author":{"gitId":"ruijietay"},"content":" toTime \u003d Parser.parseTime(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"ruijietay"},"content":" continue;","lastModifiedDate":"2024-01-31"},{"lineNumber":121,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"ruijietay"},"content":" // If this is the last word to be added.","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"ruijietay"},"content":" if (i \u003d\u003d inputList.size() - 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":125,"author":{"gitId":"ruijietay"},"content":" toDateString.append(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":127,"author":{"gitId":"ruijietay"},"content":" toDateString.append(inputList.get(i)).append(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":129,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"ruijietay"},"content":" LocalDateTime fromDateTime \u003d Parser.processDateTime(fromDate, fromTime);","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"ruijietay"},"content":" LocalDateTime toDateTime \u003d Parser.processDateTime(toDate, toTime);","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"ruijietay"},"content":" if (fromDateTime !\u003d null \u0026\u0026 toDateTime !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"ruijietay"},"content":" taskList.addTask(new Event(description.toString(), false, fromDateTime, toDateTime));","lastModifiedDate":"2024-01-31"},{"lineNumber":136,"author":{"gitId":"ruijietay"},"content":" } else if (fromDateTime !\u003d null || toDateTime !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":137,"author":{"gitId":"ruijietay"},"content":" // If either fromDateTime or toDateTime is null but the other is not.","lastModifiedDate":"2024-01-31"},{"lineNumber":138,"author":{"gitId":"ruijietay"},"content":" throw new InvalidCommandException(\"Oops! It seems like there is a format mismatch between\"","lastModifiedDate":"2024-02-01"},{"lineNumber":139,"author":{"gitId":"ruijietay"},"content":" + \"your start and dates and end dates.\\nMake sure you enter both of them in the accepted \"","lastModifiedDate":"2024-02-01"},{"lineNumber":140,"author":{"gitId":"ruijietay"},"content":" + \"date format!\\nAlternatively, you can specify a string for both your start and end dates.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":141,"author":{"gitId":"ruijietay"},"content":" + \"Use the \u0027help\u0027 command for more information.\");","lastModifiedDate":"2024-02-01"},{"lineNumber":142,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":143,"author":{"gitId":"ruijietay"},"content":" taskList.addTask(new Event(description.toString(), false,","lastModifiedDate":"2024-01-31"},{"lineNumber":144,"author":{"gitId":"ruijietay"},"content":" fromDateString.toString(), toDateString.toString()));","lastModifiedDate":"2024-01-31"},{"lineNumber":145,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":146,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":147,"author":{"gitId":"ruijietay"},"content":" storage.writeTasksToJsonFile(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":148,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"ruijietay"},"content":" return ui.sendEvent(taskList);","lastModifiedDate":"2024-02-07"},{"lineNumber":150,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":151,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":151}},{"path":"src/main/java/capone/commands/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InsufficientArgumentException;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidCommandException;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"import capone.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * Represents a command to find tasks containing a specific keyword.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" * Inherits from the Command class.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" /** The list of input strings provided by the user for the find command. */","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" private final ArrayList\u003cString\u003e inputList;","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" * Constructs a FindCommand instance with the specified input list.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" * @param inputList The list of input strings provided by the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" public FindCommand(ArrayList\u003cString\u003e inputList) {","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" this.inputList \u003d inputList;","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * Executes the find command, searching for tasks containing a specific keyword.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" * @param taskList The list of tasks to search within.","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" * @param ui The user interface for displaying messages.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" * @param storage The storage to handle data storage operations.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" * @return The String output of the bot after executing the user\u0027s command.","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If there is an issue executing the find command.","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" // If the inputList has only one string, throw error (insufficient args).","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" if (this.inputList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Insufficient arguments!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" + \"Usage: deadline [description] /by [date]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" } else if (this.inputList.size() \u003e 2) {","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" throw new InvalidCommandException(\"Too many arguments entered - Please only enter one keyword:\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" + \"Usage: find [keyword]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" String keyword \u003d inputList.get(1);","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" TaskList filteredList \u003d new TaskList();","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" for (Task task : taskList) {","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" if (task.getDescription().contains(keyword)) {","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" filteredList.addTask(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" if (filteredList.isEmpty()) {","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" return ui.sendNoResults(keyword);","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" } else {","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" new ListCommand().execute(filteredList, ui, storage);","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" return null;","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"ruijietay":70}},{"path":"src/main/java/capone/commands/HelpCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":" * Represents a command to display a list of supported commands.","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" * Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"public class HelpCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * Executes the HelpCommand, displaying a list of supported commands.","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList (not used in this command).","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data (not used in this command).","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" * @return The String output of the bot after executing the user\u0027s command.","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If any Capone-related exception occurs.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" return ui.sendHelp();","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":29}},{"path":"src/main/java/capone/commands/InvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidCommandException;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":" * Represents a command to handle invalid user commands.","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" * Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"public class InvalidCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * Executes the InvalidCommand, throwing an InvalidCommandException with a helpful message.","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList (not used in this command).","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data (not used in this command).","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" * @return The String output of the bot after executing the user\u0027s command (not used).","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" * @throws InvalidCommandException If an invalid command is encountered.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws InvalidCommandException {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" throw new InvalidCommandException(\"I\u0027m sorry, I don\u0027t understand what you just said.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" + \"Use \u0027help\u0027 to display the list of valid commands\");","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":30}},{"path":"src/main/java/capone/commands/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":" * Represents a command to list all tasks in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" * Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * Executes the ListCommand, displaying the list of tasks to the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList to be displayed.","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data (not used in this command).","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" * @return The String output of the bot after executing the user\u0027s command (not used).","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If there is an issue executing the find command.","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" return ui.sendList(taskList);","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":29}},{"path":"src/main/java/capone/commands/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InsufficientArgumentException;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidIndexException;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Task;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"import capone.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * Represents a command to mark a task as completed in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" * Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" /** List containing input parameters for MarkCommand. */","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" private final ArrayList\u003cString\u003e inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" * Constructs a MarkCommand with the specified input list.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" * @param inputList The list containing input parameters for the MarkCommand.","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" public MarkCommand(ArrayList\u003cString\u003e inputList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" this.inputList \u003d inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * Executes the MarkCommand, marking a task as completed in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList to be updated.","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" * @return The String output of the bot after executing the user\u0027s command.","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If any Capone-related exception occurs.","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" if (inputList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Please enter an index of a task you\u0027d like to mark.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" + \"You can view all tasks using the \u0027list\u0027 command.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" + \"Usage: mark [index]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" } else if (inputList.size() \u003e 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" throw new InvalidIndexException(\"Please enter only one index you would like to mark.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" + \"You can view all tasks using the \u0027list\u0027 command.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" + \"Usage: mark [index]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" // Mark task as done.","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" Task markedTask \u003d taskList.getTask(Integer.parseInt(inputList.get(1)) - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" markedTask.markTask();","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" storage.writeTasksToJsonFile(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" // Inform the user that the task has been marked.","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" return ui.sendMark(markedTask);","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" } catch (IndexOutOfBoundsException | NumberFormatException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" throw new InvalidIndexException(\"Sorry, you have entered an invalid index.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" + \"You can check the list of valid indices using the \u0027list\u0027 command.\");","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":67}},{"path":"src/main/java/capone/commands/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InsufficientArgumentException;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.ToDo;","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import capone.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" * Represents a command to create a new ToDo task and add it to the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" /** List containing input parameters for TodoCommand. */","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" private final ArrayList\u003cString\u003e inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" * Constructs a TodoCommand with the specified input list.","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" * @param inputList The list containing input parameters for the TodoCommand.","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" public TodoCommand(ArrayList\u003cString\u003e inputList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" this.inputList \u003d inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" * Executes the TodoCommand, creating a new ToDo task and adding it to the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList to be updated.","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" * @return The String output of the bot after executing the user\u0027s command.","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If any Capone-related exception occurs.","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" // If the inputList has only one string, throw an error (insufficient args).","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" if (inputList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Please enter a description for this capone.tasks.ToDo task!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" + \"Usage: todo [description]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" // Combine the remaining words into a single string.","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" StringBuilder description \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" for (int i \u003d 1; i \u003c inputList.size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" if (i \u003d\u003d inputList.size() - 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" description.append(inputList.get(i));","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" description.append(inputList.get(i)).append(\" \");","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" ToDo newTodo \u003d new ToDo(description.toString(), false);","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" taskList.addTask(newTodo);","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" storage.writeTasksToJsonFile(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" return ui.sendTodo(taskList);","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":65}},{"path":"src/main/java/capone/commands/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InsufficientArgumentException;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidIndexException;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Task;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"import capone.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * Represents a command to unmark a completed task in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" * Extends the abstract class Command.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" /** List containing input parameters for UnmarkCommand. */","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" private final ArrayList\u003cString\u003e inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" * Constructs an UnmarkCommand with the specified input list.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" * @param inputList The list containing input parameters for the UnmarkCommand.","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" public UnmarkCommand(ArrayList\u003cString\u003e inputList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" this.inputList \u003d inputList;","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * Executes the UnmarkCommand, unmarking a completed task in the TaskList.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" * @param taskList The TaskList to be updated.","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" * @param ui The Ui to interact with the user.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" * @param storage The Storage for saving data.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" * @return The String output of the bot after executing the user\u0027s command.","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" * @throws CaponeException If any Capone-related exception occurs.","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" public String execute(TaskList taskList, Ui ui, Storage storage) throws CaponeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" if (inputList.size() \u003d\u003d 1) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Please enter an index of a task you\u0027d like to unmark.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" + \"You can view all tasks using the \u0027list\u0027 command.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" + \"Usage: unmark [index]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" } else if (inputList.size() \u003e 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" throw new InsufficientArgumentException(\"Please enter only one index you would like to unmark.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" + \"You can view all tasks using the \u0027list\u0027 command.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" + \"Usage: unmark [index]\");","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" Task unmarkedTask \u003d taskList.getTask(Integer.parseInt(inputList.get(1)) - 1);","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" unmarkedTask.unmarkTask();","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" storage.writeTasksToJsonFile(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" // Inform the user that the task has been marked.","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" return ui.sendUnmark(unmarkedTask);","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" } catch (IndexOutOfBoundsException | NumberFormatException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" throw new InvalidIndexException(\"Sorry, you have entered an invalid index.\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" + \"You can check the list of valid indices using the \u0027list\u0027 command.\");","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":66}},{"path":"src/main/java/capone/exceptions/CaponeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.exceptions;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":" * Custom exception class for handling task-related exceptions.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":" * Extends the Java built-in Exception class.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"public abstract class CaponeException extends Exception {","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * Constructs a new CaponeException with the specified error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * @param errorMessage The error message associated with the exception.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" public CaponeException(String errorMessage) {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" super(errorMessage);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ruijietay":19}},{"path":"src/main/java/capone/exceptions/InsufficientArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.exceptions;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":" * Custom exception class for handling insufficient arguments in commands.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":" * Extends the CaponeException class.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"public class InsufficientArgumentException extends CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * Constructs a new InsufficientArgumentException with the specified error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * @param errorMessage The error message associated with the insufficient argument exception.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" public InsufficientArgumentException(String errorMessage) {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" super(errorMessage);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":19}},{"path":"src/main/java/capone/exceptions/InvalidCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.exceptions;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":" * Custom exception class for handling invalid commands.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":" * Extends the CaponeException class.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"public class InvalidCommandException extends CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * Constructs a new InvalidCommandException with the specified error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * @param errorMessage The error message associated with the invalid command exception.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" public InvalidCommandException(String errorMessage) {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" super(errorMessage);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":19}},{"path":"src/main/java/capone/exceptions/InvalidDateException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.exceptions;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":" * Custom exception class for handling invalid date format in commands.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":" * Extends the CaponeException class.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"public class InvalidDateException extends CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * Constructs a new InvalidDateException with the specified error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * @param errorMessage The error message associated with the invalid date exception.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" public InvalidDateException(String errorMessage) {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" super(errorMessage);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":19}},{"path":"src/main/java/capone/exceptions/InvalidIndexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.exceptions;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":" * Custom exception class for handling invalid indices in commands.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":" * Extends the CaponeException class.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"public class InvalidIndexException extends CaponeException {","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * Constructs a new InvalidIndexException with the specified error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * @param errorMessage The error message associated with the invalid index exception.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" public InvalidIndexException(String errorMessage) {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" super(errorMessage);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"ruijietay":19}},{"path":"src/main/java/capone/exceptions/InvalidTimeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.exceptions;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":" * Custom exception class for handling invalid time format in commands.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":" * Extends the CaponeException class.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"public class InvalidTimeException extends CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * Constructs a new InvalidTimeException with the specified error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * @param errorMessage The error message associated with the invalid time exception.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" public InvalidTimeException(String errorMessage) {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" super(errorMessage);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":19}},{"path":"src/main/java/capone/exceptions/TaskListCorruptedException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.exceptions;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":" * Custom exception class for handling corrupted task lists.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":" * Extends the CaponeException class.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"public class TaskListCorruptedException extends CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * Constructs a new TaskListCorruptedException with the specified error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * @param errorMessage The error message associated with the task list corruption exception.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" public TaskListCorruptedException(String errorMessage) {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" super(errorMessage);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":19}},{"path":"src/main/java/capone/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * Represents a task with a specific deadline.","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" * Extends the Task class.","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" * The deadline in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" * Used when deadline is not provided in LocalDateTime format.","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" private String deadlineString;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" /** The deadline in LocalDateTime format. */","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" * Constructs a Deadline task with the specified description,","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" * status, and deadline in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" * @param status The completion status of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" * @param deadline The deadline of the task in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" public Deadline(String description, boolean status, String deadline) {","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" super(TaskType.DEADLINE, description, status);","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" this.deadlineString \u003d deadline;","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" * Constructs a Deadline task with the specified description, status,","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" * and deadline in LocalDateTime format.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" * @param status The completion status of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" * @param deadline The deadline of the task in LocalDateTime format.","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" public Deadline(String description, boolean status, LocalDateTime deadline) {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" super(TaskType.DEADLINE, description, status);","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" * Gets the formatted deadline as a string.","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" * @return The formatted deadline string.","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" public String getDeadline() {","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" if (this.deadline !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" return this.deadline.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" return this.deadlineString;","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" * Overrides the toString method to represent the Deadline task as a string.","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" * @return A formatted string representation of the Deadline task.","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.getDeadline() + \")\";","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ruijietay":70}},{"path":"src/main/java/capone/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * Represents an event task with a from and to date entry.","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" * Extends the Task class.","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" * The start date and time of the event in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" * Used when fromDate is not provided in LocalDateTime format.","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" protected String fromDateTimeString;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" * The end date and time of the event in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" * Used when toDate is not provided in LocalDateTime format.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" protected String toDateTimeString;","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" /** The start date and time of the event in LocalDateTime format. */","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" private LocalDateTime fromDateTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" /** The end date and time of the event in LocalDateTime format. */","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" private LocalDateTime toDateTime;","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" * Constructs an Event task with the specified description,","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * status, start date, and end date in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" * @param status The completion status of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" * @param fromDate The start date and time of the event in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" * @param toDate The end date and time of the event in string format.","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" public Event(String description, boolean status, String fromDate, String toDate) {","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" super(TaskType.EVENT, description, status);","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" this.fromDateTimeString \u003d fromDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" this.toDateTimeString \u003d toDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" * Constructs an Event task with the specified description, status,","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" * start date, and end date in LocalDateTime format.","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" * @param status The completion status of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" * @param fromDate The start date and time of the event in LocalDateTime format.","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" * @param toDate The end date and time of the event in LocalDateTime format.","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" public Event(String description, boolean status, LocalDateTime fromDate, LocalDateTime toDate) {","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" super(TaskType.EVENT, description, status);","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" this.fromDateTime \u003d fromDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" this.toDateTime \u003d toDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" * Gets the formatted start date and time of the event as a string.","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" * @return The formatted start date and time string.","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" public String getFromDateTime() {","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" if (this.fromDateTime !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" return this.fromDateTime.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" return this.fromDateTimeString;","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" * Gets the formatted end date and time of the event as a string.","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" * @return The formatted end date and time string.","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":" public String getToDateTime() {","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":" if (this.toDateTime !\u003d null) {","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" return this.toDateTime.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH:mm\"));","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":" return this.toDateTimeString;","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" * Overrides the toString method to represent the Event task as a string.","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" * @return A formatted string representation of the Event task.","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"ruijietay"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.getFromDateTime()","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"ruijietay"},"content":" + \" to: \" + this.getToDateTime() + \")\";","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":96,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ruijietay":96}},{"path":"src/main/java/capone/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":" * Represents an abstract task.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":" * Contains common attributes and methods shared by various types of tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * Enumeration representing the type of task","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" * (TODO, DEADLINE, EVENT).","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" protected enum TaskType {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" TODO(\"todo\"), DEADLINE(\"deadline\"), EVENT(\"event\");","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" private String taskName;","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" TaskType(String name) {","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" this.taskName \u003d name;","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" public String toString() {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" return this.taskName;","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" /** The type of the task */","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" protected TaskType taskType;","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" /** The description of the task. */","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" protected String description;","lastModifiedDate":"2024-01-23"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" /** The completion status of the task */","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-23"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" * Constructs a task with the specified type, description, and completion status.","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" * @param type The type of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" * @param description The description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" * @param status The completion status of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" public Task(TaskType type, String description, boolean status) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" this.taskType \u003d type;","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-23"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" this.isDone \u003d status;","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" * Gets the type of the task as a string.","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" * @return The type of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" public String getTaskType() {","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" return this.taskType.toString();","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" * Gets the description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" * @return The description of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" return this.description;","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" * Gets the completion status of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" * @return The completion status of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" public Boolean getStatus() {","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" return this.isDone;","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":" * Marks the task as done.","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" public void markTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" * Unmarks the task as done.","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" public void unmarkTask() {","lastModifiedDate":"2024-01-24"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":93,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"ruijietay"},"content":" * Gets the status icon for the task (X if done, empty if not).","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"ruijietay"},"content":" * @return The status icon for the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"ruijietay"},"content":" private String getStatusIcon() {","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"ruijietay"},"content":" return (this.isDone ? \"X\" : \" \");","lastModifiedDate":"2024-02-01"},{"lineNumber":100,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"ruijietay"},"content":" * Overrides the toString method to represent the task as a string.","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"ruijietay"},"content":" * @return A formatted string representation of the task.","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":107,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":108,"author":{"gitId":"ruijietay"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":109,"author":{"gitId":"ruijietay"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-24"},{"lineNumber":110,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":111,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"ruijietay":111}},{"path":"src/main/java/capone/tasks/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":" * Represents a ToDo task.","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":" * Inherits from the Task class and provides specific implementation for ToDo tasks.","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * Constructs a ToDo task with the specified description and completion status.","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * @param description The description of the ToDo task.","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" * @param status The completion status of the ToDo task.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" public ToDo(String description, boolean status) {","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" super(TaskType.TODO, description, status);","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" * Overrides the toString method to represent the ToDo task as a string.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" * @return A formatted string representation of the ToDo task.","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ruijietay":30}},{"path":"src/main/java/capone/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * The Ui abstract class defines the interface for user interface operations.","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" * It includes methods for printing welcome messages and sending messages to the user.","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"public abstract class Ui {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" * Prints a welcome message with the Capone logo.","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * @return Return the Capone logo.","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" public String printWelcomeMsg() {","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" String logo \u003d \"░█▀▀░█▀█░█▀█░█▀█░█▀█░█▀▀░\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" + \"░█░░░█▀█░█▀▀░█░█░█░█░█▀▀░\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" + \"░▀▀▀░▀░▀░▀░░░▀▀▀░▀░▀░▀▀▀░\";","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" String output \u003d String.format(\"Hello! I\u0027m\\n%s\\nWhat can I do for you?\\n%n\", logo);","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" System.out.printf(output);","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" return output;","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" * Sends a goodbye message to the user.","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" public abstract String sendGoodbye();","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * Sends a formatted message after the user creates a Deadline task.","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" * @param taskList The list of tasks created.","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" public abstract String sendDeadline(TaskList taskList);","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" * Sends a formatted message after the user deletes a task.","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" * @param taskList The list of tasks created.","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" * @param deletedTask The task that was deleted.","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" public abstract String sendDelete(TaskList taskList, Task deletedTask);","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" * Sends a formatted message after the user creates an Event task.","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" * @param taskList The list of tasks created.","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" public abstract String sendEvent(TaskList taskList);","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" * Sends a formatted message after the user searches for a task","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" * has no results.","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" * @param keyword The list of tasks created.","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" public abstract String sendNoResults(String keyword);","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" * Sends a message displaying the help information.","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" public abstract String sendHelp();","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" * Sends a formatted message showing the list of available tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" * @param taskList The list of tasks to display.","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" public abstract String sendList(TaskList taskList);","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" * Sends a formatted message after the user marks a task.","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":" * @param task The task to be marked as complete.","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":" public abstract String sendMark(Task task);","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":" * Sends a formatted message after the user creates a ToDo task.","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":" * @param taskList The list of tasks created.","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" public abstract String sendTodo(TaskList taskList);","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":" * Sends a formatted message after the user unmarks a task.","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":" * @param task The task to be marked as incomplete.","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"ruijietay"},"content":" public abstract String sendUnmark(Task task);","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"ruijietay":95}},{"path":"src/main/java/capone/ui/cli/Cli.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.ui.cli;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import capone.tasks.Task;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.ui.Ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" * The Cli class defines the interface for user interface operations via a","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":" * command line interface. It includes methods to print formatted messages","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" * to the command line.","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"public class Cli extends Ui {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * Sends a goodbye message to the user.","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" public String sendGoodbye() {","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" String output \u003d \"Bye. Hope to see you again soon!\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" System.out.printf(output);","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" return output;","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" * Sends a formatted message after the user creates a Deadline task.","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" * @param taskList The list of tasks created.","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" * @return The formatted output of the command.","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" public String sendDeadline(TaskList taskList) {","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" String output \u003d String.format(\"Got it. I\u0027ve added this task:\\n%s\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" + \"Now you have %d task(s) in the list.\\n\",","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" taskList.getLastTask().toString(), taskList.getSize());","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" System.out.printf(output);","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" return output;","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" * Sends a formatted message after the user deletes a task.","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" * @param taskList The list of tasks created.","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" * @param deletedTask The task that was deleted.","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" * @return The formatted output of the command.","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" public String sendDelete(TaskList taskList, Task deletedTask) {","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" String output \u003d String.format(\"Noted. I\u0027ve removed this task:\\n%s\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" + \"Now you have %d tasks in the list.\\n\",","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" deletedTask.toString(), taskList.getSize());","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" System.out.printf(output);","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" return output;","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" * Sends a formatted message after the user creates an Event task.","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" * @param taskList The list of tasks created.","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" * @return The formatted output of the command.","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" public String sendEvent(TaskList taskList) {","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" String output \u003d String.format(\"Got it. I\u0027ve added this task:\\n%s\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" + \"Now you have %d task(s) in the list.\\n\",","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" taskList.getLastTask().toString(), taskList.getSize());","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" System.out.printf(output);","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" return output;","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" * Sends a formatted message after the user searches for a task","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" * has no results.","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" * @param keyword The list of tasks created.","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" * @return The formatted output of the command.","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":" public String sendNoResults(String keyword) {","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" String output \u003d String.format(\"No results found for the given keyword %s\\n\", keyword);","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" System.out.printf(output);","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":" return output;","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" * Sends a message displaying the help information.","lastModifiedDate":"2024-02-06"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" * @return The formatted output of the command.","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":" public String sendHelp() {","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":" String output \u003d \"Commands I understand:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"ruijietay"},"content":" + \"1. list - Lists the tasks entered.\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"ruijietay"},"content":" + \"2. todo [description] - Creates a new capone.tasks.ToDo task. Remember to enter the description!\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"ruijietay"},"content":" + \"3. deadline [description] /by [date] - Creates a new capone.tasks.Deadline task.\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"ruijietay"},"content":" + \" Remember to enter the description and date!\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":97,"author":{"gitId":"ruijietay"},"content":" + \" Dates are recognised in the following format - \u0027yyyy-mm-dd HHmm\u0027 (24-hour).\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":98,"author":{"gitId":"ruijietay"},"content":" + \"4. event [description] /from [date] /to [date] - Creates a new capone.tasks.Event task.\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":99,"author":{"gitId":"ruijietay"},"content":" + \" Remember to enter the description, as well as the start and end date!\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":100,"author":{"gitId":"ruijietay"},"content":" + \" Dates are recognised in the following format - \u0027yyyy-mm-dd HHmm\u0027 (24-hour).\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":101,"author":{"gitId":"ruijietay"},"content":" + \"5. mark [index] - Marks a task as completed. Use this in conjunction with the \u0027list\u0027 command!\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":102,"author":{"gitId":"ruijietay"},"content":" + \"6. unmark [index] - Unmarks a task. Use this in conjunction with the \u0027list\u0027 command!\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":103,"author":{"gitId":"ruijietay"},"content":" + \"7. delete [index] - Deletes a task. Use this in conjunction with the \u0027list\u0027 command!\\n\"","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"ruijietay"},"content":" + \"8. find [keyword] - Finds all tasks that matches the given input keyword.\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"ruijietay"},"content":" System.out.printf(output);","lastModifiedDate":"2024-02-07"},{"lineNumber":106,"author":{"gitId":"ruijietay"},"content":" return output;","lastModifiedDate":"2024-02-07"},{"lineNumber":107,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":109,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":110,"author":{"gitId":"ruijietay"},"content":" * Sends a formatted message showing the list of available tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":111,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":112,"author":{"gitId":"ruijietay"},"content":" * @param taskList The list of tasks to display.","lastModifiedDate":"2024-02-06"},{"lineNumber":113,"author":{"gitId":"ruijietay"},"content":" * @return The formatted output of the command.","lastModifiedDate":"2024-02-07"},{"lineNumber":114,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":115,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":116,"author":{"gitId":"ruijietay"},"content":" public String sendList(TaskList taskList) {","lastModifiedDate":"2024-02-07"},{"lineNumber":117,"author":{"gitId":"ruijietay"},"content":" StringBuilder output \u003d new StringBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":118,"author":{"gitId":"ruijietay"},"content":" for (int i \u003d 0; i \u003c taskList.getSize(); i++) {","lastModifiedDate":"2024-02-06"},{"lineNumber":119,"author":{"gitId":"ruijietay"},"content":" String task \u003d String.format(\"%d. %s\\n\", i + 1, taskList.getTask(i).toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":120,"author":{"gitId":"ruijietay"},"content":" System.out.printf(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":121,"author":{"gitId":"ruijietay"},"content":" output.append(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":122,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":123,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":124,"author":{"gitId":"ruijietay"},"content":" return output.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":125,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":126,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":127,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":128,"author":{"gitId":"ruijietay"},"content":" * Sends a formatted message after the user marks a task.","lastModifiedDate":"2024-02-06"},{"lineNumber":129,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":130,"author":{"gitId":"ruijietay"},"content":" * @param task The task to be marked as complete.","lastModifiedDate":"2024-02-06"},{"lineNumber":131,"author":{"gitId":"ruijietay"},"content":" * @return The formatted output of the command.","lastModifiedDate":"2024-02-07"},{"lineNumber":132,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":133,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":134,"author":{"gitId":"ruijietay"},"content":" public String sendMark(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":135,"author":{"gitId":"ruijietay"},"content":" String output \u003d \"Nice! I\u0027ve marked this task as completed:\\n\" + task.toString() + \"\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":136,"author":{"gitId":"ruijietay"},"content":" System.out.printf(output);","lastModifiedDate":"2024-02-07"},{"lineNumber":137,"author":{"gitId":"ruijietay"},"content":" return output;","lastModifiedDate":"2024-02-07"},{"lineNumber":138,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":139,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":140,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":141,"author":{"gitId":"ruijietay"},"content":" * Sends a formatted message after the user creates a ToDo task.","lastModifiedDate":"2024-02-06"},{"lineNumber":142,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":143,"author":{"gitId":"ruijietay"},"content":" * @param taskList The list of tasks created.","lastModifiedDate":"2024-02-06"},{"lineNumber":144,"author":{"gitId":"ruijietay"},"content":" * @return The formatted output of the command.","lastModifiedDate":"2024-02-07"},{"lineNumber":145,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":146,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":147,"author":{"gitId":"ruijietay"},"content":" public String sendTodo(TaskList taskList) {","lastModifiedDate":"2024-02-07"},{"lineNumber":148,"author":{"gitId":"ruijietay"},"content":" String output \u003d String.format(\"Got it. I\u0027ve added this task:\\n%s\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":149,"author":{"gitId":"ruijietay"},"content":" + \"Now you have %d task(s) in the list.\\n\",","lastModifiedDate":"2024-02-06"},{"lineNumber":150,"author":{"gitId":"ruijietay"},"content":" taskList.getLastTask().toString(), taskList.getSize());","lastModifiedDate":"2024-02-07"},{"lineNumber":151,"author":{"gitId":"ruijietay"},"content":" System.out.printf(output);","lastModifiedDate":"2024-02-07"},{"lineNumber":152,"author":{"gitId":"ruijietay"},"content":" return output;","lastModifiedDate":"2024-02-07"},{"lineNumber":153,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":154,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":155,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":156,"author":{"gitId":"ruijietay"},"content":" * Sends a formatted message after the user unmarks a task.","lastModifiedDate":"2024-02-06"},{"lineNumber":157,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-06"},{"lineNumber":158,"author":{"gitId":"ruijietay"},"content":" * @param task The task to be marked as incomplete.","lastModifiedDate":"2024-02-06"},{"lineNumber":159,"author":{"gitId":"ruijietay"},"content":" * @return The formatted output of the command.","lastModifiedDate":"2024-02-07"},{"lineNumber":160,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":161,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":162,"author":{"gitId":"ruijietay"},"content":" public String sendUnmark(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":163,"author":{"gitId":"ruijietay"},"content":" String output \u003d \"Nice! I\u0027ve marked this task as incomplete:\\n\" + task.toString() + \"\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":164,"author":{"gitId":"ruijietay"},"content":" System.out.printf(output);","lastModifiedDate":"2024-02-07"},{"lineNumber":165,"author":{"gitId":"ruijietay"},"content":" return output;","lastModifiedDate":"2024-02-07"},{"lineNumber":166,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":167,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"ruijietay":167}},{"path":"src/main/java/capone/ui/gui/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.ui.gui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" * The DialogBox class represents a custom control using FXML.","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" * This control is used to display a dialog box consisting of an ImageView to","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" * represent the user/bot image and a label containing text from the speaker.","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" /** The path to the default user image used for the GUI. */","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" private static final String USER_IMG_PATH \u003d \"/images/DaUser.png\";","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" /** The path to the default Capone image used for the GUI. */","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" private static final String CAPONE_IMG_PATH \u003d \"/images/DaCapone.png\";","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" /** The label displaying the text in the dialog box. */","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" private Label dialog;","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" /** The ImageView displaying the user/bot image in the dialog box. */","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" * Constructs a DialogBox with the given text and image.","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" * @param text The text to display in the dialog box.","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" * @param img The image to display in the dialog box.","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" * Gets the path to the user image used for the GUI.","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" * @return The path to the user image.","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" protected static String getUserImgPath() {","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" return DialogBox.USER_IMG_PATH;","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" * Gets the path to the Capone image used for the GUI.","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" * @return The path to the Capone image.","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" protected static String getCaponeImgPath() {","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" return DialogBox.CAPONE_IMG_PATH;","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" * Flips the dialog box for the bot reply.","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":" private void flip() {","lastModifiedDate":"2024-02-06"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-06"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-06"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-06"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-06"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":" * Creates a DialogBox representing user input.","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" * @param text The text to display in the dialog box.","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" * @param img The image to display in the dialog box.","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":" * @return The DialogBox representing user input.","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-06"},{"lineNumber":93,"author":{"gitId":"ruijietay"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-02-06"},{"lineNumber":94,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":95,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":96,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"ruijietay"},"content":" * Creates a DialogBox representing Capone\u0027s response.","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"ruijietay"},"content":" * @param text The text to display in the dialog box.","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"ruijietay"},"content":" * @param img The image to display in the dialog box.","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"ruijietay"},"content":" * @return The DialogBox representing Capone\u0027s response.","lastModifiedDate":"2024-02-07"},{"lineNumber":102,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"ruijietay"},"content":" public static DialogBox getCaponeDialog(String text, Image img) {","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"ruijietay"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-02-06"},{"lineNumber":105,"author":{"gitId":"ruijietay"},"content":" db.flip();","lastModifiedDate":"2024-02-06"},{"lineNumber":106,"author":{"gitId":"ruijietay"},"content":" return db;","lastModifiedDate":"2024-02-06"},{"lineNumber":107,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":108,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"ruijietay":108}},{"path":"src/main/java/capone/ui/gui/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.ui.gui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"public class Launcher {","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" * The main method of the Launcher class.","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" * It launches the JavaFX application by starting the Main class.","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" * @param args The command-line arguments passed to the application.","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"ruijietay":19}},{"path":"src/main/java/capone/ui/gui/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.ui.gui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import capone.Capone;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" * A GUI for Capone using FXML.","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" /** The Capone instance assocaited with this application. */","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" private Capone capone \u003d new Capone();","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" * The start method of the JavaFX application.","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" * It loads the main window FXML file, sets up the scene, and displays the main window.","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" * @param stage The primary stage for the JavaFX application.","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" @Override","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setCapone(this.capone);","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" stage.show();","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" this.capone.runGui();","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"ruijietay":40}},{"path":"src/main/java/capone/ui/gui/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.ui.gui;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import capone.Capone;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" /** The ScrollPane that will contain the dialogs. */","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" /** The container for dialog boxes (images and labels). */","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" /** The text field for user input. */","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" /** The button to send user input. */","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" /** The instance of the Capone application. */","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" private Capone capone;","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" /** The image representing the user in dialog boxes. */","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(DialogBox.getUserImgPath()));","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" /** The image representing Capone in dialog boxes. */","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" private Image caponeImage \u003d new Image(this.getClass().getResourceAsStream(DialogBox.getCaponeImgPath()));","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" * Initializes the controller. Binds the scroll","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" * pane to the height of the dialog container.","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" public void initialize() {","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" this.scrollPane.vvalueProperty().bind(this.dialogContainer.heightProperty());","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" * Sets the instance of the Capone application.","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" * @param capone The Capone application instance to be set.","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" public void setCapone(Capone capone) {","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" this.capone \u003d capone;","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" this.dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" DialogBox.getCaponeDialog(this.capone.getUi().printWelcomeMsg(), this.caponeImage)","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" );","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" * Creates two dialog boxes, one echoing user input and the other containing","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" * Duke\u0027s reply and then appends them to the dialog container.","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" * Clears the user input after processing.","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-06"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" @FXML","lastModifiedDate":"2024-02-06"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-06"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" String input \u003d this.userInput.getText();","lastModifiedDate":"2024-02-06"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" String response \u003d this.capone.getResponse(input);","lastModifiedDate":"2024-02-06"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" this.dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-06"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" DialogBox.getUserDialog(input, this.userImage),","lastModifiedDate":"2024-02-06"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" DialogBox.getCaponeDialog(response, this.caponeImage)","lastModifiedDate":"2024-02-06"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" );","lastModifiedDate":"2024-02-06"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" this.userInput.clear();","lastModifiedDate":"2024-02-06"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"ruijietay":77}},{"path":"src/main/resources/View/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" \u003cLabel fx:id\u003d\"dialog\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"ruijietay":18}},{"path":"src/main/resources/View/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"capone.ui.gui.MainWindow\"\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\"","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\"","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"ruijietay":24}},{"path":"src/test/java/capone/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidDateException;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InvalidTimeException;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":" * Test class for the Parser utility class.","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"public class ParserTest {","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" * Tests the behavior of parseDate when an invalid date format is provided.","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" * Expects an InvalidDateException to be thrown.","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" public void parseDate_invalidDate1_throwsInvalidDateException() {","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" assertThrows(InvalidDateException.class, () -\u003e {","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" Parser.parseDate(\"this is not a valid date\");","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" });","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" * Tests the behavior of parseDate when an invalid date","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" * (with incorrect month and day format) is provided.","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" * Expects an InvalidDateException to be thrown.","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" public void parseDate_invalidDate2_throwsInvalidDateException() {","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" assertThrows(InvalidDateException.class, () -\u003e {","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" Parser.parseDate(\"2023-2-2\");","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":" });","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" * Tests the behavior of parseDate with a valid date.","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" * Expects the parsed LocalDate to match the expected value.","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" * @throws InvalidDateException if the date is invalid (which is not expected in this test).","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" public void parseDate_validDate_success() throws InvalidDateException {","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" LocalDate expectedDate \u003d LocalDate.of(2001, 9, 26);","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":" LocalDate actualDate \u003d Parser.parseDate(\"2001-09-26\");","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" assertEquals(expectedDate, actualDate);","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" * Tests the behavior of parseTime when an invalid time format is provided.","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" * Expects an InvalidTimeException to be thrown.","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" public void parseTime_invalidTime1_throwsInvalidTimeException() {","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" assertThrows(InvalidTimeException.class, () -\u003e {","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" Parser.parseTime(\"this is not a valid time\");","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":" });","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":" * Tests the behavior of parseTime when an invalid time","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" * (with incorrect hour) is provided.","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" * Expects an InvalidTimeException to be thrown.","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":" public void parseTime_invalidTime2_throwsInvalidTimeException() {","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" assertThrows(InvalidTimeException.class, () -\u003e {","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" Parser.parseTime(\"2395\");","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" });","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" * Tests the behavior of parseTime with a valid time.","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":" * Expects the parsed LocalTime to match the expected value.","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":" * @throws InvalidTimeException if the time is invalid (which is not expected in this test).","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":" public void parseTime_validTime_success() throws InvalidTimeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" LocalTime expectedTime \u003d LocalTime.of(23, 59);","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":" LocalTime actualTime \u003d Parser.parseTime(\"2359\");","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":" assertEquals(expectedTime, actualTime);","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":92}},{"path":"src/test/java/capone/commands/DeadlineCommandTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"package capone.commands;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"import java.io.PrintStream;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"import capone.Parser;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"import capone.Storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"import capone.TaskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.CaponeException;","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"import capone.exceptions.InsufficientArgumentException;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":"import capone.ui.Ui;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":"import capone.ui.cli.Cli;","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":"/**","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":" * Test class for the DeadlineCommand.","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":" *","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":" * @author Tay Rui-Jie","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":"public class DeadlineCommandTest {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"ruijietay"},"content":" private Ui ui;","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"ruijietay"},"content":" private Storage storage;","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"ruijietay"},"content":" private final ByteArrayOutputStream stdoutMsg \u003d new ByteArrayOutputStream();","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"ruijietay"},"content":" * Initializes the components needed for each test.","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"ruijietay"},"content":" @BeforeEach","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"ruijietay"},"content":" public void initializeComponents() {","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"ruijietay"},"content":" this.storage \u003d new Storage(\"./data/\", \"test.json\");","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"ruijietay"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"ruijietay"},"content":" this.ui \u003d new Cli();","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"ruijietay"},"content":" System.setOut(new PrintStream(stdoutMsg));","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"ruijietay"},"content":" * Tests the behavior of the DeadlineCommand when no description is provided.","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"ruijietay"},"content":" * Expects an InsufficientArgumentException to be thrown with the correct error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"ruijietay"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"ruijietay"},"content":" public void execute_noDescription_throwsInsufficientArgumentException() {","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"ruijietay"},"content":" Command deadlineCommand \u003d new DeadlineCommand(Parser.splitInput(\"deadline /by 2023-12-12 1800\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"ruijietay"},"content":" InsufficientArgumentException exception \u003d assertThrows(InsufficientArgumentException.class, () -\u003e {","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"ruijietay"},"content":" deadlineCommand.execute(this.taskList, this.ui, this.storage);","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"ruijietay"},"content":" });","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"ruijietay"},"content":" String expectedMsg \u003d \"Insufficient arguments!\\nUsage: deadline [description] /by [date]\";","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"ruijietay"},"content":" assertEquals(expectedMsg, exception.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"ruijietay"},"content":" * Tests the behavior of the DeadlineCommand when no date/time is provided.","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"ruijietay"},"content":" * Expects an InsufficientArgumentException to be thrown with the correct error message.","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"ruijietay"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"ruijietay"},"content":" public void execute_noDateTime_throwsInsufficientArgumentException() {","lastModifiedDate":"2024-02-01"},{"lineNumber":64,"author":{"gitId":"ruijietay"},"content":" Command deadlineCommand \u003d new DeadlineCommand(Parser.splitInput(\"deadline do iP /by\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"ruijietay"},"content":" InsufficientArgumentException exception \u003d assertThrows(InsufficientArgumentException.class, () -\u003e {","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"ruijietay"},"content":" deadlineCommand.execute(this.taskList, this.ui, this.storage);","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"ruijietay"},"content":" });","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"ruijietay"},"content":" String expectedMsg \u003d \"Please enter a date for this deadline task!\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"ruijietay"},"content":" + \"Usage: deadline [description] /by [date]\";","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"ruijietay"},"content":" assertEquals(expectedMsg, exception.getMessage());","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"ruijietay"},"content":" /**","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"ruijietay"},"content":" * Tests the behavior of the DeadlineCommand with valid input.","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"ruijietay"},"content":" * Expects the command to execute successfully and the correct message to be printed.","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"ruijietay"},"content":" */","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"ruijietay"},"content":" @Test","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"ruijietay"},"content":" public void execute_validInput_success() throws CaponeException {","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"ruijietay"},"content":" Command deadlineCommand \u003d new DeadlineCommand(Parser.splitInput(\"deadline clean room /by 2024-01-31 1800\"));","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"ruijietay"},"content":" deadlineCommand.execute(this.taskList, this.ui, this.storage);","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"ruijietay"},"content":" String expectedMsg \u003d String.format(\"Got it. I\u0027ve added this task:\\n%s\\n\"","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"ruijietay"},"content":" + \"Now you have %d task(s) in the list.\\n\", taskList.getLastTask().toString(), taskList.getSize());","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"ruijietay"},"content":" assertEquals(expectedMsg, stdoutMsg.toString());","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"ruijietay"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"ruijietay"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"ruijietay"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"ruijietay":91}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"ruijietay"},"content":"-h","lastModifiedDate":"2024-01-24"},{"lineNumber":2,"author":{"gitId":"ruijietay"},"content":"todo make cake","lastModifiedDate":"2024-01-24"},{"lineNumber":3,"author":{"gitId":"ruijietay"},"content":"todo","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"ruijietay"},"content":"thisisaninvalidinput","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"ruijietay"},"content":"deadline submit weekly report /by friday 26 Jan 2023","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"ruijietay"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"ruijietay"},"content":"mark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"ruijietay"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"ruijietay"},"content":"unmark 1","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"ruijietay"},"content":"event party at home /from saturday, 27 jan 2023 /to 28 jan 2023, sunday","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"ruijietay"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"ruijietay"},"content":"mark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"ruijietay"},"content":"mark 2","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"ruijietay"},"content":"delete asdf","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"ruijietay"},"content":"delete 333","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"ruijietay"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"ruijietay"},"content":"unmark 3","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":"list","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"ruijietay"},"content":"delete 1","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"ruijietay"},"content":"deadline ps1 /by 2024-02-01 2359","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"ruijietay"},"content":"deadline ps2 /by 2024-02-01 9999","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"ruijietay"},"content":"deadline ps1 /by 2069-02-01 2359","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"event career fair /from 2024-02-05 1300 /to 2024-02-10 2200","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"ruijietay"},"content":"event career fair /from 2024-02-05 1300 /to thisisnotadate","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"ruijietay"},"content":"event career fair /from 2024-02-05 9999 /to 2024-02-10 2200","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"ruijietay"},"content":"bye","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"ruijietay":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":"ruijietay"},"content":"REM run the program, feed capone.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"ruijietay"},"content":"java -classpath ..\\bin Capone \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":{"ruijietay":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":"ruijietay"},"content":"# run the program, feed capone.commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"ruijietay"},"content":"java -classpath ../bin Capone \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":"ruijietay"},"content":"#dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"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":{"ruijietay":3,"-":35}}] diff --git a/ruijietay_ip_master/commits.json b/ruijietay_ip_master/commits.json index 27ef1ec6..23c9ccbf 100644 --- a/ruijietay_ip_master/commits.json +++ b/ruijietay_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ruijietay":[{"date":"2024-01-23","commitResults":[{"hash":"f98d545f6a175474356b16425a6b7b0ee57977a2","isMergeCommit":false,"messageTitle":"Given new name to chatbot.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":7}}},{"hash":"b7ceda441c551da6e50c653c0c440e6b4ad1f8c2","isMergeCommit":false,"messageTitle":"Refactor filenames to correct chatbot name.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"84fe7f73632b5ac37ae94ecc5e95d74d1d4c8f09","isMergeCommit":false,"messageTitle":"Implement echo and exit functionality.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":2}}},{"hash":"47552a99d1aa0c5093c213f24463a95e661beca3","isMergeCommit":false,"messageTitle":"Implement ability to store task and list tasks.","messageBody":"","tags":["Level-2","Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":3}}},{"hash":"70810123a561b34277329f869eebc975ccafb4c9","isMergeCommit":false,"messageTitle":"Changed primitive array to ArrayList for easier management. Added Task class.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":6}}}]},{"date":"2024-01-24","commitResults":[{"hash":"9f7cc2c1961e4aa73eb3f31c54eae3ab7cb520e3","isMergeCommit":false,"messageTitle":"Implement the ability to mark and unmark tasks as done.","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":11}}},{"hash":"9f3a6f578662b2a96c09994e111978e87bffb6c1","isMergeCommit":false,"messageTitle":"Implement ToDo.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":11}}},{"hash":"e280d64ff689a127535c411b74299d9256a10bc3","isMergeCommit":false,"messageTitle":"Implement Deadline.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":4}}},{"hash":"45adbbdc0f9d467b2dadcca3d827d4fcc33c7082","isMergeCommit":false,"messageTitle":"Implement Event.","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":9}}},{"hash":"9118ea96b8f374d3df6b0ecdb67265deb667124e","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":3,"deletions":5}}},{"hash":"0d6177629afe8262ff5b57cebd35fe23a975545a","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":3,"deletions":3}}},{"hash":"5f80fc65084096a777f6459e7eb9b5c2fe4e1dd0","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"java":{"insertions":22,"deletions":23},"sh":{"insertions":2,"deletions":2}}},{"hash":"bb9e01164edf5deecdfe53f8337f356e5879f755","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:ruijietay/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"681bebd68423d3b533d02da06d346af309bba2aa","isMergeCommit":false,"messageTitle":"Added decorative name","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"119f47b891f5aaf67e57036d4b30e62e047eedab","isMergeCommit":false,"messageTitle":"Implement minimal exceptions","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":23}}},{"hash":"56763359f3eced6c87fb8c30ef4be695f5988ae5","isMergeCommit":false,"messageTitle":"Implmented more exception handling.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":24}}},{"hash":"08a0346cbb3cf720bb82d48bb72c45aadd720d76","isMergeCommit":false,"messageTitle":"Updated Automated Text UI Testing.","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"0362abcac2612bbc3863a213974aff7d0cd170fb","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":26}}},{"hash":"dd148630db21ecc91baa46a6209c9ac2b8b3e362","isMergeCommit":false,"messageTitle":"Updated help menu.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"e542e24f55dfc12c96610a570634bcc77484e437","isMergeCommit":false,"messageTitle":"Updated Automated Text UI Testing.","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"223603d85d797e2b8fb499960f5db6dc649fe27f","isMergeCommit":false,"messageTitle":"Used enums for commands for easier viewing of all commands.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":46}}}]},{"date":"2024-01-31","commitResults":[{"hash":"d7f2ad814776fc2843c8ab60c3b446361b06331f","isMergeCommit":false,"messageTitle":"Implement saving of tasks to file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":168,"deletions":13}}},{"hash":"a69c4b29401c020e566afdd7065704e90fdb4121","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"f06688684c6c7e77bed364f72af321b7fb1ead31","isMergeCommit":false,"messageTitle":"Date recognition for deadline tasks.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":11}}},{"hash":"1a5a2c93865416eb417b3143954356555d64cabf","isMergeCommit":false,"messageTitle":"Improved recognition for deadline tasks.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":42}}},{"hash":"9b65cee9f28ac56e9377f225ad8af90f32388f9b","isMergeCommit":false,"messageTitle":"Implement date and time recognition for tasks.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":131,"deletions":38}}},{"hash":"a509e7b6cf85daf0999a1f4e4e04e32330cc9b71","isMergeCommit":false,"messageTitle":"Added test cases for date and time recognition.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":0,"deletions":1}}},{"hash":"ca9545f524cd608950482616bbae9e8317c181da","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"f7610108a07e379625e66978e23fa9c41d97dbc3","isMergeCommit":false,"messageTitle":"Refactored code to be more Object-Oriented (OOP).","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":774,"deletions":492},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"17404c2425b3e59e34dbe36ff64daba2c77e7aae","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"fe0b8a50bf351e25ad1f3f7207d924e115401819","isMergeCommit":false,"messageTitle":"Refactor TaskStorage class to Storage.","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":21}}},{"hash":"33daa9e8aeeddde0971163e2495ff610e19391af","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f8be6537e07ef16d2383b12fcb697086e915abf6","isMergeCommit":false,"messageTitle":"Add gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}},{"hash":"de015f8ed80e99002c38c24007383f448c7517c9","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":161,"deletions":21}}},{"hash":"f2d65c1a3dbc84865c9440195d586b12f1da983c","isMergeCommit":false,"messageTitle":"Modified gradle config to create JAR file","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":4,"deletions":4}}},{"hash":"d632992df7a2a99d25d6ba9790885a9d667b4234","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Jar\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-01","commitResults":[{"hash":"2f23a0b4028bb31531b66e03d295625d9e1f1619","isMergeCommit":false,"messageTitle":"Added JavaDocs for all files.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":809,"deletions":123}}},{"hash":"9b09a414e6fca5ef52d5ab2e5150c64e5586739e","isMergeCommit":false,"messageTitle":"Comply with JavaDoc coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":194,"deletions":174}}},{"hash":"646a19bf3be841559bf823da53468fd0d2aa3985","isMergeCommit":false,"messageTitle":"Implement a way to find a task by searching for a keyword.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":6}}},{"hash":"024579624b42a1f3c430f250b17ef02e16ae9071","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"7b24967b7bd49cbf4f06ebe51f63226bf8ba4259","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5a42bf5a3e2c24f83ed4c72fff0902d3a264bfac","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a98955d7d405ce4e8afd769344200a1dea74e392","isMergeCommit":false,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"b33feed64817be969dc95e02edff3f32e6302cc4","isMergeCommit":false,"messageTitle":"Resolve merge conflict","messageBody":"","tags":["A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":37}}}]}]},"authorFileTypeContributionMap":{"ruijietay":{"java":1902,"md":5,"fxml":0,"sh":3,"bat":2,"gradle":3,"txt":26}},"authorContributionVariance":{"ruijietay":398257.06},"authorDisplayNameMap":{"ruijietay":"CS2103T-T17-3 TAY ..-JIE"}} +{"authorDailyContributionsMap":{"ruijietay":[{"date":"2024-01-23","commitResults":[{"hash":"f98d545f6a175474356b16425a6b7b0ee57977a2","isMergeCommit":false,"messageTitle":"Given new name to chatbot.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":7}}},{"hash":"b7ceda441c551da6e50c653c0c440e6b4ad1f8c2","isMergeCommit":false,"messageTitle":"Refactor filenames to correct chatbot name.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"84fe7f73632b5ac37ae94ecc5e95d74d1d4c8f09","isMergeCommit":false,"messageTitle":"Implement echo and exit functionality.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":2}}},{"hash":"47552a99d1aa0c5093c213f24463a95e661beca3","isMergeCommit":false,"messageTitle":"Implement ability to store task and list tasks.","messageBody":"","tags":["Level-2","Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":3}}},{"hash":"70810123a561b34277329f869eebc975ccafb4c9","isMergeCommit":false,"messageTitle":"Changed primitive array to ArrayList for easier management. Added Task class.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":6}}}]},{"date":"2024-01-24","commitResults":[{"hash":"9f7cc2c1961e4aa73eb3f31c54eae3ab7cb520e3","isMergeCommit":false,"messageTitle":"Implement the ability to mark and unmark tasks as done.","messageBody":"","tags":["Level-3","A-Classes"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":11}}},{"hash":"9f3a6f578662b2a96c09994e111978e87bffb6c1","isMergeCommit":false,"messageTitle":"Implement ToDo.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":99,"deletions":11}}},{"hash":"e280d64ff689a127535c411b74299d9256a10bc3","isMergeCommit":false,"messageTitle":"Implement Deadline.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":4}}},{"hash":"45adbbdc0f9d467b2dadcca3d827d4fcc33c7082","isMergeCommit":false,"messageTitle":"Implement Event.","messageBody":"","tags":["Level-4","A-Inheritance"],"fileTypesAndContributionMap":{"java":{"insertions":57,"deletions":9}}},{"hash":"9118ea96b8f374d3df6b0ecdb67265deb667124e","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":3,"deletions":5}}},{"hash":"0d6177629afe8262ff5b57cebd35fe23a975545a","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":3,"deletions":3}}},{"hash":"5f80fc65084096a777f6459e7eb9b5c2fe4e1dd0","isMergeCommit":false,"messageTitle":"Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":14,"deletions":0},"java":{"insertions":22,"deletions":23},"sh":{"insertions":2,"deletions":2}}},{"hash":"bb9e01164edf5deecdfe53f8337f356e5879f755","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:ruijietay/ip","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"681bebd68423d3b533d02da06d346af309bba2aa","isMergeCommit":false,"messageTitle":"Added decorative name","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":6}}},{"hash":"119f47b891f5aaf67e57036d4b30e62e047eedab","isMergeCommit":false,"messageTitle":"Implement minimal exceptions","messageBody":"","tags":["Level-5","A-Exceptions"],"fileTypesAndContributionMap":{"java":{"insertions":46,"deletions":23}}},{"hash":"56763359f3eced6c87fb8c30ef4be695f5988ae5","isMergeCommit":false,"messageTitle":"Implmented more exception handling.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":24}}},{"hash":"08a0346cbb3cf720bb82d48bb72c45aadd720d76","isMergeCommit":false,"messageTitle":"Updated Automated Text UI Testing.","messageBody":"","tags":["A-Collections"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"0362abcac2612bbc3863a213974aff7d0cd170fb","isMergeCommit":false,"messageTitle":"Add support for deleting tasks from the list.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":26}}},{"hash":"dd148630db21ecc91baa46a6209c9ac2b8b3e362","isMergeCommit":false,"messageTitle":"Updated help menu.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"e542e24f55dfc12c96610a570634bcc77484e437","isMergeCommit":false,"messageTitle":"Updated Automated Text UI Testing.","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}},{"hash":"223603d85d797e2b8fb499960f5db6dc649fe27f","isMergeCommit":false,"messageTitle":"Used enums for commands for easier viewing of all commands.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":62,"deletions":46}}}]},{"date":"2024-01-31","commitResults":[{"hash":"d7f2ad814776fc2843c8ab60c3b446361b06331f","isMergeCommit":false,"messageTitle":"Implement saving of tasks to file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":168,"deletions":13}}},{"hash":"a69c4b29401c020e566afdd7065704e90fdb4121","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"f06688684c6c7e77bed364f72af321b7fb1ead31","isMergeCommit":false,"messageTitle":"Date recognition for deadline tasks.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":11}}},{"hash":"1a5a2c93865416eb417b3143954356555d64cabf","isMergeCommit":false,"messageTitle":"Improved recognition for deadline tasks.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":34,"deletions":42}}},{"hash":"9b65cee9f28ac56e9377f225ad8af90f32388f9b","isMergeCommit":false,"messageTitle":"Implement date and time recognition for tasks.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":131,"deletions":38}}},{"hash":"a509e7b6cf85daf0999a1f4e4e04e32330cc9b71","isMergeCommit":false,"messageTitle":"Added test cases for date and time recognition.","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":0,"deletions":1}}},{"hash":"ca9545f524cd608950482616bbae9e8317c181da","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}},{"hash":"f7610108a07e379625e66978e23fa9c41d97dbc3","isMergeCommit":false,"messageTitle":"Refactored code to be more Object-Oriented (OOP).","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":774,"deletions":492},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}},{"hash":"17404c2425b3e59e34dbe36ff64daba2c77e7aae","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-MoreOOP\u0027","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{}},{"hash":"fe0b8a50bf351e25ad1f3f7207d924e115401819","isMergeCommit":false,"messageTitle":"Refactor TaskStorage class to Storage.","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":21}}},{"hash":"33daa9e8aeeddde0971163e2495ff610e19391af","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f8be6537e07ef16d2383b12fcb697086e915abf6","isMergeCommit":false,"messageTitle":"Add gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1}}},{"hash":"de015f8ed80e99002c38c24007383f448c7517c9","isMergeCommit":false,"messageTitle":"Add JUnit tests","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":161,"deletions":21}}},{"hash":"f2d65c1a3dbc84865c9440195d586b12f1da983c","isMergeCommit":false,"messageTitle":"Modified gradle config to create JAR file","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":4,"deletions":4}}},{"hash":"d632992df7a2a99d25d6ba9790885a9d667b4234","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Jar\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-01","commitResults":[{"hash":"2f23a0b4028bb31531b66e03d295625d9e1f1619","isMergeCommit":false,"messageTitle":"Added JavaDocs for all files.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":809,"deletions":123}}},{"hash":"9b09a414e6fca5ef52d5ab2e5150c64e5586739e","isMergeCommit":false,"messageTitle":"Comply with JavaDoc coding standard","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":194,"deletions":174}}},{"hash":"646a19bf3be841559bf823da53468fd0d2aa3985","isMergeCommit":false,"messageTitle":"Implement a way to find a task by searching for a keyword.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":6}}},{"hash":"024579624b42a1f3c430f250b17ef02e16ae9071","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{}},{"hash":"7b24967b7bd49cbf4f06ebe51f63226bf8ba4259","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5a42bf5a3e2c24f83ed4c72fff0902d3a264bfac","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a98955d7d405ce4e8afd769344200a1dea74e392","isMergeCommit":false,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"b33feed64817be969dc95e02edff3f32e6302cc4","isMergeCommit":false,"messageTitle":"Resolve merge conflict","messageBody":"","tags":["A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":56,"deletions":37}}}]},{"date":"2024-02-06","commitResults":[{"hash":"5302c17dff2fa58bec5059ebab5a434e109d2716","isMergeCommit":false,"messageTitle":"Refactor code for better Ui separation between Cli and Gui","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":252,"deletions":73}}},{"hash":"216c48084823e1c35905bb1b5c0a07ad97619610","isMergeCommit":false,"messageTitle":"Implement basic echo functionality of JavaFX GUI","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":19,"deletions":1},"fxml":{"insertions":42,"deletions":0},"java":{"insertions":181,"deletions":4}}}]},{"date":"2024-02-07","commitResults":[{"hash":"3f61e448086e71e133f2ca73c9bc8b96c63554a4","isMergeCommit":false,"messageTitle":"Implement GUI for Capone","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":180,"deletions":85}}},{"hash":"0fbaa711d182299301399ea98f2bf6792b35572a","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-10\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}},{"hash":"9883e5b4b9c24712ee95c395d1f61ce695d25612","isMergeCommit":false,"messageTitle":"Added javadocs and fixed checkstyle violations.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":38}}},{"hash":"00a7f9e9d4d85763d5b9223684ccee4a4f0ac13f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-Checkstyle\u0027","messageBody":"","tags":["A-Checkstyle"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"ruijietay":{"java":2430,"md":5,"fxml":42,"sh":3,"bat":2,"gradle":21,"txt":26}},"authorContributionVariance":{"ruijietay":300201.78},"authorDisplayNameMap":{"ruijietay":"CS2103T-T17-3 TAY ..-JIE"}} diff --git a/starsia_ip_master/authorship.json b/starsia_ip_master/authorship.json index 42c2dd5e..d2053c21 100644 --- a/starsia_ip_master/authorship.json +++ b/starsia_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"starsia"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"starsia"},"content":" protected String by;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"starsia"},"content":" public Deadline(String description, String by) {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"starsia"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"starsia"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"starsia"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"starsia"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"starsia"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"starsia"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"starsia":14}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"starsia"},"content":"import java.io.File;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"starsia"},"content":"import java.io.FileInputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"starsia"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"starsia"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"starsia"},"content":"import java.io.ObjectInputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"starsia"},"content":"import java.io.ObjectOutputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"starsia"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"starsia"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"starsia"},"content":" enum Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"starsia"},"content":" LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, BYE","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"starsia"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-27"},{"lineNumber":15,"author":{"gitId":"starsia"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"starsia"},"content":" // Load tasks from file","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"starsia"},"content":" // Solution below inspired by https://stackoverflow.com/questions/16111496/java-how-can-i-write-my-arraylist-to-a-file-and-read-load-that-file-to-the","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"starsia"},"content":" try (ObjectInputStream ois \u003d new ObjectInputStream(new FileInputStream(\"./data/duke.txt\"))) {","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"starsia"},"content":" list \u003d (ArrayList\u003cTask\u003e) ois.readObject();","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"starsia"},"content":" } catch (IOException | ClassNotFoundException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"starsia"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"starsia"},"content":" // make directory first","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"starsia"},"content":" new File(\"./data\").mkdirs();","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"starsia"},"content":" // then make file","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"starsia"},"content":" // Solution below inspired by https://www.w3schools.com/java/java_files_create.asp","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"starsia"},"content":" File myObj \u003d new File(\"./data/duke.txt\");","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"starsia"},"content":" if (myObj.createNewFile()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"starsia"},"content":" System.out.println(\"File created: \" + myObj.getName());","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"starsia"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"starsia"},"content":" System.out.println(\"File already exists.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"starsia"},"content":" } catch (IOException i) {","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"starsia"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"starsia"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"starsia"},"content":" System.out.println(\"Could not load tasks from file: \" + e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"starsia"},"content":" // Start-up introduction","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-27"},{"lineNumber":42,"author":{"gitId":"starsia"},"content":" System.out.println(\"Hello! I\u0027m Klara\");","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"starsia"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":46,"author":{"gitId":"starsia"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"starsia"},"content":" String word \u003d sc.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"starsia"},"content":" while (!word.equals(\"bye\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"starsia"},"content":" // print list on demand","lastModifiedDate":"2024-01-28"},{"lineNumber":50,"author":{"gitId":"starsia"},"content":" if (word.equals(\"list\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"starsia"},"content":" printList(list);","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"starsia"},"content":" word \u003d sc.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"starsia"},"content":" // implementation of mark","lastModifiedDate":"2024-01-29"},{"lineNumber":54,"author":{"gitId":"starsia"},"content":" } else if (word.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":55,"author":{"gitId":"starsia"},"content":" String[] split \u003d word.split(\" \");","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"starsia"},"content":" Task extractedTask \u003d list.get(Integer.valueOf(split[1]) - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"starsia"},"content":" extractedTask.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"starsia"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":60,"author":{"gitId":"starsia"},"content":" System.out.println(extractedTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":61,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"starsia"},"content":" word \u003d sc.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"starsia"},"content":" } else if (word.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"starsia"},"content":" String[] split \u003d word.split(\" \");","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"starsia"},"content":" Task extractedTask \u003d list.get(Integer.valueOf(split[1]) - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"starsia"},"content":" extractedTask.markAsUndone();","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"starsia"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":69,"author":{"gitId":"starsia"},"content":" System.out.println(extractedTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":70,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"starsia"},"content":" word \u003d sc.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"starsia"},"content":" } else if (word.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":73,"author":{"gitId":"starsia"},"content":" String[] split \u003d word.split(\" /by \");","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"starsia"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"starsia"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"starsia"},"content":" throw new DukeException(\"Where is the rest of your description?\");","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"starsia"},"content":" String dateline \u003d split[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":79,"author":{"gitId":"starsia"},"content":" String[] splitAgain \u003d split[0].split(\" \", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"starsia"},"content":" Deadline deadline \u003d new Deadline(splitAgain[1], dateline);","lastModifiedDate":"2024-01-29"},{"lineNumber":81,"author":{"gitId":"starsia"},"content":" list.add(deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":82,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-27"},{"lineNumber":83,"author":{"gitId":"starsia"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"starsia"},"content":" System.out.println(\" \" + deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":85,"author":{"gitId":"starsia"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"starsia"},"content":" } catch (DukeException d) {","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"starsia"},"content":" System.out.println(d.getMessage());","lastModifiedDate":"2024-02-02"},{"lineNumber":90,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"starsia"},"content":" word \u003d sc.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":93,"author":{"gitId":"starsia"},"content":" } else if (word.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":94,"author":{"gitId":"starsia"},"content":" String[] split \u003d word.split(\" \", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"starsia"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":96,"author":{"gitId":"starsia"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"starsia"},"content":" throw new DukeException(\"Where is the rest of your description?\");","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"starsia"},"content":" String description \u003d split[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":100,"author":{"gitId":"starsia"},"content":" Todo todo \u003d new Todo(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":101,"author":{"gitId":"starsia"},"content":" list.add(todo);","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"starsia"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"starsia"},"content":" System.out.println(\" \" + todo);","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"starsia"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"starsia"},"content":" } catch (DukeException d){","lastModifiedDate":"2024-02-02"},{"lineNumber":108,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":109,"author":{"gitId":"starsia"},"content":" System.out.println(d.getMessage());","lastModifiedDate":"2024-02-02"},{"lineNumber":110,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":111,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":112,"author":{"gitId":"starsia"},"content":" word \u003d sc.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":113,"author":{"gitId":"starsia"},"content":" } else if (word.startsWith(\"event\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":114,"author":{"gitId":"starsia"},"content":" String[] split \u003d word.split(\" /from \");","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"starsia"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":116,"author":{"gitId":"starsia"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":117,"author":{"gitId":"starsia"},"content":" throw new DukeException(\"Where is the rest of your description?\");","lastModifiedDate":"2024-02-02"},{"lineNumber":118,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":119,"author":{"gitId":"starsia"},"content":" String description \u003d split[0].split(\" \", 2)[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":120,"author":{"gitId":"starsia"},"content":" String from \u003d split[1].split(\" /to \")[0];","lastModifiedDate":"2024-01-29"},{"lineNumber":121,"author":{"gitId":"starsia"},"content":" String to \u003d split[1].split(\" /to \")[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"starsia"},"content":" Event event \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":123,"author":{"gitId":"starsia"},"content":" list.add(event);","lastModifiedDate":"2024-01-29"},{"lineNumber":124,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"starsia"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"starsia"},"content":" System.out.println(\" \" + event);","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"starsia"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-27"},{"lineNumber":129,"author":{"gitId":"starsia"},"content":" } catch (DukeException d) {","lastModifiedDate":"2024-02-02"},{"lineNumber":130,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":131,"author":{"gitId":"starsia"},"content":" System.out.println(d.getMessage());","lastModifiedDate":"2024-02-02"},{"lineNumber":132,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":133,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":134,"author":{"gitId":"starsia"},"content":" word \u003d sc.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":135,"author":{"gitId":"starsia"},"content":" } else if (word.startsWith(\"delete\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":136,"author":{"gitId":"starsia"},"content":" String[] split \u003d word.split(\" \");","lastModifiedDate":"2024-02-02"},{"lineNumber":137,"author":{"gitId":"starsia"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":138,"author":{"gitId":"starsia"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":139,"author":{"gitId":"starsia"},"content":" throw new DukeException(\"Which task do you want to delete?\");","lastModifiedDate":"2024-02-02"},{"lineNumber":140,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":141,"author":{"gitId":"starsia"},"content":" int number \u003d Integer.parseInt(split[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":142,"author":{"gitId":"starsia"},"content":" Task task \u003d list.get(number - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":143,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":144,"author":{"gitId":"starsia"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":145,"author":{"gitId":"starsia"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-02-02"},{"lineNumber":146,"author":{"gitId":"starsia"},"content":" list.remove(number - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":147,"author":{"gitId":"starsia"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":148,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":149,"author":{"gitId":"starsia"},"content":" } catch (DukeException d) {","lastModifiedDate":"2024-02-02"},{"lineNumber":150,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":151,"author":{"gitId":"starsia"},"content":" System.out.println(d.getMessage());","lastModifiedDate":"2024-02-02"},{"lineNumber":152,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":153,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":154,"author":{"gitId":"starsia"},"content":" word \u003d sc.nextLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":155,"author":{"gitId":"starsia"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":156,"author":{"gitId":"starsia"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":157,"author":{"gitId":"starsia"},"content":" throw new DukeException(\"I don\u0027t understand bro\");","lastModifiedDate":"2024-02-02"},{"lineNumber":158,"author":{"gitId":"starsia"},"content":" } catch (DukeException d) {","lastModifiedDate":"2024-02-02"},{"lineNumber":159,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":160,"author":{"gitId":"starsia"},"content":" System.out.println(d.getMessage());","lastModifiedDate":"2024-02-02"},{"lineNumber":161,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":162,"author":{"gitId":"starsia"},"content":" word \u003d sc.nextLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":163,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":164,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":165,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":166,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":167,"author":{"gitId":"starsia"},"content":" // Save tasks to file","lastModifiedDate":"2024-02-06"},{"lineNumber":168,"author":{"gitId":"starsia"},"content":" try (ObjectOutputStream oos \u003d new ObjectOutputStream(new FileOutputStream(\"./data/duke.txt\"))) {","lastModifiedDate":"2024-02-06"},{"lineNumber":169,"author":{"gitId":"starsia"},"content":" oos.writeObject(list);","lastModifiedDate":"2024-02-06"},{"lineNumber":170,"author":{"gitId":"starsia"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":171,"author":{"gitId":"starsia"},"content":" System.out.println(\"Could not save tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":172,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":173,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":174,"author":{"gitId":"starsia"},"content":" // Logging off upon \"bye\" command","lastModifiedDate":"2024-01-28"},{"lineNumber":175,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-27"},{"lineNumber":176,"author":{"gitId":"starsia"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":177,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-27"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":179,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":180,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":181,"author":{"gitId":"starsia"},"content":" private static void printBreak() {","lastModifiedDate":"2024-01-27"},{"lineNumber":182,"author":{"gitId":"starsia"},"content":" String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-27"},{"lineNumber":183,"author":{"gitId":"starsia"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-27"},{"lineNumber":184,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":185,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":186,"author":{"gitId":"starsia"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":187,"author":{"gitId":"starsia"},"content":" * Print all elements in the list","lastModifiedDate":"2024-01-28"},{"lineNumber":188,"author":{"gitId":"starsia"},"content":" * @param list","lastModifiedDate":"2024-01-28"},{"lineNumber":189,"author":{"gitId":"starsia"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":190,"author":{"gitId":"starsia"},"content":" private static void printList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-28"},{"lineNumber":191,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-28"},{"lineNumber":192,"author":{"gitId":"starsia"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":193,"author":{"gitId":"starsia"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":194,"author":{"gitId":"starsia"},"content":" if (list.get(i).isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":195,"author":{"gitId":"starsia"},"content":" System.out.println(Integer.toString(i + 1) + \".\" + list.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":196,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":197,"author":{"gitId":"starsia"},"content":" else {","lastModifiedDate":"2024-01-28"},{"lineNumber":198,"author":{"gitId":"starsia"},"content":" System.out.println(Integer.toString(i + 1) + \".\" + list.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":199,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":200,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":201,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-28"},{"lineNumber":202,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":203,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":204,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"starsia":201,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"starsia"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"starsia"},"content":" public DukeException(String e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"starsia"},"content":" super(e);","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"starsia"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"starsia":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"starsia"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"starsia"},"content":" protected String from;","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"starsia"},"content":" protected String to;","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"starsia"},"content":" public Event(String description, String from, String to) {","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"starsia"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"starsia"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"starsia"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"starsia"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"starsia"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"starsia"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from + \" to: \" + to + \")\";","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"starsia"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"starsia":16}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"starsia"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"starsia"},"content":"public class Task implements Serializable {","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"starsia"},"content":" protected String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"starsia"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"starsia"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"starsia"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"starsia"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"starsia"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"starsia"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"starsia"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"starsia"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"starsia"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"starsia"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"starsia"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"starsia"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"starsia"},"content":" if (isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"starsia"},"content":" return \"[X] \" + description;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"starsia"},"content":" else {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"starsia"},"content":" return \"[ ] \" + description;","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"starsia"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"starsia":34}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"starsia"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"starsia"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"starsia"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"starsia"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"starsia"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"starsia"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"starsia"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"starsia":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"starsia"},"content":"todo borrow book","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"starsia"},"content":"list","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"starsia":3}}] +[{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"starsia"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"starsia"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"starsia"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"starsia"},"content":" protected LocalDate by;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"starsia"},"content":" public Deadline(String description, LocalDate by) {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"starsia"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"starsia"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"starsia"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"starsia"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"starsia"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\")) + \")\";","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"starsia"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"starsia":17}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"starsia"},"content":"import java.io.File;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"starsia"},"content":"import java.io.FileInputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"starsia"},"content":"import java.io.FileOutputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"starsia"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"starsia"},"content":"import java.io.ObjectInputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"starsia"},"content":"import java.io.ObjectOutputStream;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"starsia"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"starsia"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"starsia"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2024-01-27"},{"lineNumber":12,"author":{"gitId":"starsia"},"content":" enum Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"starsia"},"content":" LIST, MARK, UNMARK, TODO, DEADLINE, EVENT, DELETE, BYE","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"starsia"},"content":" public static void main(String[] args) throws IOException {","lastModifiedDate":"2024-01-27"},{"lineNumber":16,"author":{"gitId":"starsia"},"content":" ArrayList\u003cTask\u003e list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"starsia"},"content":" // Load tasks from file","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"starsia"},"content":" // Solution below inspired by https://stackoverflow.com/questions/16111496/java-how-can-i-write-my-arraylist-to-a-file-and-read-load-that-file-to-the","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"starsia"},"content":" try (ObjectInputStream ois \u003d new ObjectInputStream(new FileInputStream(\"./data/duke.txt\"))) {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"starsia"},"content":" list \u003d (ArrayList\u003cTask\u003e) ois.readObject();","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"starsia"},"content":" } catch (IOException | ClassNotFoundException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"starsia"},"content":" try {","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"starsia"},"content":" // make directory first","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"starsia"},"content":" new File(\"./data\").mkdirs();","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"starsia"},"content":" // then make file","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"starsia"},"content":" // Solution below inspired by https://www.w3schools.com/java/java_files_create.asp","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"starsia"},"content":" File myObj \u003d new File(\"./data/duke.txt\");","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"starsia"},"content":" if (myObj.createNewFile()) {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"starsia"},"content":" System.out.println(\"File created: \" + myObj.getName());","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"starsia"},"content":" } else {","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"starsia"},"content":" System.out.println(\"File already exists.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"starsia"},"content":" } catch (IOException i) {","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"starsia"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"starsia"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"starsia"},"content":" System.out.println(\"Could not load tasks from file: \" + e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"starsia"},"content":" // Start-up introduction","lastModifiedDate":"2024-01-28"},{"lineNumber":42,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-27"},{"lineNumber":43,"author":{"gitId":"starsia"},"content":" System.out.println(\"Hello! I\u0027m Klara\");","lastModifiedDate":"2024-01-27"},{"lineNumber":44,"author":{"gitId":"starsia"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-01-27"},{"lineNumber":45,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":47,"author":{"gitId":"starsia"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-27"},{"lineNumber":48,"author":{"gitId":"starsia"},"content":" String word \u003d sc.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":49,"author":{"gitId":"starsia"},"content":" while (!word.equals(\"bye\")) {","lastModifiedDate":"2024-01-27"},{"lineNumber":50,"author":{"gitId":"starsia"},"content":" // print list on demand","lastModifiedDate":"2024-01-28"},{"lineNumber":51,"author":{"gitId":"starsia"},"content":" if (word.equals(\"list\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":52,"author":{"gitId":"starsia"},"content":" printList(list);","lastModifiedDate":"2024-01-28"},{"lineNumber":53,"author":{"gitId":"starsia"},"content":" word \u003d sc.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":54,"author":{"gitId":"starsia"},"content":" // implementation of mark","lastModifiedDate":"2024-01-29"},{"lineNumber":55,"author":{"gitId":"starsia"},"content":" } else if (word.startsWith(\"mark\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":56,"author":{"gitId":"starsia"},"content":" String[] split \u003d word.split(\" \");","lastModifiedDate":"2024-01-28"},{"lineNumber":57,"author":{"gitId":"starsia"},"content":" Task extractedTask \u003d list.get(Integer.valueOf(split[1]) - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":58,"author":{"gitId":"starsia"},"content":" extractedTask.markAsDone();","lastModifiedDate":"2024-01-28"},{"lineNumber":59,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-28"},{"lineNumber":60,"author":{"gitId":"starsia"},"content":" System.out.println(\"Nice! I\u0027ve marked this task as done:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":61,"author":{"gitId":"starsia"},"content":" System.out.println(extractedTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":62,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-28"},{"lineNumber":63,"author":{"gitId":"starsia"},"content":" word \u003d sc.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":64,"author":{"gitId":"starsia"},"content":" } else if (word.startsWith(\"unmark\")) {","lastModifiedDate":"2024-01-28"},{"lineNumber":65,"author":{"gitId":"starsia"},"content":" String[] split \u003d word.split(\" \");","lastModifiedDate":"2024-01-28"},{"lineNumber":66,"author":{"gitId":"starsia"},"content":" Task extractedTask \u003d list.get(Integer.valueOf(split[1]) - 1);","lastModifiedDate":"2024-01-28"},{"lineNumber":67,"author":{"gitId":"starsia"},"content":" extractedTask.markAsUndone();","lastModifiedDate":"2024-01-28"},{"lineNumber":68,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-28"},{"lineNumber":69,"author":{"gitId":"starsia"},"content":" System.out.println(\"OK, I\u0027ve marked this task as not done yet:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":70,"author":{"gitId":"starsia"},"content":" System.out.println(extractedTask);","lastModifiedDate":"2024-01-28"},{"lineNumber":71,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-28"},{"lineNumber":72,"author":{"gitId":"starsia"},"content":" word \u003d sc.nextLine();","lastModifiedDate":"2024-01-28"},{"lineNumber":73,"author":{"gitId":"starsia"},"content":" } else if (word.startsWith(\"deadline\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":74,"author":{"gitId":"starsia"},"content":" String[] split \u003d word.split(\" /by \");","lastModifiedDate":"2024-01-29"},{"lineNumber":75,"author":{"gitId":"starsia"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"starsia"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"starsia"},"content":" throw new DukeException(\"Where is the rest of your description?\");","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"starsia"},"content":" String[] splitAgain \u003d split[0].split(\" \", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":80,"author":{"gitId":"starsia"},"content":" String dateline \u003d split[1];","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"starsia"},"content":" LocalDate localDate \u003d LocalDate.parse(dateline);","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"starsia"},"content":" Deadline deadline \u003d new Deadline(splitAgain[1], localDate);","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"starsia"},"content":" list.add(deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":84,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-27"},{"lineNumber":85,"author":{"gitId":"starsia"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":86,"author":{"gitId":"starsia"},"content":" System.out.println(\" \" + deadline);","lastModifiedDate":"2024-01-29"},{"lineNumber":87,"author":{"gitId":"starsia"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":88,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-29"},{"lineNumber":89,"author":{"gitId":"starsia"},"content":" } catch (DukeException d) {","lastModifiedDate":"2024-02-02"},{"lineNumber":90,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"starsia"},"content":" System.out.println(d.getMessage());","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":93,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":94,"author":{"gitId":"starsia"},"content":" word \u003d sc.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":95,"author":{"gitId":"starsia"},"content":" } else if (word.startsWith(\"todo\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":96,"author":{"gitId":"starsia"},"content":" String[] split \u003d word.split(\" \", 2);","lastModifiedDate":"2024-01-29"},{"lineNumber":97,"author":{"gitId":"starsia"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"starsia"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"starsia"},"content":" throw new DukeException(\"Where is the rest of your description?\");","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"starsia"},"content":" String description \u003d split[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":102,"author":{"gitId":"starsia"},"content":" Todo todo \u003d new Todo(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":103,"author":{"gitId":"starsia"},"content":" list.add(todo);","lastModifiedDate":"2024-01-29"},{"lineNumber":104,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-29"},{"lineNumber":105,"author":{"gitId":"starsia"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":106,"author":{"gitId":"starsia"},"content":" System.out.println(\" \" + todo);","lastModifiedDate":"2024-01-29"},{"lineNumber":107,"author":{"gitId":"starsia"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":108,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-29"},{"lineNumber":109,"author":{"gitId":"starsia"},"content":" } catch (DukeException d){","lastModifiedDate":"2024-02-02"},{"lineNumber":110,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":111,"author":{"gitId":"starsia"},"content":" System.out.println(d.getMessage());","lastModifiedDate":"2024-02-02"},{"lineNumber":112,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":113,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":114,"author":{"gitId":"starsia"},"content":" word \u003d sc.nextLine();","lastModifiedDate":"2024-01-29"},{"lineNumber":115,"author":{"gitId":"starsia"},"content":" } else if (word.startsWith(\"event\")) {","lastModifiedDate":"2024-01-29"},{"lineNumber":116,"author":{"gitId":"starsia"},"content":" String[] split \u003d word.split(\" /from \");","lastModifiedDate":"2024-01-29"},{"lineNumber":117,"author":{"gitId":"starsia"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":118,"author":{"gitId":"starsia"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":119,"author":{"gitId":"starsia"},"content":" throw new DukeException(\"Where is the rest of your description?\");","lastModifiedDate":"2024-02-02"},{"lineNumber":120,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":121,"author":{"gitId":"starsia"},"content":" String description \u003d split[0].split(\" \", 2)[1];","lastModifiedDate":"2024-01-29"},{"lineNumber":122,"author":{"gitId":"starsia"},"content":" LocalDate from \u003d LocalDate.parse(split[1].split(\" /to \")[0]);","lastModifiedDate":"2024-02-07"},{"lineNumber":123,"author":{"gitId":"starsia"},"content":" LocalDate to \u003d LocalDate.parse(split[1].split(\" /to \")[1]);","lastModifiedDate":"2024-02-07"},{"lineNumber":124,"author":{"gitId":"starsia"},"content":" Event event \u003d new Event(description, from, to);","lastModifiedDate":"2024-01-29"},{"lineNumber":125,"author":{"gitId":"starsia"},"content":" list.add(event);","lastModifiedDate":"2024-01-29"},{"lineNumber":126,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-29"},{"lineNumber":127,"author":{"gitId":"starsia"},"content":" System.out.println(\"Got it. I\u0027ve added this task:\");","lastModifiedDate":"2024-01-29"},{"lineNumber":128,"author":{"gitId":"starsia"},"content":" System.out.println(\" \" + event);","lastModifiedDate":"2024-01-29"},{"lineNumber":129,"author":{"gitId":"starsia"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-01-29"},{"lineNumber":130,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-27"},{"lineNumber":131,"author":{"gitId":"starsia"},"content":" } catch (DukeException d) {","lastModifiedDate":"2024-02-02"},{"lineNumber":132,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":133,"author":{"gitId":"starsia"},"content":" System.out.println(d.getMessage());","lastModifiedDate":"2024-02-02"},{"lineNumber":134,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":135,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":136,"author":{"gitId":"starsia"},"content":" word \u003d sc.nextLine();","lastModifiedDate":"2024-01-27"},{"lineNumber":137,"author":{"gitId":"starsia"},"content":" } else if (word.startsWith(\"delete\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":138,"author":{"gitId":"starsia"},"content":" String[] split \u003d word.split(\" \");","lastModifiedDate":"2024-02-02"},{"lineNumber":139,"author":{"gitId":"starsia"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":140,"author":{"gitId":"starsia"},"content":" if (split.length \u003c 2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":141,"author":{"gitId":"starsia"},"content":" throw new DukeException(\"Which task do you want to delete?\");","lastModifiedDate":"2024-02-02"},{"lineNumber":142,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":143,"author":{"gitId":"starsia"},"content":" int number \u003d Integer.parseInt(split[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":144,"author":{"gitId":"starsia"},"content":" Task task \u003d list.get(number - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":145,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":146,"author":{"gitId":"starsia"},"content":" System.out.println(\"Noted. I\u0027ve removed this task:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":147,"author":{"gitId":"starsia"},"content":" System.out.println(\" \" + task);","lastModifiedDate":"2024-02-02"},{"lineNumber":148,"author":{"gitId":"starsia"},"content":" list.remove(number - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":149,"author":{"gitId":"starsia"},"content":" System.out.println(\"Now you have \" + list.size() + \" tasks in the list.\");","lastModifiedDate":"2024-02-02"},{"lineNumber":150,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":151,"author":{"gitId":"starsia"},"content":" } catch (DukeException d) {","lastModifiedDate":"2024-02-02"},{"lineNumber":152,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":153,"author":{"gitId":"starsia"},"content":" System.out.println(d.getMessage());","lastModifiedDate":"2024-02-02"},{"lineNumber":154,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":155,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":156,"author":{"gitId":"starsia"},"content":" word \u003d sc.nextLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":157,"author":{"gitId":"starsia"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":158,"author":{"gitId":"starsia"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":159,"author":{"gitId":"starsia"},"content":" throw new DukeException(\"I don\u0027t understand bro\");","lastModifiedDate":"2024-02-02"},{"lineNumber":160,"author":{"gitId":"starsia"},"content":" } catch (DukeException d) {","lastModifiedDate":"2024-02-02"},{"lineNumber":161,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":162,"author":{"gitId":"starsia"},"content":" System.out.println(d.getMessage());","lastModifiedDate":"2024-02-02"},{"lineNumber":163,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-02-02"},{"lineNumber":164,"author":{"gitId":"starsia"},"content":" word \u003d sc.nextLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":165,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":166,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":167,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":168,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":169,"author":{"gitId":"starsia"},"content":" // Save tasks to file","lastModifiedDate":"2024-02-06"},{"lineNumber":170,"author":{"gitId":"starsia"},"content":" try (ObjectOutputStream oos \u003d new ObjectOutputStream(new FileOutputStream(\"./data/duke.txt\"))) {","lastModifiedDate":"2024-02-06"},{"lineNumber":171,"author":{"gitId":"starsia"},"content":" oos.writeObject(list);","lastModifiedDate":"2024-02-06"},{"lineNumber":172,"author":{"gitId":"starsia"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-06"},{"lineNumber":173,"author":{"gitId":"starsia"},"content":" System.out.println(\"Could not save tasks to file: \" + e.getMessage());","lastModifiedDate":"2024-02-06"},{"lineNumber":174,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":175,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":176,"author":{"gitId":"starsia"},"content":" // Logging off upon \"bye\" command","lastModifiedDate":"2024-01-28"},{"lineNumber":177,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-27"},{"lineNumber":178,"author":{"gitId":"starsia"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-01-27"},{"lineNumber":179,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-27"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":181,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":182,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":183,"author":{"gitId":"starsia"},"content":" private static void printBreak() {","lastModifiedDate":"2024-01-27"},{"lineNumber":184,"author":{"gitId":"starsia"},"content":" String line \u003d \"____________________________________________________________\";","lastModifiedDate":"2024-01-27"},{"lineNumber":185,"author":{"gitId":"starsia"},"content":" System.out.println(line);","lastModifiedDate":"2024-01-27"},{"lineNumber":186,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-27"},{"lineNumber":187,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":188,"author":{"gitId":"starsia"},"content":" /**","lastModifiedDate":"2024-01-28"},{"lineNumber":189,"author":{"gitId":"starsia"},"content":" * Print all elements in the list","lastModifiedDate":"2024-01-28"},{"lineNumber":190,"author":{"gitId":"starsia"},"content":" * @param list","lastModifiedDate":"2024-01-28"},{"lineNumber":191,"author":{"gitId":"starsia"},"content":" */","lastModifiedDate":"2024-01-28"},{"lineNumber":192,"author":{"gitId":"starsia"},"content":" private static void printList(ArrayList\u003cTask\u003e list) {","lastModifiedDate":"2024-01-28"},{"lineNumber":193,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-28"},{"lineNumber":194,"author":{"gitId":"starsia"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2024-01-28"},{"lineNumber":195,"author":{"gitId":"starsia"},"content":" for (int i \u003d 0; i \u003c list.size(); i++) {","lastModifiedDate":"2024-01-28"},{"lineNumber":196,"author":{"gitId":"starsia"},"content":" if (list.get(i).isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":197,"author":{"gitId":"starsia"},"content":" System.out.println(Integer.toString(i + 1) + \".\" + list.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":198,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":199,"author":{"gitId":"starsia"},"content":" else {","lastModifiedDate":"2024-01-28"},{"lineNumber":200,"author":{"gitId":"starsia"},"content":" System.out.println(Integer.toString(i + 1) + \".\" + list.get(i));","lastModifiedDate":"2024-01-29"},{"lineNumber":201,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":202,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":203,"author":{"gitId":"starsia"},"content":" printBreak();","lastModifiedDate":"2024-01-28"},{"lineNumber":204,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":205,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":206,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-27"},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"starsia":203,"-":4}},{"path":"src/main/java/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"starsia"},"content":"public class DukeException extends Exception{","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"starsia"},"content":" public DukeException(String e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"starsia"},"content":" super(e);","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"starsia"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"starsia":5}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"starsia"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"starsia"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"starsia"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"starsia"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"starsia"},"content":" protected LocalDate from;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"starsia"},"content":" protected LocalDate to;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"starsia"},"content":" public Event(String description, LocalDate from, LocalDate to) {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"starsia"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"starsia"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-29"},{"lineNumber":13,"author":{"gitId":"starsia"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-29"},{"lineNumber":14,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":15,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":16,"author":{"gitId":"starsia"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":17,"author":{"gitId":"starsia"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":18,"author":{"gitId":"starsia"},"content":" return \"[E]\" + super.toString() + \" (from: \" + from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"starsia"},"content":" + \" to: \" + to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy\"))","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"starsia"},"content":" + \")\";","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":22,"author":{"gitId":"starsia"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"starsia":22}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"starsia"},"content":"import java.io.Serializable;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"starsia"},"content":"public class Task implements Serializable {","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"starsia"},"content":" protected String description;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"starsia"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"starsia"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"starsia"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"starsia"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"starsia"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"starsia"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"starsia"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"starsia"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-28"},{"lineNumber":18,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":19,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"starsia"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-28"},{"lineNumber":21,"author":{"gitId":"starsia"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-28"},{"lineNumber":22,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":23,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":24,"author":{"gitId":"starsia"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":25,"author":{"gitId":"starsia"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":26,"author":{"gitId":"starsia"},"content":" if (isDone) {","lastModifiedDate":"2024-01-28"},{"lineNumber":27,"author":{"gitId":"starsia"},"content":" return \"[X] \" + description;","lastModifiedDate":"2024-01-29"},{"lineNumber":28,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":29,"author":{"gitId":"starsia"},"content":" else {","lastModifiedDate":"2024-01-28"},{"lineNumber":30,"author":{"gitId":"starsia"},"content":" return \"[ ] \" + description;","lastModifiedDate":"2024-01-29"},{"lineNumber":31,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":33,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":34,"author":{"gitId":"starsia"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"starsia":34}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"starsia"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-29"},{"lineNumber":2,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":3,"author":{"gitId":"starsia"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-29"},{"lineNumber":4,"author":{"gitId":"starsia"},"content":" super(description);","lastModifiedDate":"2024-01-29"},{"lineNumber":5,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":6,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-29"},{"lineNumber":7,"author":{"gitId":"starsia"},"content":" @Override","lastModifiedDate":"2024-01-29"},{"lineNumber":8,"author":{"gitId":"starsia"},"content":" public String toString() {","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"starsia"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"starsia"},"content":" }","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"starsia"},"content":"}","lastModifiedDate":"2024-01-29"}],"authorContributionMap":{"starsia":11}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"starsia"},"content":"todo borrow book","lastModifiedDate":"2024-01-30"},{"lineNumber":2,"author":{"gitId":"starsia"},"content":"list","lastModifiedDate":"2024-01-30"},{"lineNumber":3,"author":{"gitId":"starsia"},"content":"","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"starsia":3}}] diff --git a/starsia_ip_master/commits.json b/starsia_ip_master/commits.json index 23505719..134872fa 100644 --- a/starsia_ip_master/commits.json +++ b/starsia_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"starsia":[{"date":"2024-01-27","commitResults":[{"hash":"7b920732be8548e8090f6bf27ab6b40526039afd","isMergeCommit":false,"messageTitle":"Add Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}},{"hash":"583ffe286f80c02f3659539d7558f2a97e26e7e6","isMergeCommit":false,"messageTitle":"Add Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":9}}}]},{"date":"2024-01-28","commitResults":[{"hash":"7b30b80502d962eb5196eb91dfd030433b305e74","isMergeCommit":false,"messageTitle":"Add \"List\" and \"Add\" commands","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":4}}},{"hash":"dd0be61adfe0b244cdb3153119576a304a3015ef","isMergeCommit":false,"messageTitle":"Add Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":6}}}]},{"date":"2024-01-29","commitResults":[{"hash":"91768f0ee7526e76e6cb83ba8dec577c330fff9f","isMergeCommit":false,"messageTitle":"Add ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":89,"deletions":8}}}]},{"date":"2024-01-30","commitResults":[{"hash":"212b1c26ade87f934ab6b64b0a8680605b0efde3","isMergeCommit":false,"messageTitle":"Add Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"sh":{"insertions":0,"deletions":0}}},{"hash":"bf0f9369e0caa24cd4e363af8d9bf9fd9056d6a0","isMergeCommit":false,"messageTitle":"Revert \"Add Automated Text UI Testing\"","messageBody":"This reverts commit 212b1c26ade87f934ab6b64b0a8680605b0efde3.\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"sh":{"insertions":0,"deletions":0}}},{"hash":"ab0e44891ca9ac9ba86d7fc48864bb484b903fc3","isMergeCommit":false,"messageTitle":"Add Automated Text UI Testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}}]},{"date":"2024-02-02","commitResults":[{"hash":"e2bc0ec88680131a1b0a2f20d78e7175736de503","isMergeCommit":false,"messageTitle":"Add error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":35}}},{"hash":"b8e287abb41037998fb6faa152927e1f3cef4b5c","isMergeCommit":false,"messageTitle":"Add Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}},{"hash":"cbae86d7a6a6b7edc2f8cbf54f26ad750471035b","isMergeCommit":false,"messageTitle":"Add Enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}}]},{"date":"2024-02-06","commitResults":[{"hash":"c4ebed51f7fe8136ec5ab9c28b2859d3372c63fb","isMergeCommit":false,"messageTitle":"Add Save","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"starsia":{"java":281,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":3}},"authorContributionVariance":{"starsia":1650.1942},"authorDisplayNameMap":{"starsia":"CS2103T-F12-1 SIA ..QING"}} +{"authorDailyContributionsMap":{"starsia":[{"date":"2024-01-27","commitResults":[{"hash":"7b920732be8548e8090f6bf27ab6b40526039afd","isMergeCommit":false,"messageTitle":"Add Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":6}}},{"hash":"583ffe286f80c02f3659539d7558f2a97e26e7e6","isMergeCommit":false,"messageTitle":"Add Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":9}}}]},{"date":"2024-01-28","commitResults":[{"hash":"7b30b80502d962eb5196eb91dfd030433b305e74","isMergeCommit":false,"messageTitle":"Add \"List\" and \"Add\" commands","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":30,"deletions":4}}},{"hash":"dd0be61adfe0b244cdb3153119576a304a3015ef","isMergeCommit":false,"messageTitle":"Add Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":6}}}]},{"date":"2024-01-29","commitResults":[{"hash":"91768f0ee7526e76e6cb83ba8dec577c330fff9f","isMergeCommit":false,"messageTitle":"Add ToDos, Events, Deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":89,"deletions":8}}}]},{"date":"2024-01-30","commitResults":[{"hash":"212b1c26ade87f934ab6b64b0a8680605b0efde3","isMergeCommit":false,"messageTitle":"Add Automated Text UI Testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"sh":{"insertions":0,"deletions":0}}},{"hash":"bf0f9369e0caa24cd4e363af8d9bf9fd9056d6a0","isMergeCommit":false,"messageTitle":"Revert \"Add Automated Text UI Testing\"","messageBody":"This reverts commit 212b1c26ade87f934ab6b64b0a8680605b0efde3.\n","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"sh":{"insertions":0,"deletions":0}}},{"hash":"ab0e44891ca9ac9ba86d7fc48864bb484b903fc3","isMergeCommit":false,"messageTitle":"Add Automated Text UI Testing","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0}}}]},{"date":"2024-02-02","commitResults":[{"hash":"e2bc0ec88680131a1b0a2f20d78e7175736de503","isMergeCommit":false,"messageTitle":"Add error handling","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":69,"deletions":35}}},{"hash":"b8e287abb41037998fb6faa152927e1f3cef4b5c","isMergeCommit":false,"messageTitle":"Add Delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":2}}},{"hash":"cbae86d7a6a6b7edc2f8cbf54f26ad750471035b","isMergeCommit":false,"messageTitle":"Add Enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":0}}}]},{"date":"2024-02-06","commitResults":[{"hash":"c4ebed51f7fe8136ec5ab9c28b2859d3372c63fb","isMergeCommit":false,"messageTitle":"Add Save","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":4}}}]},{"date":"2024-02-07","commitResults":[{"hash":"8fa5ac6091ce43ff2b582ff1b4ad5b7295e9e8fb","isMergeCommit":false,"messageTitle":"Add Dates and Times","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":11},"sh":{"insertions":0,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"starsia":{"java":292,"md":0,"fxml":0,"sh":0,"bat":0,"gradle":0,"txt":3}},"authorContributionVariance":{"starsia":1572.6875},"authorDisplayNameMap":{"starsia":"CS2103T-F12-1 SIA ..QING"}} diff --git a/summary.json b/summary.json index 6dd347aa..3e87934a 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"repoSenseVersion":"b52771b16e","reportGeneratedTime":"Tue Feb 6 23:22:55 2024 UTC+08:00","reportGenerationTime":" 51.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/JerryWang0000/ip.git","repoName":"ip","organization":"JerryWang0000","domainName":"github"},"branch":"master","displayName":"JerryWang0000/ip[master]","outputFolderName":"JerryWang0000_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/peterXGD/ip.git","repoName":"ip","organization":"peterXGD","domainName":"github"},"branch":"master","displayName":"peterXGD/ip[master]","outputFolderName":"peterXGD_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/tahsinhasem/ip.git","repoName":"ip","organization":"tahsinhasem","domainName":"github"},"branch":"master","displayName":"tahsinhasem/ip[master]","outputFolderName":"tahsinhasem_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/ShanylOng/ip.git","repoName":"ip","organization":"ShanylOng","domainName":"github"},"branch":"master","displayName":"ShanylOng/ip[master]","outputFolderName":"ShanylOng_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/chuahjiajie/ip.git","repoName":"ip","organization":"chuahjiajie","domainName":"github"},"branch":"master","displayName":"chuahjiajie/ip[master]","outputFolderName":"chuahjiajie_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/quelinxiao/ip.git","repoName":"ip","organization":"quelinxiao","domainName":"github"},"branch":"master","displayName":"quelinxiao/ip[master]","outputFolderName":"quelinxiao_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/IamZhenHong/ip.git","repoName":"ip","organization":"IamZhenHong","domainName":"github"},"branch":"master","displayName":"IamZhenHong/ip[master]","outputFolderName":"IamZhenHong_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":"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":"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":"The-Dudeski/ip[master]","errorMessage":"Failed to clone from https://github.com/The-Dudeski/ip.git"}],"sinceDate":"2024-01-19","untilDate":"2024-02-06","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":"29903e3124","reportGeneratedTime":"Wed Feb 7 09:15:43 2024 UTC+08:00","reportGenerationTime":" 49.79 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/JerryWang0000/ip.git","repoName":"ip","organization":"JerryWang0000","domainName":"github"},"branch":"master","displayName":"JerryWang0000/ip[master]","outputFolderName":"JerryWang0000_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/peterXGD/ip.git","repoName":"ip","organization":"peterXGD","domainName":"github"},"branch":"master","displayName":"peterXGD/ip[master]","outputFolderName":"peterXGD_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/tahsinhasem/ip.git","repoName":"ip","organization":"tahsinhasem","domainName":"github"},"branch":"master","displayName":"tahsinhasem/ip[master]","outputFolderName":"tahsinhasem_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/ShanylOng/ip.git","repoName":"ip","organization":"ShanylOng","domainName":"github"},"branch":"master","displayName":"ShanylOng/ip[master]","outputFolderName":"ShanylOng_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/chuahjiajie/ip.git","repoName":"ip","organization":"chuahjiajie","domainName":"github"},"branch":"master","displayName":"chuahjiajie/ip[master]","outputFolderName":"chuahjiajie_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/quelinxiao/ip.git","repoName":"ip","organization":"quelinxiao","domainName":"github"},"branch":"master","displayName":"quelinxiao/ip[master]","outputFolderName":"quelinxiao_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/IamZhenHong/ip.git","repoName":"ip","organization":"IamZhenHong","domainName":"github"},"branch":"master","displayName":"IamZhenHong/ip[master]","outputFolderName":"IamZhenHong_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":"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":"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":"The-Dudeski/ip[master]","errorMessage":"Failed to clone from https://github.com/The-Dudeski/ip.git"}],"sinceDate":"2024-01-19","untilDate":"2024-02-07","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/tanjiajiajun_ip_master/authorship.json b/tanjiajiajun_ip_master/authorship.json index d688934c..9ba79b73 100644 --- a/tanjiajiajun_ip_master/authorship.json +++ b/tanjiajiajun_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"# duke.Duke project template","lastModifiedDate":"2024-02-03"},{"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":"tanjiajiajun"},"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-02-03"},{"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":{"tanjiajiajun":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":"tanjiajiajun"},"content":" mainClass.set(\"duke.NewDuke\")","lastModifiedDate":"2024-02-03"},{"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":{"tanjiajiajun":1,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"T | 1 | borrow book","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"E | 0 | project meeting | Mon 2pm | 4pm","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"T | 0 | hello dworld","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"tanjiajiajun":3}},{"path":"src/main/java/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package commands;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"public class DeadlineCommand {","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"tanjiajiajun":4}},{"path":"src/main/java/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package commands;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"public class EventCommand {","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"tanjiajiajun":4}},{"path":"src/main/java/commands/ToDoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package commands;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"public class ToDoCommand {","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"tanjiajiajun":4}},{"path":"src/main/java/duke/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":" public LocalDateTime deadline;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" public Deadlines(String description, LocalDateTime deadline) {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":" DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" String formattedDate \u003d deadline.format(outputFormatter);","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), formattedDate);","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tanjiajiajun":20}},{"path":"src/main/java/duke/DukeExceptions.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"public class DukeExceptions extends Exception{","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":" public DukeExceptions() {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":" super();","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":" public String output() {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":" return \"Oh no! \";","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tanjiajiajun":10}},{"path":"src/main/java/duke/EmptyTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"public class EmptyTaskException extends DukeExceptions{","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":" public String msg \u003d \"You can\u0027t do nothing!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":" public EmptyTaskException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":" super();","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" public String output() {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" return String.format(\"%s%s\\n\", super.output(), this.msg);","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tanjiajiajun":17}},{"path":"src/main/java/duke/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"public class Events extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":" public String from;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":" public String to;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":" public Events(String description, String from, String to) {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), this.from, this.to);","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tanjiajiajun":17}},{"path":"src/main/java/duke/NewDuke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"public class NewDuke {","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":" private Storage storage;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":" private UI ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":" private Save saver;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":" private Parser parser;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":" public NewDuke(String filePath) {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" ui \u003d new UI();","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" storage \u003d new Storage();","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" saver \u003d new Save(filePath);","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" parser \u003d new Parser(storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":" saver.loadData(storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":" public void run() {","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" ui.onStart();","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" parser.run();","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" ui.onEnd();","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":" saver.saveData(storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"tanjiajiajun"},"content":" new NewDuke(\"data/duke.txt\").run();","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"tanjiajiajun":26}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"import java.util.List;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" * The Parser class handles parsing user input and executing corresponding actions.","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":"public class Parser {","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":" private Scanner sc;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" public UI ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" public Storage storage;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" * Constructs a new Parser instance.","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":" * @param store The storage object to interact with task storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":" public Parser(Storage store) {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":" sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"tanjiajiajun"},"content":" ui \u003d new UI();","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"tanjiajiajun"},"content":" storage \u003d store;","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"tanjiajiajun"},"content":" * Runs the main loop for processing user input and executing commands.","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"tanjiajiajun"},"content":" public void run() {","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"tanjiajiajun"},"content":" boolean isStopRunning \u003d false;","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"tanjiajiajun"},"content":" while (!isStopRunning) {","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"tanjiajiajun"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"tanjiajiajun"},"content":" String input \u003d sc.nextLine();","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"tanjiajiajun"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"tanjiajiajun"},"content":" isStopRunning \u003d true;","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"tanjiajiajun"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"tanjiajiajun"},"content":" List\u003cString\u003e inputParts \u003d Arrays.asList(input.split(\" \"));","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"tanjiajiajun"},"content":" if (inputParts.get(0).equals(\"deadline\") || inputParts.get(0).equals(\"todo\") || ","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"tanjiajiajun"},"content":" inputParts.get(0).equals(\"event\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"tanjiajiajun"},"content":" if (inputParts.size() \u003d\u003d 1) {","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"tanjiajiajun"},"content":" throw new EmptyTaskException();","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"tanjiajiajun"},"content":" } else if (inputParts.get(0).equals(\"deadline\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"tanjiajiajun"},"content":" int index \u003d inputParts.indexOf(\"/by\");","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"tanjiajiajun"},"content":" String descriptor \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"tanjiajiajun"},"content":" String deadline \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"tanjiajiajun"},"content":" for (int i\u003d1; i\u003cindex; i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"tanjiajiajun"},"content":" descriptor +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"tanjiajiajun"},"content":" for (int i\u003dindex+1; i\u003cinputParts.size(); i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"tanjiajiajun"},"content":" deadline +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"tanjiajiajun"},"content":" deadline \u003d deadline.trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"tanjiajiajun"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"M/d/yyyy HHmm\");","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"tanjiajiajun"},"content":" LocalDateTime localDateTime \u003d LocalDateTime.parse(deadline, formatter);","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"tanjiajiajun"},"content":" descriptor \u003d descriptor.trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"tanjiajiajun"},"content":" if (descriptor.isEmpty()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"tanjiajiajun"},"content":" throw new EmptyTaskException();","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"tanjiajiajun"},"content":" Deadlines d \u003d new Deadlines(descriptor, localDateTime);","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"tanjiajiajun"},"content":" storage.add(d);","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"tanjiajiajun"},"content":" ui.onTaskAddition(storage.addToListOutput(d));","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"tanjiajiajun"},"content":" } else if (inputParts.get(0).equals(\"event\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"tanjiajiajun"},"content":" int index1 \u003d inputParts.indexOf(\"/from\");","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"tanjiajiajun"},"content":" int index2 \u003d inputParts.indexOf(\"/to\");","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"tanjiajiajun"},"content":" String descriptor \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"tanjiajiajun"},"content":" String from \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"tanjiajiajun"},"content":" String to \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"tanjiajiajun"},"content":" for (int i\u003dindex1 + 1; i\u003cindex2; i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"tanjiajiajun"},"content":" from +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"tanjiajiajun"},"content":" for (int i\u003dindex2 + 1; i\u003cinputParts.size(); i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"tanjiajiajun"},"content":" to +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"tanjiajiajun"},"content":" for (int i\u003d1; i\u003cindex1; i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"tanjiajiajun"},"content":" descriptor +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"tanjiajiajun"},"content":" descriptor \u003d descriptor.trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"tanjiajiajun"},"content":" if (descriptor.isEmpty()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"tanjiajiajun"},"content":" throw new EmptyTaskException();","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"tanjiajiajun"},"content":" from \u003d from.trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"tanjiajiajun"},"content":" to \u003d to.trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"tanjiajiajun"},"content":" Events e \u003d new Events(descriptor, from, to);","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"tanjiajiajun"},"content":" storage.add(e);","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"tanjiajiajun"},"content":" ui.onTaskAddition(storage.addToListOutput(e));","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"tanjiajiajun"},"content":" } else if (inputParts.get(0).equals(\"todo\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"tanjiajiajun"},"content":" String descriptor \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"tanjiajiajun"},"content":" for (int i\u003d1; i\u003cinputParts.size(); i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"tanjiajiajun"},"content":" descriptor +\u003d inputParts.get(i) + \" \";","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"tanjiajiajun"},"content":" descriptor \u003d descriptor.trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"tanjiajiajun"},"content":" ToDos t \u003d new ToDos(descriptor);","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"tanjiajiajun"},"content":" storage.add(t);","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"tanjiajiajun"},"content":" ui.onTaskAddition(storage.addToListOutput(t));","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"tanjiajiajun"},"content":" if (descriptor.isEmpty()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"tanjiajiajun"},"content":" throw new EmptyTaskException();","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"tanjiajiajun"},"content":" } else if (inputParts.get(0).equals(\"mark\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"tanjiajiajun"},"content":" Task t \u003d storage.get(Integer.parseInt(inputParts.get(1)) - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"tanjiajiajun"},"content":" t.markAsDone();","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"tanjiajiajun"},"content":" ui.onMark(t.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"tanjiajiajun"},"content":" } else if (inputParts.get(0).equals(\"unmark\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"tanjiajiajun"},"content":" Task t \u003d storage.get(Integer.parseInt(inputParts.get(1)) - 1);","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"tanjiajiajun"},"content":" t.markAsUndone();","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"tanjiajiajun"},"content":" ui.onUnmark(t.toString());","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"tanjiajiajun"},"content":" } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":114,"author":{"gitId":"tanjiajiajun"},"content":" ui.onPrintList(storage.printList());","lastModifiedDate":"2024-02-03"},{"lineNumber":115,"author":{"gitId":"tanjiajiajun"},"content":" } else if (inputParts.get(0).equals(\"delete\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":116,"author":{"gitId":"tanjiajiajun"},"content":" int index \u003d Integer.parseInt(inputParts.get(1));","lastModifiedDate":"2024-02-03"},{"lineNumber":117,"author":{"gitId":"tanjiajiajun"},"content":" Task t \u003d storage.pop(index-1);","lastModifiedDate":"2024-02-03"},{"lineNumber":118,"author":{"gitId":"tanjiajiajun"},"content":" ui.onTaskDeletion(t.toString(), storage.size());","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"tanjiajiajun"},"content":" } else if (inputParts.get(0).equals(\"find\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"tanjiajiajun"},"content":" String identifier \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":121,"author":{"gitId":"tanjiajiajun"},"content":" for (int j\u003d1; j\u003cinputParts.size(); j++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":122,"author":{"gitId":"tanjiajiajun"},"content":" identifier +\u003d inputParts.get(j) + \" \";","lastModifiedDate":"2024-02-03"},{"lineNumber":123,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":124,"author":{"gitId":"tanjiajiajun"},"content":" identifier \u003d identifier.trim();","lastModifiedDate":"2024-02-03"},{"lineNumber":125,"author":{"gitId":"tanjiajiajun"},"content":" String output \u003d storage.find(identifier);","lastModifiedDate":"2024-02-03"},{"lineNumber":126,"author":{"gitId":"tanjiajiajun"},"content":" ui.onPrintFind(output);","lastModifiedDate":"2024-02-03"},{"lineNumber":127,"author":{"gitId":"tanjiajiajun"},"content":" } else {","lastModifiedDate":"2024-02-03"},{"lineNumber":128,"author":{"gitId":"tanjiajiajun"},"content":" throw new UnknownInputException();","lastModifiedDate":"2024-02-03"},{"lineNumber":129,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":130,"author":{"gitId":"tanjiajiajun"},"content":" } catch (DukeExceptions e) {","lastModifiedDate":"2024-02-03"},{"lineNumber":131,"author":{"gitId":"tanjiajiajun"},"content":" System.out.println(e.output());","lastModifiedDate":"2024-02-03"},{"lineNumber":132,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":133,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":134,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":135,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":136,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"tanjiajiajun":136}},{"path":"src/main/java/duke/Save.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import java.io.FileInputStream;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"import java.util.List;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" * The Save class manages the saving and loading of task data to and from a file.","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":"public class Save {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" * The file path for saving and loading data.","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":" public String filePath \u003d \"data/duke.txt\";","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"tanjiajiajun"},"content":" * Constructs a new Save instance with a specified file path.","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"tanjiajiajun"},"content":" * @param f The file path.","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"tanjiajiajun"},"content":" public Save(String f) {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"tanjiajiajun"},"content":" this.filePath \u003d f;","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"tanjiajiajun"},"content":" * Saves the data from the given storage to the specified file path.","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"tanjiajiajun"},"content":" * @param s The storage containing tasks to be saved.","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"tanjiajiajun"},"content":" public void saveData(Storage s) {","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"tanjiajiajun"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"tanjiajiajun"},"content":" for (int i\u003d0; i\u003cs.size(); i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"tanjiajiajun"},"content":" Task t \u003d s.get(i);","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"tanjiajiajun"},"content":" String desc \u003d t.description;","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"tanjiajiajun"},"content":" String isDone;","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"tanjiajiajun"},"content":" if (t.isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"tanjiajiajun"},"content":" isDone \u003d \"1\";","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"tanjiajiajun"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"tanjiajiajun"},"content":" isDone \u003d \"0\";","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"tanjiajiajun"},"content":" String taskType \u003d t.toString().split(\"\")[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"tanjiajiajun"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"tanjiajiajun"},"content":" String line \u003d \"T\" + \" | \" + isDone + \" | \" + desc;","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"tanjiajiajun"},"content":" writer.write(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"tanjiajiajun"},"content":" writer.newLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"tanjiajiajun"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"tanjiajiajun"},"content":" String str \u003d t.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"tanjiajiajun"},"content":" String insideParenthesis \u003d str.substring(str.indexOf(\"(\")+1, str.indexOf(\")\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"tanjiajiajun"},"content":" String[] subString \u003d insideParenthesis.split(\" \");","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"tanjiajiajun"},"content":" String deadline \u003d \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"tanjiajiajun"},"content":" for (int j\u003d1; j\u003csubString.length; j++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"tanjiajiajun"},"content":" deadline +\u003d subString[j];","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"tanjiajiajun"},"content":" String line \u003d \"D\" + \" | \" + isDone + \" | \" + desc + \" | \" + deadline;","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"tanjiajiajun"},"content":" writer.write(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"tanjiajiajun"},"content":" writer.newLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"tanjiajiajun"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"tanjiajiajun"},"content":" String str \u003d t.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"tanjiajiajun"},"content":" String insideParenthesis \u003d str.substring(str.indexOf(\"(\")+1, str.indexOf(\")\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"tanjiajiajun"},"content":" String[] subString \u003d insideParenthesis.split(\" \");","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"tanjiajiajun"},"content":" List\u003cString\u003e arrayList \u003d new ArrayList\u003c\u003e(Arrays.asList(subString));","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"tanjiajiajun"},"content":" int index1 \u003d arrayList.indexOf(\"to:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"tanjiajiajun"},"content":" String from \u003d \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"tanjiajiajun"},"content":" String to \u003d \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"tanjiajiajun"},"content":" for (int j\u003d1; j\u003cindex1; j++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"tanjiajiajun"},"content":" from +\u003d subString[j];","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"tanjiajiajun"},"content":" from +\u003d \" \";","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"tanjiajiajun"},"content":" from \u003d from.trim();","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"tanjiajiajun"},"content":" for (int j\u003dindex1+1; j\u003csubString.length; j++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"tanjiajiajun"},"content":" to +\u003d subString[j];","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"tanjiajiajun"},"content":" to +\u003d \" \";","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"tanjiajiajun"},"content":" to \u003d to.trim();","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"tanjiajiajun"},"content":" String line \u003d \"E\" + \" | \" + isDone + \" | \" + desc + \" | \" + from + \" | \" + to;","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"tanjiajiajun"},"content":" writer.write(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"tanjiajiajun"},"content":" writer.newLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"tanjiajiajun"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"tanjiajiajun"},"content":" System.out.println(\"Something went wrong with writing file!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":90,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"tanjiajiajun"},"content":" * Loads data from the specified file path into the given storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"tanjiajiajun"},"content":" * @param s The storage where tasks will be loaded.","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"tanjiajiajun"},"content":" public void loadData(Storage s) {","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"tanjiajiajun"},"content":" try(FileInputStream fis \u003d new FileInputStream(filePath)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"tanjiajiajun"},"content":" byte[] buffer \u003d new byte[1024]; // You can adjust the buffer size according to your needs","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"tanjiajiajun"},"content":" int bytesRead;","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"tanjiajiajun"},"content":" while ((bytesRead \u003d fis.read(buffer)) !\u003d -1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"tanjiajiajun"},"content":" // Process the read data","lastModifiedDate":"2024-02-02"},{"lineNumber":104,"author":{"gitId":"tanjiajiajun"},"content":" String data \u003d new String(buffer, 0, bytesRead);","lastModifiedDate":"2024-02-02"},{"lineNumber":105,"author":{"gitId":"tanjiajiajun"},"content":" String[] tasks \u003d data.split(\"\\n\");","lastModifiedDate":"2024-02-02"},{"lineNumber":106,"author":{"gitId":"tanjiajiajun"},"content":" for (String task : tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":107,"author":{"gitId":"tanjiajiajun"},"content":" String[] parts \u003d task.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2024-02-02"},{"lineNumber":108,"author":{"gitId":"tanjiajiajun"},"content":" boolean isDone;","lastModifiedDate":"2024-02-02"},{"lineNumber":109,"author":{"gitId":"tanjiajiajun"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":110,"author":{"gitId":"tanjiajiajun"},"content":" isDone \u003d true;","lastModifiedDate":"2024-02-02"},{"lineNumber":111,"author":{"gitId":"tanjiajiajun"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":112,"author":{"gitId":"tanjiajiajun"},"content":" isDone \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":113,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":114,"author":{"gitId":"tanjiajiajun"},"content":" if (parts[0].equals(\"T\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":115,"author":{"gitId":"tanjiajiajun"},"content":" ToDos t \u003d new ToDos(parts[2]);","lastModifiedDate":"2024-02-02"},{"lineNumber":116,"author":{"gitId":"tanjiajiajun"},"content":" if (isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":117,"author":{"gitId":"tanjiajiajun"},"content":" t.markAsDone();","lastModifiedDate":"2024-02-02"},{"lineNumber":118,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":119,"author":{"gitId":"tanjiajiajun"},"content":" s.add(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":120,"author":{"gitId":"tanjiajiajun"},"content":" } else if (parts[0].equals(\"E\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":121,"author":{"gitId":"tanjiajiajun"},"content":" Events e \u003d new Events(parts[2], parts[3], parts[4]);","lastModifiedDate":"2024-02-02"},{"lineNumber":122,"author":{"gitId":"tanjiajiajun"},"content":" if (isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":123,"author":{"gitId":"tanjiajiajun"},"content":" e.markAsDone();","lastModifiedDate":"2024-02-02"},{"lineNumber":124,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":125,"author":{"gitId":"tanjiajiajun"},"content":" s.add(e);","lastModifiedDate":"2024-02-02"},{"lineNumber":126,"author":{"gitId":"tanjiajiajun"},"content":" } else if (parts[0].equals(\"D\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":127,"author":{"gitId":"tanjiajiajun"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"M/d/yyyy HHmm\");","lastModifiedDate":"2024-02-02"},{"lineNumber":128,"author":{"gitId":"tanjiajiajun"},"content":" LocalDateTime localDateTime \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-02-02"},{"lineNumber":129,"author":{"gitId":"tanjiajiajun"},"content":" Deadlines d \u003d new Deadlines(parts[2], localDateTime);","lastModifiedDate":"2024-02-02"},{"lineNumber":130,"author":{"gitId":"tanjiajiajun"},"content":" if (isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":131,"author":{"gitId":"tanjiajiajun"},"content":" d.markAsDone();","lastModifiedDate":"2024-02-02"},{"lineNumber":132,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":133,"author":{"gitId":"tanjiajiajun"},"content":" s.add(d);","lastModifiedDate":"2024-02-02"},{"lineNumber":134,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":135,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":136,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":137,"author":{"gitId":"tanjiajiajun"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":138,"author":{"gitId":"tanjiajiajun"},"content":" System.out.println(\"Something went wrong!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":139,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":140,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":141,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"tanjiajiajun":141}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":" * The Storage class represents a storage facility for tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"public class Storage {","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" * The list to store tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":" public ArrayList\u003cTask\u003e storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":" * Constructs a new Storage instance with an empty task list.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" public Storage() {","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":" this.storage \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"tanjiajiajun"},"content":" * Adds a task to the storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"tanjiajiajun"},"content":" * @param t The task to be added.","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"tanjiajiajun"},"content":" public void add(Task t) {","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"tanjiajiajun"},"content":" this.storage.add(t);","lastModifiedDate":"2024-01-22"},{"lineNumber":30,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"tanjiajiajun"},"content":" * Retrieves the number of tasks in the storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"tanjiajiajun"},"content":" * @return The number of tasks in the storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"tanjiajiajun"},"content":" public int size() {","lastModifiedDate":"2024-01-22"},{"lineNumber":38,"author":{"gitId":"tanjiajiajun"},"content":" return this.storage.size();","lastModifiedDate":"2024-01-22"},{"lineNumber":39,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"tanjiajiajun"},"content":" * Retrieves a task from the storage at the specified index.","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"tanjiajiajun"},"content":" * @param i The index of the task.","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"tanjiajiajun"},"content":" * @return The task at the specified index.","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"tanjiajiajun"},"content":" public Task get(int i) {","lastModifiedDate":"2024-01-22"},{"lineNumber":48,"author":{"gitId":"tanjiajiajun"},"content":" return this.storage.get(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":49,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"tanjiajiajun"},"content":" * Retrieves the index of a task in the storage based on its description.","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"tanjiajiajun"},"content":" * @param s The description of the task.","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"tanjiajiajun"},"content":" * @return The index of the task in the storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"tanjiajiajun"},"content":" public int indexOf(String s) {","lastModifiedDate":"2024-01-23"},{"lineNumber":58,"author":{"gitId":"tanjiajiajun"},"content":" return this.storage.indexOf(s);","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"tanjiajiajun"},"content":" * Removes and retrieves a task from the storage at the specified index.","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"tanjiajiajun"},"content":" * @param index The index of the task to be removed.","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"tanjiajiajun"},"content":" * @return The removed task.","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"tanjiajiajun"},"content":" * @throws DukeExceptions If there is an issue accessing the storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"tanjiajiajun"},"content":" public Task pop(int index) throws DukeExceptions {","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"tanjiajiajun"},"content":" Task t \u003d this.storage.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":71,"author":{"gitId":"tanjiajiajun"},"content":" this.storage.remove(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"tanjiajiajun"},"content":" return t;","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"tanjiajiajun"},"content":" * Creates a formatted string representing the list of tasks in the storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"tanjiajiajun"},"content":" * @return The formatted string representing the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"tanjiajiajun"},"content":" public String find(String s) throws DukeExceptions {","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"tanjiajiajun"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"tanjiajiajun"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"tanjiajiajun"},"content":" for (int i\u003d0; i\u003cthis.storage.size(); i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"tanjiajiajun"},"content":" if (this.storage.get(i).description.contains(s)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"tanjiajiajun"},"content":" output +\u003d String.format(\"%d. \", i+1);","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"tanjiajiajun"},"content":" output +\u003d this.storage.get(i).toString() + \"\\n\";","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"tanjiajiajun"},"content":" if (output.isEmpty()) throw new DukeExceptions();","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"tanjiajiajun"},"content":" } catch (DukeExceptions d) {","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"tanjiajiajun"},"content":" System.out.println(\"Nothing was found\");","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"tanjiajiajun"},"content":" return output;","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"tanjiajiajun"},"content":" public String printList() {","lastModifiedDate":"2024-01-23"},{"lineNumber":98,"author":{"gitId":"tanjiajiajun"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":99,"author":{"gitId":"tanjiajiajun"},"content":" for (int i\u003d0; i\u003cthis.storage.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":100,"author":{"gitId":"tanjiajiajun"},"content":" output +\u003d String.format(\"%d. \", i+1);","lastModifiedDate":"2024-01-22"},{"lineNumber":101,"author":{"gitId":"tanjiajiajun"},"content":" output +\u003d this.storage.get(i).toString() + \"\\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":102,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":103,"author":{"gitId":"tanjiajiajun"},"content":" return output;","lastModifiedDate":"2024-01-22"},{"lineNumber":104,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":105,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"tanjiajiajun"},"content":" * Creates a formatted string representing the output when a task is added to the storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"tanjiajiajun"},"content":" * @param t The task that was added.","lastModifiedDate":"2024-02-03"},{"lineNumber":110,"author":{"gitId":"tanjiajiajun"},"content":" * @return The formatted string representing the output.","lastModifiedDate":"2024-02-03"},{"lineNumber":111,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":112,"author":{"gitId":"tanjiajiajun"},"content":" public String addToListOutput(Task t) {","lastModifiedDate":"2024-01-23"},{"lineNumber":113,"author":{"gitId":"tanjiajiajun"},"content":" String output \u003d \"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":114,"author":{"gitId":"tanjiajiajun"},"content":" String.format(\" %s\\nNow you have %d tasks in the list.\", t.toString(), this.size());","lastModifiedDate":"2024-01-23"},{"lineNumber":115,"author":{"gitId":"tanjiajiajun"},"content":" return output;","lastModifiedDate":"2024-01-23"},{"lineNumber":116,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":117,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":118,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"tanjiajiajun":120}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"tanjiajiajun"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"tanjiajiajun"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"tanjiajiajun"},"content":" return String.format(\"[\" + this.getStatusIcon() + \"]\" + \" \" + description);","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"tanjiajiajun":29}},{"path":"src/main/java/duke/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"public class ToDos extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":" public ToDos (String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tanjiajiajun":12}},{"path":"src/main/java/duke/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":" * The UI class handles user interface interactions.","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"public class UI {","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":" private final String LINE \u003d \"______________________________________________________\\n\";","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" * Constructs a new UI instance.","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" public UI() {}","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" * Displays a welcome message when the program starts.","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" public void onStart() {","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" System.out.print(LINE);","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" System.out.println(\"Hello! I\u0027m ChatterPal!\");","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":" System.out.print(LINE);","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"tanjiajiajun"},"content":" * Displays a message when a task is added.","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"tanjiajiajun"},"content":" * @param s The task message to be displayed.","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"tanjiajiajun"},"content":" public void onTaskAddition(String s) {","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"tanjiajiajun"},"content":" System.out.println(LINE + s + \"\\n\" + LINE);","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"tanjiajiajun"},"content":" * Displays a message when a task is deleted.","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"tanjiajiajun"},"content":" * @param s The deleted task message.","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"tanjiajiajun"},"content":" * @param integer The number of tasks remaining.","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"tanjiajiajun"},"content":" public void onTaskDeletion(String s, int integer) {","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"tanjiajiajun"},"content":" String message \u003d String.format(\"%sNoted. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"tanjiajiajun"},"content":" \"%s\\nNow you have %d tasks left.\\n%s\", LINE, s, integer, LINE);","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"tanjiajiajun"},"content":" System.out.println(message);","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"tanjiajiajun"},"content":" * Displays a list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"tanjiajiajun"},"content":" * @param s The list of tasks to be displayed.","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"tanjiajiajun"},"content":" public void onPrintList(String s) {","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"tanjiajiajun"},"content":" System.out.println(LINE + s + LINE);","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"tanjiajiajun"},"content":" * Prints the tasks matching a search query, surrounded by a separator line.","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"tanjiajiajun"},"content":" * @param s The string representing the matching tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"tanjiajiajun"},"content":" public void onPrintFind(String s) {","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"tanjiajiajun"},"content":" if (!s.isEmpty()) {","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"tanjiajiajun"},"content":" System.out.println( LINE + \"Here are the matching tasks in your list:\\n\" + s + LINE);","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"tanjiajiajun"},"content":" * Displays a message when a task is marked as completed.","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"tanjiajiajun"},"content":" * @param s The completed task message.","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"tanjiajiajun"},"content":" public void onMark(String s) {","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"tanjiajiajun"},"content":" String output \u003d LINE + \"Great job on completing the task!\\n\" + s + \"\\n\" + LINE;","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"tanjiajiajun"},"content":" System.out.println(output);","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"tanjiajiajun"},"content":" * Displays a message when a task is marked as incomplete.","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"tanjiajiajun"},"content":" * @param s The incomplete task message.","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"tanjiajiajun"},"content":" public void onUnmark(String s) {","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"tanjiajiajun"},"content":" String output \u003d LINE + \"OK, I\u0027ve marked this task as not done yet: \\n\" + s + \"\\n\" + LINE;","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"tanjiajiajun"},"content":" System.out.println(output);","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"tanjiajiajun"},"content":" * Displays a farewell message when the program ends.","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"tanjiajiajun"},"content":" public void onEnd() {","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"tanjiajiajun"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"tanjiajiajun"},"content":" System.out.println(\"Farewell! Can\u0027t wait to catch up with you again. Until next time, \" +","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"tanjiajiajun"},"content":" \"take care and stay awesome! \");","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"tanjiajiajun"},"content":" System.out.println(LINE);","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"tanjiajiajun":95}},{"path":"src/main/java/duke/UnknownInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"public class UnknownInputException extends DukeExceptions {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":" final String msg \u003d \"WHAT DO YOU MEANNNNN\";","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":" public UnknownInputException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":" super();","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" public String output() {","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" return String.format(\"%s%s\\n\", super.output(), this.msg);","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tanjiajiajun":14}},{"path":"src/test/java/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"import duke.ToDos;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"import duke.Storage;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import duke.Deadlines;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"public class StorageTest {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" public void checkStorageAdd() {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" ToDos t \u003d new ToDos(\"Read book\");","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" storage.add(t);","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" String output \u003d storage.addToListOutput(t);","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":" assertEquals(output, \"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" \" [T][ ] Read book\\n\" +","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" \"Now you have 1 tasks in the list.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":" public void checkStorageList() {","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"tanjiajiajun"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"tanjiajiajun"},"content":" storage.add(new ToDos(\"Read book\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"tanjiajiajun"},"content":" String newOutput \u003d storage.printList();","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"tanjiajiajun"},"content":" assertEquals(newOutput, \"1. [T][ ] Read book\\n\");","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"tanjiajiajun":31}},{"path":"src/test/java/TodosTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"import duke.ToDos;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"public class TodosTest {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" public void checkToStringTest(){","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" ToDos t \u003d new ToDos(\"Read book\");","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" assertEquals(t.toString(), \"[T][ ] Read book\");","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" public void checkToDosMark() {","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":" ToDos t \u003d new ToDos(\"Read Book\");","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" t.markAsDone();","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" assertEquals(t.toString(), \"[T][X] Read Book\");","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" t.markAsUndone();","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":" assertEquals(t.toString(), \"[T][ ] Read Book\");","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"tanjiajiajun":22}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"todo borrow book","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"list","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"deadline return book /by 2/12/2019 1800","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"mark 2","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"list","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"unmark 2","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"delete 1","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":"list","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"tanjiajiajun":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":"tanjiajiajun"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-03"},{"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":{"tanjiajiajun":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":"tanjiajiajun"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/duke/*.java","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"tanjiajiajun":1,"-":37}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"# duke.Duke project template","lastModifiedDate":"2024-02-03"},{"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":"tanjiajiajun"},"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-02-03"},{"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":{"tanjiajiajun":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":"tanjiajiajun"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"checkstyle {","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"tanjiajiajun"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"tanjiajiajun"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"tanjiajiajun"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"tanjiajiajun"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"tanjiajiajun"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"tanjiajiajun"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"tanjiajiajun"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"tanjiajiajun"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"tanjiajiajun"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"tanjiajiajun"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"tanjiajiajun"},"content":" mainClass.set(\"duke.DukeTest\")","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"tanjiajiajun":21,"-":41}},{"path":"data/duke.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"T | 1 | borrow book","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"T | 0 | hello dworld","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"tanjiajiajun":2}},{"path":"src/main/java/commands/Commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import duke.*;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"import exceptions.*;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":"import java.util.List;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":"public class Commands {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":" public static String markCommand(String input, Storage storage) throws OutOfIntexException {","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" List\u003cString\u003e inputParts \u003d Arrays.asList(input.split(\" \"));","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" if (Integer.parseInt(inputParts.get(1)) \u003e storage.size()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":" throw new OutOfIntexException();","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" Task t \u003d storage.get(Integer.parseInt(inputParts.get(1)) - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" t.markAsDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":" return t.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":" public static String unmarkCommand (String input, Storage storage) throws OutOfIntexException {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"tanjiajiajun"},"content":" List\u003cString\u003e inputParts \u003d Arrays.asList(input.split(\" \"));","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"tanjiajiajun"},"content":" if (Integer.parseInt(inputParts.get(1)) \u003e storage.size()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"tanjiajiajun"},"content":" throw new OutOfIntexException();","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"tanjiajiajun"},"content":" Task t \u003d storage.get(Integer.parseInt(inputParts.get(1)) - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"tanjiajiajun"},"content":" t.markAsUndone();","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"tanjiajiajun"},"content":" return t.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"tanjiajiajun"},"content":" public static String deleteCommand (String input, Storage storage) throws OutOfIntexException {","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"tanjiajiajun"},"content":" List\u003cString\u003e inputParts \u003d Arrays.asList(input.split(\" \"));","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"tanjiajiajun"},"content":" if (Integer.parseInt(inputParts.get(1)) \u003e storage.size()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"tanjiajiajun"},"content":" throw new OutOfIntexException();","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"tanjiajiajun"},"content":" Task t \u003d storage.pop(Integer.parseInt(inputParts.get(1))-1);","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"tanjiajiajun"},"content":" return t.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"tanjiajiajun"},"content":" public static String findCommand (String input, Storage storage) throws EmptyStringException {","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"tanjiajiajun"},"content":" List\u003cString\u003e inputParts \u003d Arrays.asList(input.split(\" \"));","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"tanjiajiajun"},"content":" String identifier \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"tanjiajiajun"},"content":" for (int j\u003d1; j\u003cinputParts.size(); j++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"tanjiajiajun"},"content":" identifier +\u003d inputParts.get(j) + \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"tanjiajiajun"},"content":" identifier \u003d identifier.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"tanjiajiajun"},"content":" if (identifier.isEmpty()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"tanjiajiajun"},"content":" throw new EmptyStringException();","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"tanjiajiajun"},"content":" String output \u003d storage.find(identifier);","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"tanjiajiajun"},"content":" return output;","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"tanjiajiajun"},"content":" public static ToDos todosCommand (String input, Storage storage) throws EmptyTaskException {","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"tanjiajiajun"},"content":" List\u003cString\u003e inputParts \u003d Arrays.asList(input.split(\" \"));","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"tanjiajiajun"},"content":" String descriptor \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"tanjiajiajun"},"content":" for (int i\u003d1; i\u003cinputParts.size(); i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"tanjiajiajun"},"content":" descriptor +\u003d inputParts.get(i) + \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"tanjiajiajun"},"content":" descriptor \u003d descriptor.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"tanjiajiajun"},"content":" if (descriptor.isEmpty()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"tanjiajiajun"},"content":" throw new EmptyTaskException();","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"tanjiajiajun"},"content":" ToDos t \u003d new ToDos(descriptor);","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"tanjiajiajun"},"content":" storage.add(t);","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"tanjiajiajun"},"content":" return t;","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"tanjiajiajun"},"content":" public static Deadlines deadlinesCommand (String input, Storage storage) throws EmptyTaskException, WrongFormatException {","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"tanjiajiajun"},"content":" List\u003cString\u003e inputParts \u003d Arrays.asList(input.split(\" \"));","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"tanjiajiajun"},"content":" int index \u003d inputParts.indexOf(\"/by\");","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"tanjiajiajun"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"tanjiajiajun"},"content":" throw new WrongFormatException();","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"tanjiajiajun"},"content":" String descriptor \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"tanjiajiajun"},"content":" String deadline \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"tanjiajiajun"},"content":" for (int i\u003d1; i\u003cindex; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"tanjiajiajun"},"content":" descriptor +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"tanjiajiajun"},"content":" for (int i\u003dindex+1; i\u003cinputParts.size(); i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"tanjiajiajun"},"content":" deadline +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"tanjiajiajun"},"content":" deadline \u003d deadline.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"tanjiajiajun"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"M/d/yyyy HHmm\");","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"tanjiajiajun"},"content":" LocalDateTime localDateTime \u003d LocalDateTime.parse(deadline, formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"tanjiajiajun"},"content":" descriptor \u003d descriptor.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"tanjiajiajun"},"content":" if (descriptor.isEmpty()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"tanjiajiajun"},"content":" throw new EmptyTaskException();","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"tanjiajiajun"},"content":" Deadlines d \u003d new Deadlines(descriptor, localDateTime);","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"tanjiajiajun"},"content":" storage.add(d);","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"tanjiajiajun"},"content":" return d;","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"tanjiajiajun"},"content":" public static Events eventsCommand (String input, Storage storage) throws DukeExceptions, WrongFormatException {","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"tanjiajiajun"},"content":" List\u003cString\u003e inputParts \u003d Arrays.asList(input.split(\" \"));","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"tanjiajiajun"},"content":" int index1 \u003d inputParts.indexOf(\"/from\");","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"tanjiajiajun"},"content":" int index2 \u003d inputParts.indexOf(\"/to\");","lastModifiedDate":"2024-02-07"},{"lineNumber":102,"author":{"gitId":"tanjiajiajun"},"content":" if (index1 \u003d\u003d -1 || index2 \u003d\u003d -1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"tanjiajiajun"},"content":" throw new WrongFormatException();","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"tanjiajiajun"},"content":" String descriptor \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":106,"author":{"gitId":"tanjiajiajun"},"content":" String from \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":107,"author":{"gitId":"tanjiajiajun"},"content":" String to \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":108,"author":{"gitId":"tanjiajiajun"},"content":" for (int i\u003dindex1 + 1; i\u003cindex2; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":109,"author":{"gitId":"tanjiajiajun"},"content":" from +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":110,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":111,"author":{"gitId":"tanjiajiajun"},"content":" for (int i\u003dindex2 + 1; i\u003cinputParts.size(); i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":112,"author":{"gitId":"tanjiajiajun"},"content":" to +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":113,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":114,"author":{"gitId":"tanjiajiajun"},"content":" for (int i\u003d1; i\u003cindex1; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":115,"author":{"gitId":"tanjiajiajun"},"content":" descriptor +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":116,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":117,"author":{"gitId":"tanjiajiajun"},"content":" descriptor \u003d descriptor.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":118,"author":{"gitId":"tanjiajiajun"},"content":" if (descriptor.isEmpty()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":119,"author":{"gitId":"tanjiajiajun"},"content":" throw new EmptyTaskException();","lastModifiedDate":"2024-02-07"},{"lineNumber":120,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":121,"author":{"gitId":"tanjiajiajun"},"content":" from \u003d from.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":122,"author":{"gitId":"tanjiajiajun"},"content":" to \u003d to.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":123,"author":{"gitId":"tanjiajiajun"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"M/d/yyyy HHmm\");","lastModifiedDate":"2024-02-07"},{"lineNumber":124,"author":{"gitId":"tanjiajiajun"},"content":" LocalDateTime localDateTimeFrom \u003d LocalDateTime.parse(from, formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":125,"author":{"gitId":"tanjiajiajun"},"content":" LocalDateTime localDateTimeTo \u003d LocalDateTime.parse(to, formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":126,"author":{"gitId":"tanjiajiajun"},"content":" Events e \u003d new Events(descriptor, localDateTimeFrom, localDateTimeTo);","lastModifiedDate":"2024-02-07"},{"lineNumber":127,"author":{"gitId":"tanjiajiajun"},"content":" storage.add(e);","lastModifiedDate":"2024-02-07"},{"lineNumber":128,"author":{"gitId":"tanjiajiajun"},"content":" return e;","lastModifiedDate":"2024-02-07"},{"lineNumber":129,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":130,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":131,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":132,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"tanjiajiajun":132}},{"path":"src/main/java/commands/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package commands;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"public class DeadlineCommand {","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"tanjiajiajun":4}},{"path":"src/main/java/commands/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package commands;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"public class EventCommand {","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"tanjiajiajun":4}},{"path":"src/main/java/duke/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":" public LocalDateTime deadline;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" public Deadlines(String description, LocalDateTime deadline) {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":" DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" String formattedDate \u003d deadline.format(outputFormatter);","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" return String.format(\"[D]%s (by: %s)\", super.toString(), formattedDate);","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tanjiajiajun":20}},{"path":"src/main/java/duke/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"tanjiajiajun"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"tanjiajiajun"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"tanjiajiajun"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"tanjiajiajun"},"content":" * containing text from the speaker.","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"tanjiajiajun"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"tanjiajiajun"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"tanjiajiajun"},"content":" private Label dialog;","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"tanjiajiajun"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"tanjiajiajun"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"tanjiajiajun"},"content":" private DialogBox(String text, Image img) {","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"tanjiajiajun"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"tanjiajiajun"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"tanjiajiajun"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"tanjiajiajun"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"tanjiajiajun"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"tanjiajiajun"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"tanjiajiajun"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"tanjiajiajun"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"tanjiajiajun"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"tanjiajiajun"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"tanjiajiajun"},"content":" private void flip() {","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"tanjiajiajun"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"tanjiajiajun"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"tanjiajiajun"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"tanjiajiajun"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"tanjiajiajun"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"tanjiajiajun"},"content":" return new DialogBox(text, img);","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"tanjiajiajun"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"tanjiajiajun"},"content":" var db \u003d new DialogBox(text, img);","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"tanjiajiajun"},"content":" db.flip();","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"tanjiajiajun"},"content":" return db;","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"tanjiajiajun":69}},{"path":"src/main/java/duke/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"public class Events extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":" public LocalDateTime from;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":" public LocalDateTime to;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" public Events(String description, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" DateTimeFormatter outputFormatter \u003d DateTimeFormatter.ofPattern(\"MMM dd yyyy\");","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" String formattedFrom \u003d from.format(outputFormatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":" String formattedTo \u003d to.format(outputFormatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":" return String.format(\"[E]%s (from: %s to: %s)\", super.toString(), formattedFrom, formattedTo);","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tanjiajiajun":23}},{"path":"src/main/java/duke/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":" * A launcher class to workaround classpath issues.","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"public class Launcher {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"tanjiajiajun":12}},{"path":"src/main/java/duke/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":" private NewDuke duke \u003d new NewDuke();","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"tanjiajiajun"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"tanjiajiajun"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"tanjiajiajun"},"content":" stage.show();","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"tanjiajiajun"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"tanjiajiajun"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"tanjiajiajun":31}},{"path":"src/main/java/duke/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":" private NewDuke duke;","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"tanjiajiajun"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaUser.png\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"tanjiajiajun"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaDuke.png\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"tanjiajiajun"},"content":" private final UI ui \u003d new UI();","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"tanjiajiajun"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"tanjiajiajun"},"content":" public void initialize() {","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"tanjiajiajun"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"tanjiajiajun"},"content":" dialogContainer.getChildren().add(DialogBox.getDukeDialog(ui.onStart(), dukeImage));","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"tanjiajiajun"},"content":" public void setDuke(NewDuke d) {","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"tanjiajiajun"},"content":" duke \u003d d;","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"tanjiajiajun"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"tanjiajiajun"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"tanjiajiajun"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"tanjiajiajun"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"tanjiajiajun"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"tanjiajiajun"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"tanjiajiajun"},"content":" System.out.println(response);","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"tanjiajiajun"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"tanjiajiajun"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"tanjiajiajun"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"tanjiajiajun"},"content":" );","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"tanjiajiajun"},"content":" userInput.clear();","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"tanjiajiajun":54}},{"path":"src/main/java/duke/NewDuke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import commands.Commands;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"import exceptions.DukeExceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":"public class NewDuke {","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" private Storage storage;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":" private UI ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" private Save saver;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" private Parser parser;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" public NewDuke(String filePath) {","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" ScrollPane scrollPane \u003d new ScrollPane();","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" VBox dialogContainer \u003d new VBox();","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":" scrollPane.setContent(dialogContainer);","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":" TextField userInput \u003d new TextField();","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":" Button sendButton \u003d new Button(\"Send\");","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"tanjiajiajun"},"content":" AnchorPane mainLayout \u003d new AnchorPane();","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"tanjiajiajun"},"content":" mainLayout.getChildren().addAll(scrollPane, userInput, sendButton);","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"tanjiajiajun"},"content":" ui \u003d new UI();","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"tanjiajiajun"},"content":" storage \u003d new Storage();","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"tanjiajiajun"},"content":" saver \u003d new Save(filePath);","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"tanjiajiajun"},"content":" parser \u003d new Parser(storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"tanjiajiajun"},"content":" saver.loadData(storage);","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"tanjiajiajun"},"content":" public NewDuke() {","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"tanjiajiajun"},"content":" this(\"data/duke.txt\");","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"tanjiajiajun"},"content":"// public void run() {","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"tanjiajiajun"},"content":"// ui.onStart();","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"tanjiajiajun"},"content":"// parser.run();","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"tanjiajiajun"},"content":"// ui.onEnd();","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"tanjiajiajun"},"content":"// saver.saveData(storage);","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"tanjiajiajun"},"content":"//","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"tanjiajiajun"},"content":"// public static void main(String[] args) {","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"tanjiajiajun"},"content":"// new NewDuke(\"data/duke.txt\").run();","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"tanjiajiajun"},"content":" public String getResponse(String input) {","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"tanjiajiajun"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"tanjiajiajun"},"content":" return ui.onEnd();","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"tanjiajiajun"},"content":" String action \u003d parser.parseAction(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"tanjiajiajun"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"tanjiajiajun"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"tanjiajiajun"},"content":" Task t;","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"tanjiajiajun"},"content":" switch (action) {","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"tanjiajiajun"},"content":" case \"list\":","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"tanjiajiajun"},"content":" return ui.onPrintList(\"Here are your outstanding tasks!\\n\" + storage.printList());","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"tanjiajiajun"},"content":" case \"mark\":","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"tanjiajiajun"},"content":" output \u003d Commands.markCommand(input, storage);","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"tanjiajiajun"},"content":" return ui.onMark(output);","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"tanjiajiajun"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"tanjiajiajun"},"content":" output \u003d Commands.unmarkCommand(input, storage);","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"tanjiajiajun"},"content":" return ui.onUnmark(output);","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"tanjiajiajun"},"content":" case \"find\":","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"tanjiajiajun"},"content":" output \u003d Commands.findCommand(input, storage);","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"tanjiajiajun"},"content":" return ui.onPrintFind(output);","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"tanjiajiajun"},"content":" case \"delete\":","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"tanjiajiajun"},"content":" output \u003d Commands.deleteCommand(input, storage);","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"tanjiajiajun"},"content":" return ui.onTaskDeletion(output, storage.size());","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"tanjiajiajun"},"content":" case \"todo\":","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"tanjiajiajun"},"content":" t \u003d Commands.todosCommand(input, storage);","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"tanjiajiajun"},"content":" return ui.onTaskAddition(storage.addToListOutput(t));","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"tanjiajiajun"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"tanjiajiajun"},"content":" t \u003d Commands.deadlinesCommand(input, storage);","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"tanjiajiajun"},"content":" return ui.onTaskAddition(storage.addToListOutput(t));","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"tanjiajiajun"},"content":" case \"event\":","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"tanjiajiajun"},"content":" t \u003d Commands.eventsCommand(input, storage);","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"tanjiajiajun"},"content":" return ui.onTaskAddition(storage.addToListOutput(t));","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"tanjiajiajun"},"content":" default:","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"tanjiajiajun"},"content":" return \"WHAT DO YOU MEANNN????\";","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"tanjiajiajun"},"content":" } catch (DukeExceptions e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"tanjiajiajun"},"content":" return (e.output());","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"tanjiajiajun":90}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"import java.util.List;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" * The Parser class handles parsing user input and executing corresponding actions.","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":"public class Parser {","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":" private Scanner sc;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" public UI ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" public Storage storage;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" * Constructs a new Parser instance.","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":" * @param store The storage object to interact with task storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":" public Parser(Storage store) {","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":" sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"tanjiajiajun"},"content":" ui \u003d new UI();","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"tanjiajiajun"},"content":" storage \u003d store;","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"tanjiajiajun"},"content":" public String parseAction(String input) {","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"tanjiajiajun"},"content":" String action \u003d input.split(\" \")[0];","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"tanjiajiajun"},"content":" return action;","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"tanjiajiajun"},"content":"// public String parse(String input) {","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"tanjiajiajun"},"content":"// try {","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"tanjiajiajun"},"content":"// List\u003cString\u003e inputParts \u003d Arrays.asList(input.split(\" \"));","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"tanjiajiajun"},"content":"// if (inputParts.get(0).equals(\"deadline\") || inputParts.get(0).equals(\"todo\") ||","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"tanjiajiajun"},"content":"// inputParts.get(0).equals(\"event\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"tanjiajiajun"},"content":"// if (inputParts.size() \u003d\u003d 1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"tanjiajiajun"},"content":"// throw new EmptyTaskException();","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"tanjiajiajun"},"content":"// } else if (inputParts.get(0).equals(\"deadline\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"tanjiajiajun"},"content":"// int index \u003d inputParts.indexOf(\"/by\");","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"tanjiajiajun"},"content":"// String descriptor \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"tanjiajiajun"},"content":"// String deadline \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"tanjiajiajun"},"content":"// for (int i\u003d1; i\u003cindex; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"tanjiajiajun"},"content":"// descriptor +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"tanjiajiajun"},"content":"// for (int i\u003dindex+1; i\u003cinputParts.size(); i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"tanjiajiajun"},"content":"// deadline +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"tanjiajiajun"},"content":"// deadline \u003d deadline.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"tanjiajiajun"},"content":"// DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"M/d/yyyy HHmm\");","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"tanjiajiajun"},"content":"// LocalDateTime localDateTime \u003d LocalDateTime.parse(deadline, formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"tanjiajiajun"},"content":"//","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"tanjiajiajun"},"content":"// descriptor \u003d descriptor.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"tanjiajiajun"},"content":"// if (descriptor.isEmpty()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"tanjiajiajun"},"content":"// throw new EmptyTaskException();","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"tanjiajiajun"},"content":"// Deadlines d \u003d new Deadlines(descriptor, localDateTime);","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"tanjiajiajun"},"content":"// storage.add(d);","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"tanjiajiajun"},"content":"// ui.onTaskAddition(storage.addToListOutput(d));","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"tanjiajiajun"},"content":"// } else if (inputParts.get(0).equals(\"event\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"tanjiajiajun"},"content":"// int index1 \u003d inputParts.indexOf(\"/from\");","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"tanjiajiajun"},"content":"// int index2 \u003d inputParts.indexOf(\"/to\");","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"tanjiajiajun"},"content":"// String descriptor \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"tanjiajiajun"},"content":"// String from \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"tanjiajiajun"},"content":"// String to \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"tanjiajiajun"},"content":"// for (int i\u003dindex1 + 1; i\u003cindex2; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"tanjiajiajun"},"content":"// from +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"tanjiajiajun"},"content":"// for (int i\u003dindex2 + 1; i\u003cinputParts.size(); i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"tanjiajiajun"},"content":"// to +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"tanjiajiajun"},"content":"// for (int i\u003d1; i\u003cindex1; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"tanjiajiajun"},"content":"// descriptor +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"tanjiajiajun"},"content":"// descriptor \u003d descriptor.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"tanjiajiajun"},"content":"// if (descriptor.isEmpty()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"tanjiajiajun"},"content":"// throw new EmptyTaskException();","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"tanjiajiajun"},"content":"// from \u003d from.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"tanjiajiajun"},"content":"// to \u003d to.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"tanjiajiajun"},"content":"// Events e \u003d new Events(descriptor, from, to);","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"tanjiajiajun"},"content":"// storage.add(e);","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"tanjiajiajun"},"content":"// ui.onTaskAddition(storage.addToListOutput(e));","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"tanjiajiajun"},"content":"// } else if (inputParts.get(0).equals(\"todo\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"tanjiajiajun"},"content":"// String descriptor \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"tanjiajiajun"},"content":"// for (int i\u003d1; i\u003cinputParts.size(); i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"tanjiajiajun"},"content":"// descriptor +\u003d inputParts.get(i) + \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"tanjiajiajun"},"content":"// descriptor \u003d descriptor.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"tanjiajiajun"},"content":"// if (descriptor.isEmpty()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"tanjiajiajun"},"content":"// throw new EmptyTaskException();","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"tanjiajiajun"},"content":"// return descriptor;","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"tanjiajiajun"},"content":"//// ToDos t \u003d new ToDos(descriptor);","lastModifiedDate":"2024-02-07"},{"lineNumber":97,"author":{"gitId":"tanjiajiajun"},"content":"//// storage.add(t);","lastModifiedDate":"2024-02-07"},{"lineNumber":98,"author":{"gitId":"tanjiajiajun"},"content":"//// ui.onTaskAddition(storage.addToListOutput(t));","lastModifiedDate":"2024-02-07"},{"lineNumber":99,"author":{"gitId":"tanjiajiajun"},"content":"//","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":101,"author":{"gitId":"tanjiajiajun"},"content":"//","lastModifiedDate":"2024-02-07"},{"lineNumber":102,"author":{"gitId":"tanjiajiajun"},"content":"// } else if (inputParts.get(0).equals(\"mark\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":103,"author":{"gitId":"tanjiajiajun"},"content":"// Task t \u003d storage.get(Integer.parseInt(inputParts.get(1)) - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":104,"author":{"gitId":"tanjiajiajun"},"content":"// t.markAsDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":105,"author":{"gitId":"tanjiajiajun"},"content":"// ui.onMark(t.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":106,"author":{"gitId":"tanjiajiajun"},"content":"// } else if (inputParts.get(0).equals(\"unmark\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":107,"author":{"gitId":"tanjiajiajun"},"content":"// Task t \u003d storage.get(Integer.parseInt(inputParts.get(1)) - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":108,"author":{"gitId":"tanjiajiajun"},"content":"// t.markAsUndone();","lastModifiedDate":"2024-02-07"},{"lineNumber":109,"author":{"gitId":"tanjiajiajun"},"content":"// ui.onUnmark(t.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":110,"author":{"gitId":"tanjiajiajun"},"content":"// } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":111,"author":{"gitId":"tanjiajiajun"},"content":"// ui.onPrintList(storage.printList());","lastModifiedDate":"2024-02-07"},{"lineNumber":112,"author":{"gitId":"tanjiajiajun"},"content":"// } else if (inputParts.get(0).equals(\"delete\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":113,"author":{"gitId":"tanjiajiajun"},"content":"// int index \u003d Integer.parseInt(inputParts.get(1));","lastModifiedDate":"2024-02-07"},{"lineNumber":114,"author":{"gitId":"tanjiajiajun"},"content":"// Task t \u003d storage.pop(index-1);","lastModifiedDate":"2024-02-07"},{"lineNumber":115,"author":{"gitId":"tanjiajiajun"},"content":"// ui.onTaskDeletion(t.toString(), storage.size());","lastModifiedDate":"2024-02-07"},{"lineNumber":116,"author":{"gitId":"tanjiajiajun"},"content":"// } else if (inputParts.get(0).equals(\"find\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":117,"author":{"gitId":"tanjiajiajun"},"content":"// String identifier \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":118,"author":{"gitId":"tanjiajiajun"},"content":"// for (int j\u003d1; j\u003cinputParts.size(); j++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":119,"author":{"gitId":"tanjiajiajun"},"content":"// identifier +\u003d inputParts.get(j) + \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":120,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":121,"author":{"gitId":"tanjiajiajun"},"content":"// identifier \u003d identifier.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":122,"author":{"gitId":"tanjiajiajun"},"content":"// String output \u003d storage.find(identifier);","lastModifiedDate":"2024-02-07"},{"lineNumber":123,"author":{"gitId":"tanjiajiajun"},"content":"// ui.onPrintFind(output);","lastModifiedDate":"2024-02-07"},{"lineNumber":124,"author":{"gitId":"tanjiajiajun"},"content":"// } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":125,"author":{"gitId":"tanjiajiajun"},"content":"// throw new UnknownInputException();","lastModifiedDate":"2024-02-07"},{"lineNumber":126,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":127,"author":{"gitId":"tanjiajiajun"},"content":"// } catch (DukeExceptions d){","lastModifiedDate":"2024-02-07"},{"lineNumber":128,"author":{"gitId":"tanjiajiajun"},"content":"//","lastModifiedDate":"2024-02-07"},{"lineNumber":129,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":130,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":131,"author":{"gitId":"tanjiajiajun"},"content":"// public void run() {","lastModifiedDate":"2024-02-07"},{"lineNumber":132,"author":{"gitId":"tanjiajiajun"},"content":"// boolean isStopRunning \u003d false;","lastModifiedDate":"2024-02-07"},{"lineNumber":133,"author":{"gitId":"tanjiajiajun"},"content":"// while (!isStopRunning) {","lastModifiedDate":"2024-02-07"},{"lineNumber":134,"author":{"gitId":"tanjiajiajun"},"content":"// try {","lastModifiedDate":"2024-02-07"},{"lineNumber":135,"author":{"gitId":"tanjiajiajun"},"content":"// String input \u003d sc.nextLine();","lastModifiedDate":"2024-02-07"},{"lineNumber":136,"author":{"gitId":"tanjiajiajun"},"content":"// if (input.equals(\"bye\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":137,"author":{"gitId":"tanjiajiajun"},"content":"// isStopRunning \u003d true;","lastModifiedDate":"2024-02-07"},{"lineNumber":138,"author":{"gitId":"tanjiajiajun"},"content":"// break;","lastModifiedDate":"2024-02-07"},{"lineNumber":139,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":140,"author":{"gitId":"tanjiajiajun"},"content":"// List\u003cString\u003e inputParts \u003d Arrays.asList(input.split(\" \"));","lastModifiedDate":"2024-02-07"},{"lineNumber":141,"author":{"gitId":"tanjiajiajun"},"content":"//","lastModifiedDate":"2024-02-07"},{"lineNumber":142,"author":{"gitId":"tanjiajiajun"},"content":"// if (inputParts.get(0).equals(\"deadline\") || inputParts.get(0).equals(\"todo\") ||","lastModifiedDate":"2024-02-07"},{"lineNumber":143,"author":{"gitId":"tanjiajiajun"},"content":"// inputParts.get(0).equals(\"event\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":144,"author":{"gitId":"tanjiajiajun"},"content":"// if (inputParts.size() \u003d\u003d 1) {","lastModifiedDate":"2024-02-07"},{"lineNumber":145,"author":{"gitId":"tanjiajiajun"},"content":"// throw new EmptyTaskException();","lastModifiedDate":"2024-02-07"},{"lineNumber":146,"author":{"gitId":"tanjiajiajun"},"content":"// } else if (inputParts.get(0).equals(\"deadline\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":147,"author":{"gitId":"tanjiajiajun"},"content":"// int index \u003d inputParts.indexOf(\"/by\");","lastModifiedDate":"2024-02-07"},{"lineNumber":148,"author":{"gitId":"tanjiajiajun"},"content":"// String descriptor \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":149,"author":{"gitId":"tanjiajiajun"},"content":"// String deadline \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":150,"author":{"gitId":"tanjiajiajun"},"content":"// for (int i\u003d1; i\u003cindex; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":151,"author":{"gitId":"tanjiajiajun"},"content":"// descriptor +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":152,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":153,"author":{"gitId":"tanjiajiajun"},"content":"// for (int i\u003dindex+1; i\u003cinputParts.size(); i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":154,"author":{"gitId":"tanjiajiajun"},"content":"// deadline +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":155,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":156,"author":{"gitId":"tanjiajiajun"},"content":"// deadline \u003d deadline.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":157,"author":{"gitId":"tanjiajiajun"},"content":"// DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"M/d/yyyy HHmm\");","lastModifiedDate":"2024-02-07"},{"lineNumber":158,"author":{"gitId":"tanjiajiajun"},"content":"// LocalDateTime localDateTime \u003d LocalDateTime.parse(deadline, formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":159,"author":{"gitId":"tanjiajiajun"},"content":"//","lastModifiedDate":"2024-02-07"},{"lineNumber":160,"author":{"gitId":"tanjiajiajun"},"content":"// descriptor \u003d descriptor.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":161,"author":{"gitId":"tanjiajiajun"},"content":"// if (descriptor.isEmpty()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":162,"author":{"gitId":"tanjiajiajun"},"content":"// throw new EmptyTaskException();","lastModifiedDate":"2024-02-07"},{"lineNumber":163,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":164,"author":{"gitId":"tanjiajiajun"},"content":"// Deadlines d \u003d new Deadlines(descriptor, localDateTime);","lastModifiedDate":"2024-02-07"},{"lineNumber":165,"author":{"gitId":"tanjiajiajun"},"content":"// storage.add(d);","lastModifiedDate":"2024-02-07"},{"lineNumber":166,"author":{"gitId":"tanjiajiajun"},"content":"// ui.onTaskAddition(storage.addToListOutput(d));","lastModifiedDate":"2024-02-07"},{"lineNumber":167,"author":{"gitId":"tanjiajiajun"},"content":"// } else if (inputParts.get(0).equals(\"event\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":168,"author":{"gitId":"tanjiajiajun"},"content":"// int index1 \u003d inputParts.indexOf(\"/from\");","lastModifiedDate":"2024-02-07"},{"lineNumber":169,"author":{"gitId":"tanjiajiajun"},"content":"// int index2 \u003d inputParts.indexOf(\"/to\");","lastModifiedDate":"2024-02-07"},{"lineNumber":170,"author":{"gitId":"tanjiajiajun"},"content":"// String descriptor \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":171,"author":{"gitId":"tanjiajiajun"},"content":"// String from \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":172,"author":{"gitId":"tanjiajiajun"},"content":"// String to \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":173,"author":{"gitId":"tanjiajiajun"},"content":"// for (int i\u003dindex1 + 1; i\u003cindex2; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":174,"author":{"gitId":"tanjiajiajun"},"content":"// from +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":175,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":176,"author":{"gitId":"tanjiajiajun"},"content":"// for (int i\u003dindex2 + 1; i\u003cinputParts.size(); i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":177,"author":{"gitId":"tanjiajiajun"},"content":"// to +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":178,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":179,"author":{"gitId":"tanjiajiajun"},"content":"// for (int i\u003d1; i\u003cindex1; i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":180,"author":{"gitId":"tanjiajiajun"},"content":"// descriptor +\u003d inputParts.get(i)+ \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":181,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":182,"author":{"gitId":"tanjiajiajun"},"content":"// descriptor \u003d descriptor.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":183,"author":{"gitId":"tanjiajiajun"},"content":"// if (descriptor.isEmpty()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":184,"author":{"gitId":"tanjiajiajun"},"content":"// throw new EmptyTaskException();","lastModifiedDate":"2024-02-07"},{"lineNumber":185,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":186,"author":{"gitId":"tanjiajiajun"},"content":"// from \u003d from.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":187,"author":{"gitId":"tanjiajiajun"},"content":"// to \u003d to.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":188,"author":{"gitId":"tanjiajiajun"},"content":"// Events e \u003d new Events(descriptor, from, to);","lastModifiedDate":"2024-02-07"},{"lineNumber":189,"author":{"gitId":"tanjiajiajun"},"content":"// storage.add(e);","lastModifiedDate":"2024-02-07"},{"lineNumber":190,"author":{"gitId":"tanjiajiajun"},"content":"// ui.onTaskAddition(storage.addToListOutput(e));","lastModifiedDate":"2024-02-07"},{"lineNumber":191,"author":{"gitId":"tanjiajiajun"},"content":"// } else if (inputParts.get(0).equals(\"todo\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":192,"author":{"gitId":"tanjiajiajun"},"content":"// String descriptor \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":193,"author":{"gitId":"tanjiajiajun"},"content":"// for (int i\u003d1; i\u003cinputParts.size(); i++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":194,"author":{"gitId":"tanjiajiajun"},"content":"// descriptor +\u003d inputParts.get(i) + \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":195,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":196,"author":{"gitId":"tanjiajiajun"},"content":"// descriptor \u003d descriptor.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":197,"author":{"gitId":"tanjiajiajun"},"content":"// ToDos t \u003d new ToDos(descriptor);","lastModifiedDate":"2024-02-07"},{"lineNumber":198,"author":{"gitId":"tanjiajiajun"},"content":"// storage.add(t);","lastModifiedDate":"2024-02-07"},{"lineNumber":199,"author":{"gitId":"tanjiajiajun"},"content":"// ui.onTaskAddition(storage.addToListOutput(t));","lastModifiedDate":"2024-02-07"},{"lineNumber":200,"author":{"gitId":"tanjiajiajun"},"content":"// if (descriptor.isEmpty()) {","lastModifiedDate":"2024-02-07"},{"lineNumber":201,"author":{"gitId":"tanjiajiajun"},"content":"// throw new EmptyTaskException();","lastModifiedDate":"2024-02-07"},{"lineNumber":202,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":203,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":204,"author":{"gitId":"tanjiajiajun"},"content":"//","lastModifiedDate":"2024-02-07"},{"lineNumber":205,"author":{"gitId":"tanjiajiajun"},"content":"// } else if (inputParts.get(0).equals(\"mark\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":206,"author":{"gitId":"tanjiajiajun"},"content":"// Task t \u003d storage.get(Integer.parseInt(inputParts.get(1)) - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":207,"author":{"gitId":"tanjiajiajun"},"content":"// t.markAsDone();","lastModifiedDate":"2024-02-07"},{"lineNumber":208,"author":{"gitId":"tanjiajiajun"},"content":"// ui.onMark(t.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":209,"author":{"gitId":"tanjiajiajun"},"content":"// } else if (inputParts.get(0).equals(\"unmark\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":210,"author":{"gitId":"tanjiajiajun"},"content":"// Task t \u003d storage.get(Integer.parseInt(inputParts.get(1)) - 1);","lastModifiedDate":"2024-02-07"},{"lineNumber":211,"author":{"gitId":"tanjiajiajun"},"content":"// t.markAsUndone();","lastModifiedDate":"2024-02-07"},{"lineNumber":212,"author":{"gitId":"tanjiajiajun"},"content":"// ui.onUnmark(t.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":213,"author":{"gitId":"tanjiajiajun"},"content":"// } else if (input.equals(\"list\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":214,"author":{"gitId":"tanjiajiajun"},"content":"// ui.onPrintList(storage.printList());","lastModifiedDate":"2024-02-07"},{"lineNumber":215,"author":{"gitId":"tanjiajiajun"},"content":"// } else if (inputParts.get(0).equals(\"delete\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":216,"author":{"gitId":"tanjiajiajun"},"content":"// int index \u003d Integer.parseInt(inputParts.get(1));","lastModifiedDate":"2024-02-07"},{"lineNumber":217,"author":{"gitId":"tanjiajiajun"},"content":"// Task t \u003d storage.pop(index-1);","lastModifiedDate":"2024-02-07"},{"lineNumber":218,"author":{"gitId":"tanjiajiajun"},"content":"// ui.onTaskDeletion(t.toString(), storage.size());","lastModifiedDate":"2024-02-07"},{"lineNumber":219,"author":{"gitId":"tanjiajiajun"},"content":"// } else if (inputParts.get(0).equals(\"find\")) {","lastModifiedDate":"2024-02-07"},{"lineNumber":220,"author":{"gitId":"tanjiajiajun"},"content":"// String identifier \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":221,"author":{"gitId":"tanjiajiajun"},"content":"// for (int j\u003d1; j\u003cinputParts.size(); j++) {","lastModifiedDate":"2024-02-07"},{"lineNumber":222,"author":{"gitId":"tanjiajiajun"},"content":"// identifier +\u003d inputParts.get(j) + \" \";","lastModifiedDate":"2024-02-07"},{"lineNumber":223,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":224,"author":{"gitId":"tanjiajiajun"},"content":"// identifier \u003d identifier.trim();","lastModifiedDate":"2024-02-07"},{"lineNumber":225,"author":{"gitId":"tanjiajiajun"},"content":"// String output \u003d storage.find(identifier);","lastModifiedDate":"2024-02-07"},{"lineNumber":226,"author":{"gitId":"tanjiajiajun"},"content":"// ui.onPrintFind(output);","lastModifiedDate":"2024-02-07"},{"lineNumber":227,"author":{"gitId":"tanjiajiajun"},"content":"// } else {","lastModifiedDate":"2024-02-07"},{"lineNumber":228,"author":{"gitId":"tanjiajiajun"},"content":"// throw new UnknownInputException();","lastModifiedDate":"2024-02-07"},{"lineNumber":229,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":230,"author":{"gitId":"tanjiajiajun"},"content":"// } catch (DukeExceptions e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":231,"author":{"gitId":"tanjiajiajun"},"content":"// System.out.println(e.output());","lastModifiedDate":"2024-02-07"},{"lineNumber":232,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":233,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":234,"author":{"gitId":"tanjiajiajun"},"content":"// }","lastModifiedDate":"2024-02-07"},{"lineNumber":235,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"tanjiajiajun":235}},{"path":"src/main/java/duke/Save.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import java.io.FileInputStream;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"import java.io.BufferedWriter;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"import java.util.List;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" * The Save class manages the saving and loading of task data to and from a file.","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":"public class Save {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" * The file path for saving and loading data.","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":" public String filePath \u003d \"data/duke.txt\";","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"tanjiajiajun"},"content":" * Constructs a new Save instance with a specified file path.","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"tanjiajiajun"},"content":" * @param f The file path.","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"tanjiajiajun"},"content":" public Save(String f) {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"tanjiajiajun"},"content":" this.filePath \u003d f;","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"tanjiajiajun"},"content":" * Saves the data from the given storage to the specified file path.","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"tanjiajiajun"},"content":" * @param s The storage containing tasks to be saved.","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"tanjiajiajun"},"content":" public void saveData(Storage s) {","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"tanjiajiajun"},"content":" try (BufferedWriter writer \u003d new BufferedWriter(new FileWriter(filePath))) {","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"tanjiajiajun"},"content":" for (int i\u003d0; i\u003cs.size(); i++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"tanjiajiajun"},"content":" Task t \u003d s.get(i);","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"tanjiajiajun"},"content":" String desc \u003d t.description;","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"tanjiajiajun"},"content":" String isDone;","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"tanjiajiajun"},"content":" if (t.isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"tanjiajiajun"},"content":" isDone \u003d \"1\";","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"tanjiajiajun"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"tanjiajiajun"},"content":" isDone \u003d \"0\";","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"tanjiajiajun"},"content":" String taskType \u003d t.toString().split(\"\")[1];","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"tanjiajiajun"},"content":" if (taskType.equals(\"T\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"tanjiajiajun"},"content":" String line \u003d \"T\" + \" | \" + isDone + \" | \" + desc;","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"tanjiajiajun"},"content":" writer.write(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"tanjiajiajun"},"content":" writer.newLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"tanjiajiajun"},"content":" } else if (taskType.equals(\"D\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"tanjiajiajun"},"content":" String str \u003d t.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"tanjiajiajun"},"content":" String insideParenthesis \u003d str.substring(str.indexOf(\"(\")+1, str.indexOf(\")\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"tanjiajiajun"},"content":" String[] subString \u003d insideParenthesis.split(\" \");","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"tanjiajiajun"},"content":" String deadline \u003d \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"tanjiajiajun"},"content":" for (int j\u003d1; j\u003csubString.length; j++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"tanjiajiajun"},"content":" deadline +\u003d subString[j];","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"tanjiajiajun"},"content":" String line \u003d \"D\" + \" | \" + isDone + \" | \" + desc + \" | \" + deadline;","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"tanjiajiajun"},"content":" writer.write(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"tanjiajiajun"},"content":" writer.newLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"tanjiajiajun"},"content":" } else if (taskType.equals(\"E\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"tanjiajiajun"},"content":" String str \u003d t.toString();","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"tanjiajiajun"},"content":" String insideParenthesis \u003d str.substring(str.indexOf(\"(\")+1, str.indexOf(\")\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"tanjiajiajun"},"content":" String[] subString \u003d insideParenthesis.split(\" \");","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"tanjiajiajun"},"content":" List\u003cString\u003e arrayList \u003d new ArrayList\u003c\u003e(Arrays.asList(subString));","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"tanjiajiajun"},"content":" int index1 \u003d arrayList.indexOf(\"to:\");","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"tanjiajiajun"},"content":" String from \u003d \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"tanjiajiajun"},"content":" String to \u003d \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"tanjiajiajun"},"content":" for (int j\u003d1; j\u003cindex1; j++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"tanjiajiajun"},"content":" from +\u003d subString[j];","lastModifiedDate":"2024-02-02"},{"lineNumber":74,"author":{"gitId":"tanjiajiajun"},"content":" from +\u003d \" \";","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":76,"author":{"gitId":"tanjiajiajun"},"content":" from \u003d from.trim();","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"tanjiajiajun"},"content":" for (int j\u003dindex1+1; j\u003csubString.length; j++) {","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"tanjiajiajun"},"content":" to +\u003d subString[j];","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"tanjiajiajun"},"content":" to +\u003d \" \";","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"tanjiajiajun"},"content":" to \u003d to.trim();","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"tanjiajiajun"},"content":" String line \u003d \"E\" + \" | \" + isDone + \" | \" + desc + \" | \" + from + \" | \" + to;","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"tanjiajiajun"},"content":" writer.write(line);","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"tanjiajiajun"},"content":" writer.newLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"tanjiajiajun"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"tanjiajiajun"},"content":" System.out.println(\"Something went wrong with writing file!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":90,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"tanjiajiajun"},"content":" * Loads data from the specified file path into the given storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"tanjiajiajun"},"content":" * @param s The storage where tasks will be loaded.","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"tanjiajiajun"},"content":" public void loadData(Storage s) {","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"tanjiajiajun"},"content":" try(FileInputStream fis \u003d new FileInputStream(filePath)) {","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"tanjiajiajun"},"content":" byte[] buffer \u003d new byte[1024]; // You can adjust the buffer size according to your needs","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"tanjiajiajun"},"content":" int bytesRead;","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"tanjiajiajun"},"content":" while ((bytesRead \u003d fis.read(buffer)) !\u003d -1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"tanjiajiajun"},"content":" // Process the read data","lastModifiedDate":"2024-02-02"},{"lineNumber":104,"author":{"gitId":"tanjiajiajun"},"content":" String data \u003d new String(buffer, 0, bytesRead);","lastModifiedDate":"2024-02-02"},{"lineNumber":105,"author":{"gitId":"tanjiajiajun"},"content":" String[] tasks \u003d data.split(\"\\n\");","lastModifiedDate":"2024-02-02"},{"lineNumber":106,"author":{"gitId":"tanjiajiajun"},"content":" for (String task : tasks) {","lastModifiedDate":"2024-02-02"},{"lineNumber":107,"author":{"gitId":"tanjiajiajun"},"content":" String[] parts \u003d task.split(\"\\\\s*\\\\|\\\\s*\");","lastModifiedDate":"2024-02-02"},{"lineNumber":108,"author":{"gitId":"tanjiajiajun"},"content":" boolean isDone;","lastModifiedDate":"2024-02-02"},{"lineNumber":109,"author":{"gitId":"tanjiajiajun"},"content":" if (parts[1].equals(\"1\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":110,"author":{"gitId":"tanjiajiajun"},"content":" isDone \u003d true;","lastModifiedDate":"2024-02-02"},{"lineNumber":111,"author":{"gitId":"tanjiajiajun"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":112,"author":{"gitId":"tanjiajiajun"},"content":" isDone \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":113,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":114,"author":{"gitId":"tanjiajiajun"},"content":" if (parts[0].equals(\"T\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":115,"author":{"gitId":"tanjiajiajun"},"content":" ToDos t \u003d new ToDos(parts[2]);","lastModifiedDate":"2024-02-02"},{"lineNumber":116,"author":{"gitId":"tanjiajiajun"},"content":" if (isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":117,"author":{"gitId":"tanjiajiajun"},"content":" t.markAsDone();","lastModifiedDate":"2024-02-02"},{"lineNumber":118,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":119,"author":{"gitId":"tanjiajiajun"},"content":" s.add(t);","lastModifiedDate":"2024-02-02"},{"lineNumber":120,"author":{"gitId":"tanjiajiajun"},"content":" } else if (parts[0].equals(\"E\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":121,"author":{"gitId":"tanjiajiajun"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"M/d/yyyy HHmm\");","lastModifiedDate":"2024-02-07"},{"lineNumber":122,"author":{"gitId":"tanjiajiajun"},"content":" LocalDateTime localDateTimeFrom \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":123,"author":{"gitId":"tanjiajiajun"},"content":" LocalDateTime localDateTimeTo \u003d LocalDateTime.parse(parts[4], formatter);","lastModifiedDate":"2024-02-07"},{"lineNumber":124,"author":{"gitId":"tanjiajiajun"},"content":" Events e \u003d new Events(parts[2], localDateTimeFrom, localDateTimeTo);","lastModifiedDate":"2024-02-07"},{"lineNumber":125,"author":{"gitId":"tanjiajiajun"},"content":" if (isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":126,"author":{"gitId":"tanjiajiajun"},"content":" e.markAsDone();","lastModifiedDate":"2024-02-02"},{"lineNumber":127,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":128,"author":{"gitId":"tanjiajiajun"},"content":" s.add(e);","lastModifiedDate":"2024-02-02"},{"lineNumber":129,"author":{"gitId":"tanjiajiajun"},"content":" } else if (parts[0].equals(\"D\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":130,"author":{"gitId":"tanjiajiajun"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"M/d/yyyy HHmm\");","lastModifiedDate":"2024-02-02"},{"lineNumber":131,"author":{"gitId":"tanjiajiajun"},"content":" LocalDateTime localDateTime \u003d LocalDateTime.parse(parts[3], formatter);","lastModifiedDate":"2024-02-02"},{"lineNumber":132,"author":{"gitId":"tanjiajiajun"},"content":" Deadlines d \u003d new Deadlines(parts[2], localDateTime);","lastModifiedDate":"2024-02-02"},{"lineNumber":133,"author":{"gitId":"tanjiajiajun"},"content":" if (isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":134,"author":{"gitId":"tanjiajiajun"},"content":" d.markAsDone();","lastModifiedDate":"2024-02-02"},{"lineNumber":135,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":136,"author":{"gitId":"tanjiajiajun"},"content":" s.add(d);","lastModifiedDate":"2024-02-02"},{"lineNumber":137,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":138,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":139,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":140,"author":{"gitId":"tanjiajiajun"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":141,"author":{"gitId":"tanjiajiajun"},"content":" System.out.println(\"Something went wrong!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":142,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":143,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":144,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"tanjiajiajun":144}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import exceptions.DukeExceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":" * The Storage class represents a storage facility for tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":"public class Storage {","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":" * The list to store tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" public ArrayList\u003cTask\u003e storage;","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" * Constructs a new Storage instance with an empty task list.","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":" public Storage() {","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":" this.storage \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"tanjiajiajun"},"content":" * Adds a task to the storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"tanjiajiajun"},"content":" * @param t The task to be added.","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"tanjiajiajun"},"content":" public void add(Task t) {","lastModifiedDate":"2024-01-22"},{"lineNumber":31,"author":{"gitId":"tanjiajiajun"},"content":" this.storage.add(t);","lastModifiedDate":"2024-01-22"},{"lineNumber":32,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":33,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"tanjiajiajun"},"content":" * Retrieves the number of tasks in the storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"tanjiajiajun"},"content":" * @return The number of tasks in the storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"tanjiajiajun"},"content":" public int size() {","lastModifiedDate":"2024-01-22"},{"lineNumber":40,"author":{"gitId":"tanjiajiajun"},"content":" return this.storage.size();","lastModifiedDate":"2024-01-22"},{"lineNumber":41,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":42,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"tanjiajiajun"},"content":" * Retrieves a task from the storage at the specified index.","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"tanjiajiajun"},"content":" * @param i The index of the task.","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"tanjiajiajun"},"content":" * @return The task at the specified index.","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"tanjiajiajun"},"content":" public Task get(int i) {","lastModifiedDate":"2024-01-22"},{"lineNumber":50,"author":{"gitId":"tanjiajiajun"},"content":" return this.storage.get(i);","lastModifiedDate":"2024-01-22"},{"lineNumber":51,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":52,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"tanjiajiajun"},"content":" * Retrieves the index of a task in the storage based on its description.","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"tanjiajiajun"},"content":" * @param s The description of the task.","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"tanjiajiajun"},"content":" * @return The index of the task in the storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"tanjiajiajun"},"content":" public int indexOf(String s) {","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"tanjiajiajun"},"content":" return this.storage.indexOf(s);","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":62,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":63,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"tanjiajiajun"},"content":" * Removes and retrieves a task from the storage at the specified index.","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"tanjiajiajun"},"content":" * @param index The index of the task to be removed.","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"tanjiajiajun"},"content":" * @return The removed task.","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"tanjiajiajun"},"content":" public Task pop(int index) {","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"tanjiajiajun"},"content":" Task t \u003d this.storage.get(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":72,"author":{"gitId":"tanjiajiajun"},"content":" this.storage.remove(index);","lastModifiedDate":"2024-01-23"},{"lineNumber":73,"author":{"gitId":"tanjiajiajun"},"content":" return t;","lastModifiedDate":"2024-01-23"},{"lineNumber":74,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":75,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"tanjiajiajun"},"content":" * Prints the tasks matching a search query, surrounded by a separator line.","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"tanjiajiajun"},"content":" * @param s The string representing the matching tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"tanjiajiajun"},"content":" public String find(String s) {","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"tanjiajiajun"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"tanjiajiajun"},"content":" try {","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"tanjiajiajun"},"content":" for (int i\u003d0; i\u003cthis.storage.size(); i++) {","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"tanjiajiajun"},"content":" if (this.storage.get(i).description.contains(s)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"tanjiajiajun"},"content":" output +\u003d String.format(\"%d. \", i+1);","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"tanjiajiajun"},"content":" output +\u003d this.storage.get(i).toString() + \"\\n\";","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"tanjiajiajun"},"content":" if (output.isEmpty()) throw new DukeExceptions();","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"tanjiajiajun"},"content":" } catch (DukeExceptions d) {","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"tanjiajiajun"},"content":" System.out.println(\"Nothing was found\");","lastModifiedDate":"2024-02-03"},{"lineNumber":94,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":95,"author":{"gitId":"tanjiajiajun"},"content":" return output;","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"tanjiajiajun"},"content":" * Creates a formatted string representing the list of tasks in the storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"tanjiajiajun"},"content":" * @return The formatted string representing the list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":102,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"tanjiajiajun"},"content":" public String printList() {","lastModifiedDate":"2024-01-23"},{"lineNumber":104,"author":{"gitId":"tanjiajiajun"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-01-22"},{"lineNumber":105,"author":{"gitId":"tanjiajiajun"},"content":" for (int i\u003d0; i\u003cthis.storage.size(); i++) {","lastModifiedDate":"2024-01-22"},{"lineNumber":106,"author":{"gitId":"tanjiajiajun"},"content":" output +\u003d String.format(\"%d. \", i+1);","lastModifiedDate":"2024-01-22"},{"lineNumber":107,"author":{"gitId":"tanjiajiajun"},"content":" output +\u003d this.storage.get(i).toString() + \"\\n\";","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":109,"author":{"gitId":"tanjiajiajun"},"content":" return output;","lastModifiedDate":"2024-01-22"},{"lineNumber":110,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":111,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":112,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":113,"author":{"gitId":"tanjiajiajun"},"content":" * Creates a formatted string representing the output when a task is added to the storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":114,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":115,"author":{"gitId":"tanjiajiajun"},"content":" * @param t The task that was added.","lastModifiedDate":"2024-02-03"},{"lineNumber":116,"author":{"gitId":"tanjiajiajun"},"content":" * @return The formatted string representing the output.","lastModifiedDate":"2024-02-03"},{"lineNumber":117,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":118,"author":{"gitId":"tanjiajiajun"},"content":" public String addToListOutput(Task t) {","lastModifiedDate":"2024-01-23"},{"lineNumber":119,"author":{"gitId":"tanjiajiajun"},"content":" String output \u003d \"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-01-23"},{"lineNumber":120,"author":{"gitId":"tanjiajiajun"},"content":" String.format(\" %s\\nNow you have %d tasks in the list.\", t.toString(), this.size());","lastModifiedDate":"2024-01-23"},{"lineNumber":121,"author":{"gitId":"tanjiajiajun"},"content":" return output;","lastModifiedDate":"2024-01-23"},{"lineNumber":122,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":123,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":124,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":125,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":126,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"tanjiajiajun":126}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"public class Task {","lastModifiedDate":"2024-01-22"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":" protected String description;","lastModifiedDate":"2024-01-22"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-22"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-22"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-22"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-22"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":" return (isDone ? \"X\" : \" \"); // mark done task with X","lastModifiedDate":"2024-01-22"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-22"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":" public void markAsUndone() {","lastModifiedDate":"2024-01-22"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-22"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":24,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-22"},{"lineNumber":25,"author":{"gitId":"tanjiajiajun"},"content":" @Override","lastModifiedDate":"2024-01-22"},{"lineNumber":26,"author":{"gitId":"tanjiajiajun"},"content":" public String toString() {","lastModifiedDate":"2024-01-22"},{"lineNumber":27,"author":{"gitId":"tanjiajiajun"},"content":" return String.format(\"[\" + this.getStatusIcon() + \"]\" + \" \" + description);","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-22"},{"lineNumber":29,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-01-22"}],"authorContributionMap":{"tanjiajiajun":29}},{"path":"src/main/java/duke/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"public class ToDos extends Task{","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":" public ToDos (String description) {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":" super(description);","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tanjiajiajun":12}},{"path":"src/main/java/duke/UI.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package duke;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":" * The UI class handles user interface interactions.","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"public class UI {","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":" //private final String LINE \u003d \"______________________________________________________\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" * Constructs a new UI instance.","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" public UI() {}","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" * Displays a welcome message when the program starts.","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" public String onStart() {","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" return \"Hello! I\u0027m ChatterPal!\" + \"\\n\" + \"What can I do for you?\" + \"\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":" * Displays a message when a task is added.","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"tanjiajiajun"},"content":" * @param s The task message to be displayed.","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"tanjiajiajun"},"content":" public String onTaskAddition(String s) {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"tanjiajiajun"},"content":" return s + \"\\n\" ;","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"tanjiajiajun"},"content":" * Displays a message when a task is deleted.","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"tanjiajiajun"},"content":" * @param s The deleted task message.","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"tanjiajiajun"},"content":" * @param integer The number of tasks remaining.","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"tanjiajiajun"},"content":" public String onTaskDeletion(String s, int integer) {","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"tanjiajiajun"},"content":" String message \u003d String.format(\"Noted. I\u0027ve removed this task:\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"tanjiajiajun"},"content":" \"%s\\nNow you have %d tasks left.\\n\", s, integer);","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"tanjiajiajun"},"content":" return message;","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"tanjiajiajun"},"content":" * Displays a list of tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"tanjiajiajun"},"content":" * @param s The list of tasks to be displayed.","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"tanjiajiajun"},"content":" public String onPrintList(String s) {","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"tanjiajiajun"},"content":" return s;","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"tanjiajiajun"},"content":" * Prints the tasks matching a search query, surrounded by a separator line.","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"tanjiajiajun"},"content":" * @param s The string representing the matching tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"tanjiajiajun"},"content":" public String onPrintFind(String s) {","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"tanjiajiajun"},"content":" return \"Here are the matching tasks in your list:\\n\" + s;","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"tanjiajiajun"},"content":" * Displays a message when a task is marked as completed.","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"tanjiajiajun"},"content":" * @param s The completed task message.","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"tanjiajiajun"},"content":" public String onMark(String s) {","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"tanjiajiajun"},"content":" String output \u003d \"Great job on completing the task!\\n\" + s + \"\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"tanjiajiajun"},"content":" return output;","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"tanjiajiajun"},"content":" * Displays a message when a task is marked as incomplete.","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"tanjiajiajun"},"content":" *","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"tanjiajiajun"},"content":" * @param s The incomplete task message.","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"tanjiajiajun"},"content":" public String onUnmark(String s) {","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"tanjiajiajun"},"content":" String output \u003d \"OK, I\u0027ve marked this task as not done yet: \\n\" + s + \"\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"tanjiajiajun"},"content":" return output;","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":79,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":80,"author":{"gitId":"tanjiajiajun"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":81,"author":{"gitId":"tanjiajiajun"},"content":" * Displays a farewell message when the program ends.","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"tanjiajiajun"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"tanjiajiajun"},"content":" public String onEnd() {","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"tanjiajiajun"},"content":" return \"\\n\" + \"Farewell! Can\u0027t wait to catch up with you again. Until next time, \" +","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"tanjiajiajun"},"content":" \"take care and stay awesome!\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"tanjiajiajun":88}},{"path":"src/main/java/exceptions/DukeExceptions.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"public class DukeExceptions extends Exception{","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":" public DukeExceptions() {","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":" super();","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":" public String output() {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":" return \"Oh no! \";","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tanjiajiajun":10}},{"path":"src/main/java/exceptions/EmptyStringException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"public class EmptyStringException extends DukeExceptions {","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":" public String msg \u003d \"Search query cannot be empty!\";","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":" public EmptyStringException() {","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":" super();","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" public String output() {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" return String.format(\"%s%s\\n\", super.output(), this.msg);","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"tanjiajiajun":15}},{"path":"src/main/java/exceptions/EmptyTaskException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import exceptions.DukeExceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"public class EmptyTaskException extends DukeExceptions {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":" public String msg \u003d \"You can\u0027t do nothing!\";","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":" public EmptyTaskException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":" super();","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" public String output() {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":" return String.format(\"%s%s\\n\", super.output(), this.msg);","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tanjiajiajun":19}},{"path":"src/main/java/exceptions/OutOfIntexException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"public class OutOfIntexException extends DukeExceptions{","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":" public String msg \u003d \"The index you indicated is out of range!\";","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":" public OutOfIntexException() {","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":" super();","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" public String output() {return String.format(\"%s%s\\n\", super.output(), this.msg);}","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"tanjiajiajun":11}},{"path":"src/main/java/exceptions/UnknownInputException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import exceptions.DukeExceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"public class UnknownInputException extends DukeExceptions {","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":" final String msg \u003d \"WHAT DO YOU MEANNNNN\";","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":" public UnknownInputException() {","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" super();","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":" public String output() {","lastModifiedDate":"2024-01-23"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" return String.format(\"%s%s\\n\", super.output(), this.msg);","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"tanjiajiajun":16}},{"path":"src/main/java/exceptions/WrongFormatException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"package exceptions;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"public class WrongFormatException extends DukeExceptions {","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":" public String msg \u003d \"Oops! This is given in an input that I cannot understand!\";","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":" public WrongFormatException() {","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":" super();","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" public String output() {","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" return String.format(\"%s%s\\n\", super.output(), this.msg);","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"tanjiajiajun":13}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/11\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":"\u003cchildren\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" \u003cLabel fx:id\u003d\"dialog\" prefHeight\u003d\"104.0\" prefWidth\u003d\"290.0\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"97.0\" fitWidth\u003d\"100.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":"\u003c/children\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":"\u003cpadding\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":"\u003c/padding\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"tanjiajiajun":16}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":"\u003cAnchorPane maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.MainWindow\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"tanjiajiajun":19}},{"path":"src/test/java/StorageTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"import duke.ToDos;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"import duke.Storage;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import duke.Deadlines;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"public class StorageTest {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" public void checkStorageAdd() {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" ToDos t \u003d new ToDos(\"Read book\");","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" storage.add(t);","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" String output \u003d storage.addToListOutput(t);","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":" assertEquals(output, \"Got it. I\u0027ve added this task:\\n\" +","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" \" [T][ ] Read book\\n\" +","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" \"Now you have 1 tasks in the list.\");","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"tanjiajiajun"},"content":" public void checkStorageList() {","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"tanjiajiajun"},"content":" Storage storage \u003d new Storage();","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"tanjiajiajun"},"content":" storage.add(new ToDos(\"Read book\"));","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"tanjiajiajun"},"content":" String newOutput \u003d storage.printList();","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"tanjiajiajun"},"content":" assertEquals(newOutput, \"1. [T][ ] Read book\\n\");","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"tanjiajiajun":31}},{"path":"src/test/java/TodosTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"import duke.ToDos;","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"public class TodosTest {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":" public void checkToStringTest(){","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"tanjiajiajun"},"content":" ToDos t \u003d new ToDos(\"Read book\");","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"tanjiajiajun"},"content":" assertEquals(t.toString(), \"[T][ ] Read book\");","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"tanjiajiajun"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"tanjiajiajun"},"content":" @Test","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"tanjiajiajun"},"content":" public void checkToDosMark() {","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"tanjiajiajun"},"content":" ToDos t \u003d new ToDos(\"Read Book\");","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"tanjiajiajun"},"content":" t.markAsDone();","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"tanjiajiajun"},"content":" assertEquals(t.toString(), \"[T][X] Read Book\");","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"tanjiajiajun"},"content":" t.markAsUndone();","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"tanjiajiajun"},"content":" assertEquals(t.toString(), \"[T][ ] Read Book\");","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"tanjiajiajun"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"tanjiajiajun"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"tanjiajiajun":22}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanjiajiajun"},"content":"todo borrow book","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"tanjiajiajun"},"content":"list","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"tanjiajiajun"},"content":"deadline return book /by 2/12/2019 1800","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"tanjiajiajun"},"content":"event project meeting /from Mon 2pm /to 4pm","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"tanjiajiajun"},"content":"mark 2","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"tanjiajiajun"},"content":"list","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"tanjiajiajun"},"content":"unmark 2","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"tanjiajiajun"},"content":"delete 1","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"tanjiajiajun"},"content":"list","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"tanjiajiajun":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":"tanjiajiajun"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-03"},{"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":{"tanjiajiajun":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":"tanjiajiajun"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/duke/*.java","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"tanjiajiajun":1,"-":37}}] diff --git a/tanjiajiajun_ip_master/commits.json b/tanjiajiajun_ip_master/commits.json index 57cf5055..bfdf7924 100644 --- a/tanjiajiajun_ip_master/commits.json +++ b/tanjiajiajun_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"tanjiajiajun":[{"date":"2024-01-22","commitResults":[{"hash":"cc797739594f1d4861641633066f30c500aa6bad","isMergeCommit":false,"messageTitle":"Level 0: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"c4eb355e830fe054eaf88d58634a490a410a0a33","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":5}}},{"hash":"d942a3b8ec2a2e229a9b1b66008a8495b53a91e2","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"d699dfec8f8c1e3eedd94a099d2060162cc2941f","isMergeCommit":false,"messageTitle":"changed goodbye message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"3bdbedde4c5281311d89ab7a753957f01358cd61","isMergeCommit":false,"messageTitle":"Level-3 Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":11}}}]},{"date":"2024-01-23","commitResults":[{"hash":"99262d20d0b71470edfd759b4dc06cd91fba60f3","isMergeCommit":false,"messageTitle":"Added todos, events, deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":25}}},{"hash":"8e30662d09f95d433b5ac10ffe1201213129e1ef","isMergeCommit":false,"messageTitle":"handled Unknown Imput ecceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":3}}},{"hash":"be3ed9881eb57fe89ed07d670acab50356bd8a34","isMergeCommit":false,"messageTitle":"handled empty todo, events and deadlines","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":51}}},{"hash":"bd93da89684afa7114773632f990e79b17bf38f4","isMergeCommit":false,"messageTitle":"allow delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":1}}}]},{"date":"2024-02-01","commitResults":[{"hash":"9ec94a0b7080677de7366f1644df86bdc3880353","isMergeCommit":false,"messageTitle":"add automated text UI testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":2,"deletions":0}}}]},{"date":"2024-02-02","commitResults":[{"hash":"e322265790ca4037f3b93f2d3cd278d44d8ed49d","isMergeCommit":false,"messageTitle":"Allow save and load of data","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":122,"deletions":0}}},{"hash":"c18b7b4ceb3362720b748ba64d3a451fd9653d8d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"2fd7841fc03781478e4b66bcb3eb2462612f73dd","isMergeCommit":false,"messageTitle":"Convert dates from strings to Java DateTime Objects","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":27,"deletions":5}}},{"hash":"ff8b914e4136806e73d6c3d4abe354fac1ae8475","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-03","commitResults":[{"hash":"d5f2e94b88535515eacb8d3ede13f2b9b4ec7ca7","isMergeCommit":false,"messageTitle":"Used more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":182,"deletions":6}}},{"hash":"c7f399b06ec31af851278e15fb0438165f69d90f","isMergeCommit":false,"messageTitle":"Add code to duke package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":25,"deletions":5},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"de4671d0a28ef98b0fe0d604922a02f578ec9674","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"070e1c616da129548d52de3ad4b108f60a791d06","isMergeCommit":false,"messageTitle":"Set up gradle so that you can build and run Duke using gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"7a2650d270e2d162321f48be27297c923ae07e33","isMergeCommit":false,"messageTitle":"Add JUnit test for Storage and Todos class","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":129}}},{"hash":"79bbc8d2b9ed7268937c7d96e2c2c8540bd7d1be","isMergeCommit":false,"messageTitle":"Add ability for users a way to find a task by searching for a keyword.","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":30,"deletions":0}}},{"hash":"e17c27a2fe2e6ed456f610acf2ad53c6c93d7c0a","isMergeCommit":false,"messageTitle":"Add JavaDoc header comments to non-private classes/methods.","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":140,"deletions":6}}},{"hash":"74668577ca969255469284cae400fb4e4dbc3227","isMergeCommit":false,"messageTitle":"Rewrite code to comply with coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":9}}},{"hash":"92bf5741b68af9046a65ce5bcc49cf435e296e70","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ecdf46e9777b88bbe6c1910d8b7e725d5ce97938","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"tanjiajiajun":{"java":702,"md":2,"fxml":0,"sh":1,"bat":1,"gradle":1,"txt":12}},"authorContributionVariance":{"tanjiajiajun":26562.15},"authorDisplayNameMap":{"tanjiajiajun":"CS2103-T14-1 TAN .. JUN"}} +{"authorDailyContributionsMap":{"tanjiajiajun":[{"date":"2024-01-22","commitResults":[{"hash":"cc797739594f1d4861641633066f30c500aa6bad","isMergeCommit":false,"messageTitle":"Level 0: Rename, Greet, Exit","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}},{"hash":"c4eb355e830fe054eaf88d58634a490a410a0a33","isMergeCommit":false,"messageTitle":"Level 1. Echo","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":5}}},{"hash":"d942a3b8ec2a2e229a9b1b66008a8495b53a91e2","isMergeCommit":false,"messageTitle":"Level 2. Add, List","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"d699dfec8f8c1e3eedd94a099d2060162cc2941f","isMergeCommit":false,"messageTitle":"changed goodbye message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"3bdbedde4c5281311d89ab7a753957f01358cd61","isMergeCommit":false,"messageTitle":"Level-3 Mark as Done","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":72,"deletions":11}}}]},{"date":"2024-01-23","commitResults":[{"hash":"99262d20d0b71470edfd759b4dc06cd91fba60f3","isMergeCommit":false,"messageTitle":"Added todos, events, deadlines","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":113,"deletions":25}}},{"hash":"8e30662d09f95d433b5ac10ffe1201213129e1ef","isMergeCommit":false,"messageTitle":"handled Unknown Imput ecceptions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":3}}},{"hash":"be3ed9881eb57fe89ed07d670acab50356bd8a34","isMergeCommit":false,"messageTitle":"handled empty todo, events and deadlines","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":51}}},{"hash":"bd93da89684afa7114773632f990e79b17bf38f4","isMergeCommit":false,"messageTitle":"allow delete","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":1}}}]},{"date":"2024-02-01","commitResults":[{"hash":"9ec94a0b7080677de7366f1644df86bdc3880353","isMergeCommit":false,"messageTitle":"add automated text UI testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"java":{"insertions":2,"deletions":0}}}]},{"date":"2024-02-02","commitResults":[{"hash":"e322265790ca4037f3b93f2d3cd278d44d8ed49d","isMergeCommit":false,"messageTitle":"Allow save and load of data","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":122,"deletions":0}}},{"hash":"c18b7b4ceb3362720b748ba64d3a451fd9653d8d","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"2fd7841fc03781478e4b66bcb3eb2462612f73dd","isMergeCommit":false,"messageTitle":"Convert dates from strings to Java DateTime Objects","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":3},"java":{"insertions":27,"deletions":5}}},{"hash":"ff8b914e4136806e73d6c3d4abe354fac1ae8475","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-03","commitResults":[{"hash":"d5f2e94b88535515eacb8d3ede13f2b9b4ec7ca7","isMergeCommit":false,"messageTitle":"Used more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":182,"deletions":6}}},{"hash":"c7f399b06ec31af851278e15fb0438165f69d90f","isMergeCommit":false,"messageTitle":"Add code to duke package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":1},"java":{"insertions":25,"deletions":5},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"de4671d0a28ef98b0fe0d604922a02f578ec9674","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"070e1c616da129548d52de3ad4b108f60a791d06","isMergeCommit":false,"messageTitle":"Set up gradle so that you can build and run Duke using gradle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1}}},{"hash":"7a2650d270e2d162321f48be27297c923ae07e33","isMergeCommit":false,"messageTitle":"Add JUnit test for Storage and Todos class","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":64,"deletions":129}}},{"hash":"79bbc8d2b9ed7268937c7d96e2c2c8540bd7d1be","isMergeCommit":false,"messageTitle":"Add ability for users a way to find a task by searching for a keyword.","messageBody":"","tags":["Level-9"],"fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":30,"deletions":0}}},{"hash":"e17c27a2fe2e6ed456f610acf2ad53c6c93d7c0a","isMergeCommit":false,"messageTitle":"Add JavaDoc header comments to non-private classes/methods.","messageBody":"","tags":["A-JavaDoc"],"fileTypesAndContributionMap":{"java":{"insertions":140,"deletions":6}}},{"hash":"74668577ca969255469284cae400fb4e4dbc3227","isMergeCommit":false,"messageTitle":"Rewrite code to comply with coding standard","messageBody":"","tags":["A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":9}}},{"hash":"92bf5741b68af9046a65ce5bcc49cf435e296e70","isMergeCommit":true,"messageTitle":"Resolve merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ecdf46e9777b88bbe6c1910d8b7e725d5ce97938","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-A-CodingStandard\u0027","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{}},{"hash":"b6f9bdb2d772e52489fdc6e153eed5b97ec97581","isMergeCommit":false,"messageTitle":"Add JavaDoc for find method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":2}}}]},{"date":"2024-02-05","commitResults":[{"hash":"f92c318998ec9419629466981486675b1b97b292","isMergeCommit":false,"messageTitle":"Add checkstyle to standardise coding style","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"gradle":{"insertions":5,"deletions":0}}}]},{"date":"2024-02-07","commitResults":[{"hash":"55255fcd8c3c68c69202b972f93d39c68735a6be","isMergeCommit":false,"messageTitle":"Implement JavaFX GUI","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{"gradle":{"insertions":16,"deletions":1},"txt":{"insertions":0,"deletions":1},"fxml":{"insertions":35,"deletions":0},"java":{"insertions":663,"deletions":160}}}]}]},"authorFileTypeContributionMap":{"tanjiajiajun":{"java":1210,"md":2,"fxml":35,"sh":1,"bat":1,"gradle":21,"txt":11}},"authorContributionVariance":{"tanjiajiajun":53655.49},"authorDisplayNameMap":{"tanjiajiajun":"CS2103-T14-1 TAN .. JUN"}} diff --git a/tanyunchao_ip_master/authorship.json b/tanyunchao_ip_master/authorship.json index ea72cb4f..a3322e39 100644 --- a/tanyunchao_ip_master/authorship.json +++ b/tanyunchao_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"data/martin.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"a","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"vca","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"vcaac","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"a","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":"DEADLINEdaa","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"tanyunchao":5}},{"path":"src/main/java/ChatbotKeyword.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"public enum ChatbotKeyword {","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":" LIST,","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":" BYE,","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":" MARK,","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":" UNMARK,","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":" TODO,","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":" EVENT,","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" DEADLINE,","lastModifiedDate":"2024-01-29"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":" DELETE;","lastModifiedDate":"2024-01-29"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"tanyunchao":10}},{"path":"src/main/java/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"public class Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":" private TaskList taskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":" private Storage storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":" private Ui ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" private Parser parser;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":" public Command(TaskList taskList, Storage storage, Ui ui, Parser parser) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" this.ui \u003d ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" this.parser \u003d parser;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":" public void handleCommand(ChatbotKeyword command, String remainingWords) throws IOException {","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":" switch (command) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":" case LIST:","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" taskList.printList();","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" case MARK:","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":" int doneIndex \u003d Integer.parseInt(remainingWords);","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"tanyunchao"},"content":" taskList.markAsDone(doneIndex);","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":" storage.rewriteFile(taskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":" case UNMARK:","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":" int undoneIndex \u003d Integer.parseInt(remainingWords);","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"tanyunchao"},"content":" taskList.unmarkAsDone(undoneIndex);","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" storage.rewriteFile(taskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" case DELETE:","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":" int deleteIndex \u003d Integer.parseInt(remainingWords);","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"tanyunchao"},"content":" taskList.remove(deleteIndex);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"tanyunchao"},"content":" storage.rewriteFile(taskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"tanyunchao"},"content":" case TODO:","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"tanyunchao"},"content":" taskList.add(new Todo(remainingWords));","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"tanyunchao"},"content":" storage.rewriteFile(taskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"tanyunchao"},"content":" case DEADLINE:","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":" String[] deadlineArray \u003d parser.deadlineParse(remainingWords);","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"tanyunchao"},"content":" LocalDate deadlineTime \u003d LocalDate.parse(deadlineArray[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"tanyunchao"},"content":" taskList.add(new Deadline(deadlineArray[0], deadlineTime));","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"tanyunchao"},"content":" storage.rewriteFile(taskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"tanyunchao"},"content":" case EVENT:","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"tanyunchao"},"content":" String[] eventArray \u003d parser.eventParse(remainingWords);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"tanyunchao"},"content":" taskList.add(new Event(eventArray[0], eventArray[1], eventArray[2]));","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"tanyunchao"},"content":" storage.rewriteFile(taskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"tanyunchao"},"content":" case BYE:","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"tanyunchao"},"content":" ui.sayBye();","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"tanyunchao"},"content":" default:","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"tanyunchao"},"content":" throw new IllegalArgumentException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"tanyunchao"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"tanyunchao":60}},{"path":"src/main/java/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-04"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-04"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"public class Deadline extends Task{","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":" private LocalDate due;","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":" private final String DATE_TIME_FORMAT \u003d \"MMM d yyyy\";","lastModifiedDate":"2024-02-04"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" Deadline(String description, LocalDate due) {","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":" super(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":" this.due \u003d due;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.due.format(DateTimeFormatter.ofPattern(DATE_TIME_FORMAT)) + \")\";","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":" public String toFileString() {","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" return \"D | \" + (this.getIsDone() ? \"1\" : \"0\") + \" | \" + this.getDescription() + \" | \" + this.due;","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"tanyunchao":22}},{"path":"src/main/java/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":" private String from;","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":" private String to;","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":" Event(String description, String from, String to) {","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":" super(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":" public String toFileString() {","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":" return \"E | \" + (this.getIsDone() ? \"1\" : \"0\") + \" | \" + this.getDescription() + \" | \" + this.from + \" | \" + this.to;","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"tanyunchao":20}},{"path":"src/main/java/Martin.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":"public class Martin {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":" private static String NAME \u003d \"Martin\";","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":" protected static ArrayList\u003cTask\u003e todoList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" private static String FILEPATH \u003d \"./data/martin.txt\";","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":" private Storage storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":" private Ui ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" private Parser parser;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" private Command command;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" public Martin() {","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":" this.storage \u003d new Storage(FILEPATH); // fixed file path for now ","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":" this.tasks \u003d new TaskList(todoList);","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":" this.command \u003d new Command(tasks, storage, ui, parser);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"tanyunchao"},"content":" public void run() {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":" ui.sayGreeting();","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"tanyunchao"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":" String input \u003d sc.nextLine().strip();","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"tanyunchao"},"content":" ChatbotKeyword command \u003d parser.parse(input);","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" String remainingWords \u003d parser.getRemainingWords(input);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" this.command.handleCommand(command, remainingWords);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":34,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"Error writing to file\");","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":37,"author":{"gitId":"tanyunchao"},"content":" ui.sayBye();","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"tanyunchao"},"content":" sc.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":39,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" ","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"tanyunchao"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":" Martin martin \u003d new Martin();","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"tanyunchao"},"content":" martin.run();","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"tanyunchao":43,"-":2}},{"path":"src/main/java/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"public class Parser {","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":" public Parser() {","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":" public ChatbotKeyword parse(String input) {","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":" String[] inputArray \u003d input.split(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":" String command \u003d inputArray[0].toLowerCase();","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" switch (command) {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":" case \"list\":","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":" return ChatbotKeyword.LIST;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":" case \"done\":","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":" return ChatbotKeyword.MARK;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" case \"delete\":","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" return ChatbotKeyword.DELETE;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":" case \"todo\":","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" return ChatbotKeyword.TODO;","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":" return ChatbotKeyword.DEADLINE;","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":" case \"event\":","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" return ChatbotKeyword.EVENT;","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":" case \"bye\":","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" return ChatbotKeyword.BYE;","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":" default:","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"tanyunchao"},"content":" throw new IllegalArgumentException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":" public String[] deadlineParse(String input) {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"tanyunchao"},"content":" String[] deadlineArray \u003d input.split(\" /by \");","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" String deadlineDescription \u003d deadlineArray[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" return new String[]{deadlineDescription, deadlineArray[1]};","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"tanyunchao"},"content":" public String[] eventParse(String input) {","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":" String[] eventArray \u003d input.split(\" /at \");","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"tanyunchao"},"content":" String eventDescription \u003d eventArray[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"tanyunchao"},"content":" String[] eventTime \u003d eventArray[1].split(\"-\");","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"tanyunchao"},"content":" String startTime \u003d eventTime[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" String endTime \u003d eventTime[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"tanyunchao"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":" return new String[]{eventDescription, startTime, endTime};","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"tanyunchao"},"content":" public String getRemainingWords(String input) {","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"tanyunchao"},"content":" String[] inputArray \u003d input.split(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"tanyunchao"},"content":" return input.substring(inputArray[0].length()).strip();","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"tanyunchao":49}},{"path":"src/main/java/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"import java.io.File;","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":"public class Storage {","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":" private String filePath;","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":" public ArrayList\u003cTask\u003e startUpSequence() {","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":" File martinFile;","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":" martinFile \u003d new File(filePath);","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" if (!martinFile.exists()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"File does not exist. Creating a new file.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"tanyunchao"},"content":" if (martinFile.createNewFile()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"File created: \" + martinFile.getName());","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":" FileWriter fw \u003d new FileWriter(martinFile);","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":" fw.write(\"T | 1 | dummy offset\\n\");","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"tanyunchao"},"content":" fw.close();","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":" return loadFromFile(martinFile);","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"tanyunchao"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":" ","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"tanyunchao"},"content":" return null;","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" private ArrayList\u003cTask\u003e loadFromFile(File martinTxt) {","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"tanyunchao"},"content":" ArrayList\u003cTask\u003e todoList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"tanyunchao"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"tanyunchao"},"content":" BufferedReader br \u003d new BufferedReader(new FileReader(martinTxt));","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"tanyunchao"},"content":" String line;","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"tanyunchao"},"content":" while ((line \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"line: \" + line);","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"tanyunchao"},"content":" String[] lineArray \u003d line.split(\" \\\\| \", 3);","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"tanyunchao"},"content":" System.out.println(Arrays.toString(lineArray));","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"tanyunchao"},"content":" String taskType \u003d lineArray[0];","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"tanyunchao"},"content":" boolean isDone \u003d lineArray[1].equals(\"1\");","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"tanyunchao"},"content":" String taskDescription \u003d lineArray[2];","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"tanyunchao"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"tanyunchao"},"content":" case \"T\":","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"tanyunchao"},"content":" Todo todo \u003d new Todo(taskDescription);","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"tanyunchao"},"content":" if (isDone) {","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"tanyunchao"},"content":" todo.markAsDone();","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"tanyunchao"},"content":" todoList.add(todo);","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"tanyunchao"},"content":" case \"E\":","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"tanyunchao"},"content":" String[] eventArray \u003d taskDescription.split(\" \\\\| \");","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"tanyunchao"},"content":" String eventDescription \u003d eventArray[0];","lastModifiedDate":"2024-02-05"},{"lineNumber":64,"author":{"gitId":"tanyunchao"},"content":" String[] eventTime \u003d eventArray[1].split(\"-\");","lastModifiedDate":"2024-02-05"},{"lineNumber":65,"author":{"gitId":"tanyunchao"},"content":" String startTime \u003d eventTime[0];","lastModifiedDate":"2024-02-05"},{"lineNumber":66,"author":{"gitId":"tanyunchao"},"content":" String endTime \u003d eventTime[1];","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"tanyunchao"},"content":" Event event \u003d new Event(eventDescription, startTime, endTime);","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"tanyunchao"},"content":" if (isDone) {","lastModifiedDate":"2024-02-05"},{"lineNumber":69,"author":{"gitId":"tanyunchao"},"content":" event.markAsDone();","lastModifiedDate":"2024-02-05"},{"lineNumber":70,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":71,"author":{"gitId":"tanyunchao"},"content":" todoList.add(event);","lastModifiedDate":"2024-02-05"},{"lineNumber":72,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":73,"author":{"gitId":"tanyunchao"},"content":" case \"D\":","lastModifiedDate":"2024-02-05"},{"lineNumber":74,"author":{"gitId":"tanyunchao"},"content":" String[] deadlineArray \u003d taskDescription.split(\" \\\\| \");","lastModifiedDate":"2024-02-05"},{"lineNumber":75,"author":{"gitId":"tanyunchao"},"content":" String deadlineDescription \u003d deadlineArray[0];","lastModifiedDate":"2024-02-05"},{"lineNumber":76,"author":{"gitId":"tanyunchao"},"content":" LocalDate deadlineTime \u003d LocalDate.parse(deadlineArray[1]);","lastModifiedDate":"2024-02-05"},{"lineNumber":77,"author":{"gitId":"tanyunchao"},"content":" Deadline deadline \u003d new Deadline(deadlineDescription, deadlineTime);","lastModifiedDate":"2024-02-05"},{"lineNumber":78,"author":{"gitId":"tanyunchao"},"content":" if (isDone) {","lastModifiedDate":"2024-02-05"},{"lineNumber":79,"author":{"gitId":"tanyunchao"},"content":" deadline.markAsDone();","lastModifiedDate":"2024-02-05"},{"lineNumber":80,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":81,"author":{"gitId":"tanyunchao"},"content":" todoList.add(deadline);","lastModifiedDate":"2024-02-05"},{"lineNumber":82,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":83,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":84,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":85,"author":{"gitId":"tanyunchao"},"content":" br.close();","lastModifiedDate":"2024-02-05"},{"lineNumber":86,"author":{"gitId":"tanyunchao"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":87,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"File not found\");","lastModifiedDate":"2024-02-05"},{"lineNumber":88,"author":{"gitId":"tanyunchao"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":89,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"Error reading file\");","lastModifiedDate":"2024-02-05"},{"lineNumber":90,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":91,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":92,"author":{"gitId":"tanyunchao"},"content":" return todoList;","lastModifiedDate":"2024-02-05"},{"lineNumber":93,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":94,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":95,"author":{"gitId":"tanyunchao"},"content":" public void rewriteFile(TaskList taskList) throws IOException {","lastModifiedDate":"2024-02-05"},{"lineNumber":96,"author":{"gitId":"tanyunchao"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":97,"author":{"gitId":"tanyunchao"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2024-02-05"},{"lineNumber":98,"author":{"gitId":"tanyunchao"},"content":" fw.write(\"T | 1 | dummy offset\\n\");","lastModifiedDate":"2024-02-05"},{"lineNumber":99,"author":{"gitId":"tanyunchao"},"content":" ArrayList\u003cTask\u003e todoList \u003d taskList.getTodoList();","lastModifiedDate":"2024-02-05"},{"lineNumber":100,"author":{"gitId":"tanyunchao"},"content":" for (int i \u003d 0; i \u003c todoList.size(); i++) {","lastModifiedDate":"2024-02-05"},{"lineNumber":101,"author":{"gitId":"tanyunchao"},"content":" todoList.get(i).toFileString();","lastModifiedDate":"2024-02-05"},{"lineNumber":102,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":103,"author":{"gitId":"tanyunchao"},"content":" fw.close();","lastModifiedDate":"2024-02-05"},{"lineNumber":104,"author":{"gitId":"tanyunchao"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":105,"author":{"gitId":"tanyunchao"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":106,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":107,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":108,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":109,"author":{"gitId":"tanyunchao"},"content":" public void appendToFile(String line) {","lastModifiedDate":"2024-02-05"},{"lineNumber":110,"author":{"gitId":"tanyunchao"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":111,"author":{"gitId":"tanyunchao"},"content":" FileWriter fw \u003d new FileWriter(filePath, true);","lastModifiedDate":"2024-02-05"},{"lineNumber":112,"author":{"gitId":"tanyunchao"},"content":" fw.write(line);","lastModifiedDate":"2024-02-05"},{"lineNumber":113,"author":{"gitId":"tanyunchao"},"content":" fw.close();","lastModifiedDate":"2024-02-05"},{"lineNumber":114,"author":{"gitId":"tanyunchao"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":115,"author":{"gitId":"tanyunchao"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":116,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":117,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":118,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":119,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"tanyunchao":119}},{"path":"src/main/java/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":" private String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":" ","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":" return this.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" public boolean getIsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":" return this.isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"tanyunchao"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":" return (this.isDone ? \"\\u2713\" : \" \"); //return tick or X symbols","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":35,"author":{"gitId":"tanyunchao"},"content":" public abstract String toFileString();","lastModifiedDate":"2024-02-04"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"tanyunchao":36}},{"path":"src/main/java/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"public class TaskList {","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":" public ArrayList\u003cTask\u003e getTodoList() {","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":" return this.tasks;","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" public void add(Task task) {","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":" public Task remove(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" public void markAsDone(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":" tasks.get(index).markAsDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"tanyunchao"},"content":" public void unmarkAsDone(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":" tasks.get(index).unmarkAsDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" public void printList() {","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":" // 1-indexed todolist","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" for (int i \u003d 1; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":" System.out.println(i + \".\" + tasks.get(i));","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"tanyunchao":36}},{"path":"src/main/java/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-28"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":" super(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":" public String toFileString() {","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" return \"T | \" + (this.getIsDone() ? \"1\" : \"0\") + \" | \" + this.getDescription();","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"tanyunchao":15}},{"path":"src/main/java/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"public class Ui {","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":" public Ui() {","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":" public void sayGreeting() {","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"Hello from Martin\");","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":" public void sayBye() {","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"Bye from Martin\");","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"tanyunchao":14}},{"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":"tanyunchao"},"content":"java -classpath ../bin Martin \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":{"tanyunchao":1,"-":37}}] +[{"path":"data/martin.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"a","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"vca","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"vcaac","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"a","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":"DEADLINEdaa","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"tanyunchao":5}},{"path":"src/main/java/Martin/ChatbotKeyword.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"package Martin;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"public enum ChatbotKeyword {","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":" LIST,","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":" BYE,","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":" MARK,","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":" UNMARK,","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" TODO,","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":" EVENT,","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":" DEADLINE,","lastModifiedDate":"2024-01-29"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":" DELETE;","lastModifiedDate":"2024-01-29"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"tanyunchao":12}},{"path":"src/main/java/Martin/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"package Martin;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":"public class Command {","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":" private TaskList taskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" private Storage storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":" private Ui ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":" private Parser parser;","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":" public Command(TaskList taskList, Storage storage, Ui ui, Parser parser) {","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" this.storage \u003d storage;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":" this.ui \u003d ui;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" this.parser \u003d parser;","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":" public void handleCommand(ChatbotKeyword command, String remainingWords) throws IOException {","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" switch (command) {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":" case LIST:","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" taskList.printList();","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"tanyunchao"},"content":" case MARK:","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":" int doneIndex \u003d Integer.parseInt(remainingWords);","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"tanyunchao"},"content":" taskList.markAsDone(doneIndex);","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":" storage.rewriteFile(taskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"tanyunchao"},"content":" case UNMARK:","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" int undoneIndex \u003d Integer.parseInt(remainingWords);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":" taskList.unmarkAsDone(undoneIndex);","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" storage.rewriteFile(taskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"tanyunchao"},"content":" case DELETE:","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"tanyunchao"},"content":" int deleteIndex \u003d Integer.parseInt(remainingWords);","lastModifiedDate":"2024-02-06"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":" taskList.remove(deleteIndex);","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"tanyunchao"},"content":" storage.rewriteFile(taskList);","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"tanyunchao"},"content":" case TODO:","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" Todo todo \u003d new Todo(remainingWords);","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"tanyunchao"},"content":" taskList.add(todo);","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":" storage.appendToFile(todo.toFileString());","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"tanyunchao"},"content":" case DEADLINE:","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"tanyunchao"},"content":" String[] deadlineArray \u003d parser.deadlineParse(remainingWords);","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"tanyunchao"},"content":" LocalDate deadlineTime \u003d LocalDate.parse(deadlineArray[1]);","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"tanyunchao"},"content":" Deadline deadline \u003d new Deadline(deadlineArray[0], deadlineTime);","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"tanyunchao"},"content":" taskList.add(deadline);","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"tanyunchao"},"content":" storage.appendToFile(deadline.toFileString());","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"tanyunchao"},"content":" case EVENT:","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"tanyunchao"},"content":" String[] eventArray \u003d parser.eventParse(remainingWords);","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"tanyunchao"},"content":" Event event \u003d new Event(eventArray[0], eventArray[1], eventArray[2]);","lastModifiedDate":"2024-02-06"},{"lineNumber":54,"author":{"gitId":"tanyunchao"},"content":" taskList.add(event);","lastModifiedDate":"2024-02-06"},{"lineNumber":55,"author":{"gitId":"tanyunchao"},"content":" storage.appendToFile(event.toFileString());","lastModifiedDate":"2024-02-06"},{"lineNumber":56,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":57,"author":{"gitId":"tanyunchao"},"content":" case BYE:","lastModifiedDate":"2024-02-06"},{"lineNumber":58,"author":{"gitId":"tanyunchao"},"content":" ui.sayBye();","lastModifiedDate":"2024-02-06"},{"lineNumber":59,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-06"},{"lineNumber":60,"author":{"gitId":"tanyunchao"},"content":" default:","lastModifiedDate":"2024-02-06"},{"lineNumber":61,"author":{"gitId":"tanyunchao"},"content":" throw new IllegalArgumentException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-02-06"},{"lineNumber":62,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":63,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":64,"author":{"gitId":"tanyunchao"},"content":" ","lastModifiedDate":"2024-02-06"},{"lineNumber":65,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"tanyunchao":65}},{"path":"src/main/java/Martin/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"package Martin;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-04"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-04"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":" private LocalDate due;","lastModifiedDate":"2024-02-04"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" private final String DATE_TIME_FORMAT \u003d \"MMM d yyyy\";","lastModifiedDate":"2024-02-04"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":" Deadline(String description, LocalDate due) {","lastModifiedDate":"2024-02-04"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":" super(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":" this.due \u003d due;","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":" return \"[D]\" + super.toString() + \" (by: \" + this.due.format(DateTimeFormatter.ofPattern(DATE_TIME_FORMAT))","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":" + \")\";","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" public String toFileString() {","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":" return \"D | \" + (this.getIsDone() ? \"1\" : \"0\") + \" | \" + this.getDescription() + \" | \" + this.due;","lastModifiedDate":"2024-02-04"},{"lineNumber":24,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"tanyunchao":25}},{"path":"src/main/java/Martin/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"package Martin;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":" private String from;","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":" private String to;","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":" Event(String description, String from, String to) {","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" super(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":" return \"[E]\" + super.toString() + \" (from: \" + this.from + \" to: \" + this.to + \")\";","lastModifiedDate":"2024-01-28"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":" public String toFileString() {","lastModifiedDate":"2024-02-04"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" return \"E | \" + (this.getIsDone() ? \"1\" : \"0\") + \" | \" + this.getDescription() + \" | \" + this.from + \" | \"","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":" + this.to;","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"tanyunchao":23}},{"path":"src/main/java/Martin/Martin.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"package Martin;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-25"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":"import java.io.IOException;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":"public class Martin {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" private static String NAME \u003d \"Martin\";","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":" protected static ArrayList\u003cTask\u003e todoList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":" private static String FILEPATH \u003d \"./data/martin.txt\";","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":" private Storage storage;","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" private Ui ui;","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":" private Parser parser;","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" private Command command;","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":" public Martin() {","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":" this.storage \u003d new Storage(FILEPATH); // fixed file path for now","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"tanyunchao"},"content":" public void run() {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":" ui.sayGreeting();","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"tanyunchao"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":" todoList \u003d storage.startUpSequence();","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"tanyunchao"},"content":" this.tasks \u003d new TaskList(todoList);","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" this.command \u003d new Command(tasks, storage, ui, parser);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":" while (sc.hasNextLine()) {","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" String input \u003d sc.nextLine().strip();","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":" ChatbotKeyword command \u003d parser.parse(input);","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"tanyunchao"},"content":" String remainingWords \u003d parser.getRemainingWords(input);","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"tanyunchao"},"content":" try {","lastModifiedDate":"2024-01-28"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":" this.command.handleCommand(command, remainingWords);","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"tanyunchao"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"Error writing to file\");","lastModifiedDate":"2024-02-04"},{"lineNumber":39,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":41,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":" ui.sayBye();","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"tanyunchao"},"content":" sc.close();","lastModifiedDate":"2024-01-28"},{"lineNumber":44,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":45,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":46,"author":{"gitId":"tanyunchao"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"tanyunchao"},"content":" Martin martin \u003d new Martin();","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"tanyunchao"},"content":" martin.run();","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"tanyunchao":48,"-":2}},{"path":"src/main/java/Martin/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"package Martin;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"public class Parser {","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":" public Parser() {","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":" public ChatbotKeyword parse(String input) {","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" String[] inputArray \u003d input.split(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":" String command \u003d inputArray[0].toLowerCase();","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":" switch (command) {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":" case \"list\":","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":" return ChatbotKeyword.LIST;","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" case \"mark\":","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" return ChatbotKeyword.MARK;","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" return ChatbotKeyword.UNMARK;","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":" case \"delete\":","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":" return ChatbotKeyword.DELETE;","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":" case \"todo\":","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" return ChatbotKeyword.TODO;","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" return ChatbotKeyword.DEADLINE;","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":" case \"event\":","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"tanyunchao"},"content":" return ChatbotKeyword.EVENT;","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":" case \"bye\":","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"tanyunchao"},"content":" return ChatbotKeyword.BYE;","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":" default:","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":" throw new IllegalArgumentException(\"I\u0027m sorry, but I don\u0027t know what that means :-(\");","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" public String[] deadlineParse(String input) {","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":" String[] deadlineArray \u003d input.split(\" /by \");","lastModifiedDate":"2024-02-06"},{"lineNumber":34,"author":{"gitId":"tanyunchao"},"content":" String deadlineDescription \u003d deadlineArray[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":35,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":" return new String[] { deadlineDescription, deadlineArray[1] };","lastModifiedDate":"2024-02-06"},{"lineNumber":37,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":39,"author":{"gitId":"tanyunchao"},"content":" public String[] eventParse(String input) {","lastModifiedDate":"2024-02-06"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" String[] eventArray \u003d input.split(\" /at \");","lastModifiedDate":"2024-02-06"},{"lineNumber":41,"author":{"gitId":"tanyunchao"},"content":" String eventDescription \u003d eventArray[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":" String[] eventTime \u003d eventArray[1].split(\"-\");","lastModifiedDate":"2024-02-06"},{"lineNumber":43,"author":{"gitId":"tanyunchao"},"content":" String startTime \u003d eventTime[0];","lastModifiedDate":"2024-02-06"},{"lineNumber":44,"author":{"gitId":"tanyunchao"},"content":" String endTime \u003d eventTime[1];","lastModifiedDate":"2024-02-06"},{"lineNumber":45,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":46,"author":{"gitId":"tanyunchao"},"content":" return new String[] { eventDescription, startTime, endTime };","lastModifiedDate":"2024-02-06"},{"lineNumber":47,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":49,"author":{"gitId":"tanyunchao"},"content":" public String getRemainingWords(String input) {","lastModifiedDate":"2024-02-06"},{"lineNumber":50,"author":{"gitId":"tanyunchao"},"content":" String[] inputArray \u003d input.split(\" \");","lastModifiedDate":"2024-02-06"},{"lineNumber":51,"author":{"gitId":"tanyunchao"},"content":" return input.substring(inputArray[0].length()).strip();","lastModifiedDate":"2024-02-06"},{"lineNumber":52,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":53,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"tanyunchao":53}},{"path":"src/main/java/Martin/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"package Martin;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"import java.io.File;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":"public class Storage {","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" private String filePath;","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" public Storage(String filePath) {","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" public ArrayList\u003cTask\u003e startUpSequence() {","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":" File martinFile;","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":" martinFile \u003d new File(filePath);","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"tanyunchao"},"content":" if (!martinFile.exists()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"File does not exist. Creating a new file.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"tanyunchao"},"content":" if (martinFile.createNewFile()) {","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"File created: \" + martinFile.getName());","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"tanyunchao"},"content":" FileWriter fw \u003d new FileWriter(martinFile);","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" fw.write(\"T | 1 | dummy offset\\n\");","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":" fw.close();","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":" return loadFromFile(martinFile);","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"tanyunchao"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"An error occurred.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"tanyunchao"},"content":" return null;","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"tanyunchao"},"content":" private ArrayList\u003cTask\u003e loadFromFile(File martinTxt) {","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"tanyunchao"},"content":" ArrayList\u003cTask\u003e todoList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"tanyunchao"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"tanyunchao"},"content":" BufferedReader br \u003d new BufferedReader(new FileReader(martinTxt));","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"tanyunchao"},"content":" String line;","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"tanyunchao"},"content":" while ((line \u003d br.readLine()) !\u003d null) {","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"line: \" + line);","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"tanyunchao"},"content":" String[] lineArray \u003d line.split(\" \\\\| \", 3);","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"tanyunchao"},"content":" System.out.println(Arrays.toString(lineArray));","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"tanyunchao"},"content":" String taskType \u003d lineArray[0];","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"tanyunchao"},"content":" boolean isDone \u003d lineArray[1].equals(\"1\");","lastModifiedDate":"2024-02-05"},{"lineNumber":54,"author":{"gitId":"tanyunchao"},"content":" String taskDescription \u003d lineArray[2];","lastModifiedDate":"2024-02-05"},{"lineNumber":55,"author":{"gitId":"tanyunchao"},"content":" switch (taskType) {","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"tanyunchao"},"content":" case \"T\":","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"tanyunchao"},"content":" Todo todo \u003d new Todo(taskDescription);","lastModifiedDate":"2024-02-05"},{"lineNumber":58,"author":{"gitId":"tanyunchao"},"content":" if (isDone) {","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"tanyunchao"},"content":" todo.markAsDone();","lastModifiedDate":"2024-02-05"},{"lineNumber":60,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":61,"author":{"gitId":"tanyunchao"},"content":" todoList.add(todo);","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":63,"author":{"gitId":"tanyunchao"},"content":" case \"E\":","lastModifiedDate":"2024-02-05"},{"lineNumber":64,"author":{"gitId":"tanyunchao"},"content":" String[] eventArray \u003d taskDescription.split(\" \\\\| \");","lastModifiedDate":"2024-02-05"},{"lineNumber":65,"author":{"gitId":"tanyunchao"},"content":" String eventDescription \u003d eventArray[0];","lastModifiedDate":"2024-02-05"},{"lineNumber":66,"author":{"gitId":"tanyunchao"},"content":" String[] eventTime \u003d eventArray[1].split(\"-\");","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"tanyunchao"},"content":" String startTime \u003d eventTime[0];","lastModifiedDate":"2024-02-05"},{"lineNumber":68,"author":{"gitId":"tanyunchao"},"content":" String endTime \u003d eventTime[1];","lastModifiedDate":"2024-02-05"},{"lineNumber":69,"author":{"gitId":"tanyunchao"},"content":" Event event \u003d new Event(eventDescription, startTime, endTime);","lastModifiedDate":"2024-02-05"},{"lineNumber":70,"author":{"gitId":"tanyunchao"},"content":" if (isDone) {","lastModifiedDate":"2024-02-05"},{"lineNumber":71,"author":{"gitId":"tanyunchao"},"content":" event.markAsDone();","lastModifiedDate":"2024-02-05"},{"lineNumber":72,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":73,"author":{"gitId":"tanyunchao"},"content":" todoList.add(event);","lastModifiedDate":"2024-02-05"},{"lineNumber":74,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":75,"author":{"gitId":"tanyunchao"},"content":" case \"D\":","lastModifiedDate":"2024-02-05"},{"lineNumber":76,"author":{"gitId":"tanyunchao"},"content":" String[] deadlineArray \u003d taskDescription.split(\" \\\\| \");","lastModifiedDate":"2024-02-05"},{"lineNumber":77,"author":{"gitId":"tanyunchao"},"content":" String deadlineDescription \u003d deadlineArray[0];","lastModifiedDate":"2024-02-05"},{"lineNumber":78,"author":{"gitId":"tanyunchao"},"content":" LocalDate deadlineTime \u003d LocalDate.parse(deadlineArray[1]);","lastModifiedDate":"2024-02-05"},{"lineNumber":79,"author":{"gitId":"tanyunchao"},"content":" Deadline deadline \u003d new Deadline(deadlineDescription, deadlineTime);","lastModifiedDate":"2024-02-05"},{"lineNumber":80,"author":{"gitId":"tanyunchao"},"content":" if (isDone) {","lastModifiedDate":"2024-02-05"},{"lineNumber":81,"author":{"gitId":"tanyunchao"},"content":" deadline.markAsDone();","lastModifiedDate":"2024-02-05"},{"lineNumber":82,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":83,"author":{"gitId":"tanyunchao"},"content":" todoList.add(deadline);","lastModifiedDate":"2024-02-05"},{"lineNumber":84,"author":{"gitId":"tanyunchao"},"content":" break;","lastModifiedDate":"2024-02-05"},{"lineNumber":85,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":86,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":87,"author":{"gitId":"tanyunchao"},"content":" br.close();","lastModifiedDate":"2024-02-05"},{"lineNumber":88,"author":{"gitId":"tanyunchao"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":89,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"File not found\");","lastModifiedDate":"2024-02-05"},{"lineNumber":90,"author":{"gitId":"tanyunchao"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":91,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"Error reading file\");","lastModifiedDate":"2024-02-05"},{"lineNumber":92,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":93,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":94,"author":{"gitId":"tanyunchao"},"content":" return todoList;","lastModifiedDate":"2024-02-05"},{"lineNumber":95,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":96,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":97,"author":{"gitId":"tanyunchao"},"content":" public void rewriteFile(TaskList taskList) throws IOException {","lastModifiedDate":"2024-02-05"},{"lineNumber":98,"author":{"gitId":"tanyunchao"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":99,"author":{"gitId":"tanyunchao"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2024-02-05"},{"lineNumber":100,"author":{"gitId":"tanyunchao"},"content":" fw.write(\"T | 1 | dummy offset\\n\");","lastModifiedDate":"2024-02-05"},{"lineNumber":101,"author":{"gitId":"tanyunchao"},"content":" ArrayList\u003cTask\u003e todoList \u003d taskList.getTodoList();","lastModifiedDate":"2024-02-05"},{"lineNumber":102,"author":{"gitId":"tanyunchao"},"content":" for (int i \u003d 0; i \u003c todoList.size(); i++) {","lastModifiedDate":"2024-02-05"},{"lineNumber":103,"author":{"gitId":"tanyunchao"},"content":" fw.write(todoList.get(i).toFileString());","lastModifiedDate":"2024-02-06"},{"lineNumber":104,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":105,"author":{"gitId":"tanyunchao"},"content":" fw.close();","lastModifiedDate":"2024-02-05"},{"lineNumber":106,"author":{"gitId":"tanyunchao"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":107,"author":{"gitId":"tanyunchao"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":108,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":109,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":110,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":111,"author":{"gitId":"tanyunchao"},"content":" public void appendToFile(String line) {","lastModifiedDate":"2024-02-05"},{"lineNumber":112,"author":{"gitId":"tanyunchao"},"content":" try {","lastModifiedDate":"2024-02-05"},{"lineNumber":113,"author":{"gitId":"tanyunchao"},"content":" FileWriter fw \u003d new FileWriter(filePath, true);","lastModifiedDate":"2024-02-05"},{"lineNumber":114,"author":{"gitId":"tanyunchao"},"content":" fw.write(line);","lastModifiedDate":"2024-02-05"},{"lineNumber":115,"author":{"gitId":"tanyunchao"},"content":" fw.close();","lastModifiedDate":"2024-02-05"},{"lineNumber":116,"author":{"gitId":"tanyunchao"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":117,"author":{"gitId":"tanyunchao"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":118,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":119,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":120,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":121,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"tanyunchao":121}},{"path":"src/main/java/Martin/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"package Martin;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":" private String description;","lastModifiedDate":"2024-01-25"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":" private boolean isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":" public Task(String description) {","lastModifiedDate":"2024-01-25"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" this.description \u003d description;","lastModifiedDate":"2024-01-25"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":" public String getDescription() {","lastModifiedDate":"2024-01-25"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" return this.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" public boolean getIsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":" return this.isDone;","lastModifiedDate":"2024-01-25"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" public void markAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":" this.isDone \u003d true;","lastModifiedDate":"2024-01-25"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":24,"author":{"gitId":"tanyunchao"},"content":" public void unmarkAsDone() {","lastModifiedDate":"2024-01-25"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":" this.isDone \u003d false;","lastModifiedDate":"2024-01-25"},{"lineNumber":26,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":" public String getStatusIcon() {","lastModifiedDate":"2024-01-25"},{"lineNumber":29,"author":{"gitId":"tanyunchao"},"content":" return (this.isDone ? \"\\u2713\" : \" \"); // return tick or X symbols","lastModifiedDate":"2024-01-25"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-25"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-01-25"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":" public String toString() {","lastModifiedDate":"2024-01-25"},{"lineNumber":34,"author":{"gitId":"tanyunchao"},"content":" return \"[\" + this.getStatusIcon() + \"] \" + this.description;","lastModifiedDate":"2024-01-25"},{"lineNumber":35,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-25"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":37,"author":{"gitId":"tanyunchao"},"content":" public abstract String toFileString();","lastModifiedDate":"2024-02-04"},{"lineNumber":38,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-01-25"}],"authorContributionMap":{"tanyunchao":38}},{"path":"src/main/java/Martin/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"package Martin;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":"public class TaskList {","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" public TaskList(ArrayList\u003cTask\u003e tasks) {","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":" public ArrayList\u003cTask\u003e getTodoList() {","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" return this.tasks;","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" public void add(Task task) {","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" public Task remove(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":" return tasks.remove(index);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"tanyunchao"},"content":" public void markAsDone(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":" tasks.get(index).markAsDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":" public void unmarkAsDone(int index) {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"tanyunchao"},"content":" tasks.get(index).unmarkAsDone();","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" public void printList() {","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":" // 1-indexed todolist","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"tanyunchao"},"content":" for (int i \u003d 1; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"tanyunchao"},"content":" System.out.println(i + \".\" + tasks.get(i));","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"tanyunchao":38}},{"path":"src/main/java/Martin/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"package Martin;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"public class Todo extends Task {","lastModifiedDate":"2024-01-28"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":" public Todo(String description) {","lastModifiedDate":"2024-01-28"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":" super(description);","lastModifiedDate":"2024-01-28"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-01-28"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-01-28"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":" public String toString() {","lastModifiedDate":"2024-01-28"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-01-28"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-01-28"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-04"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" @Override","lastModifiedDate":"2024-02-04"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" public String toFileString() {","lastModifiedDate":"2024-02-04"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":" return \"T | \" + (this.getIsDone() ? \"1\" : \"0\") + \" | \" + this.getDescription();","lastModifiedDate":"2024-02-04"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-04"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-01-28"}],"authorContributionMap":{"tanyunchao":17}},{"path":"src/main/java/Martin/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"package Martin;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"public class Ui {","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":" public Ui() {","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" public void sayGreeting() {","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"Hello from Martin\");","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" public void sayBye() {","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":" System.out.println(\"Bye from Martin\");","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"tanyunchao":16}},{"path":"src/test/java/Martin/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":"public class ParserTest {","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":" public void testGetRemainingWords() {","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":" // Test case 1: input with single word","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":" String input1 \u003d \"Hello\";","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":" String expectedOutput1 \u003d \"\";","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" assertEquals(expectedOutput1, parser.getRemainingWords(input1));","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":" // Test case 2: input with multiple words","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" String input2 \u003d \"Hello world, how are you?\";","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":" String expectedOutput2 \u003d \"world, how are you?\";","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":" assertEquals(expectedOutput2, parser.getRemainingWords(input2));","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" // Test case 3: input with leading spaces","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":" String input3 \u003d \" Hello world\";","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" String expectedOutput3 \u003d \"world\";","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":" assertEquals(expectedOutput3, parser.getRemainingWords(input3));","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":" // Test case 4: input with trailing spaces","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"tanyunchao"},"content":" String input4 \u003d \"Hello world \";","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":" String expectedOutput4 \u003d \"world\";","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":" assertEquals(expectedOutput4, parser.getRemainingWords(input4));","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" // Test case 5: input with leading and trailing spaces","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":" String input5 \u003d \" Hello world \";","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"tanyunchao"},"content":" String expectedOutput5 \u003d \"world\";","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"tanyunchao"},"content":" assertEquals(expectedOutput5, parser.getRemainingWords(input5));","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"tanyunchao":35}},{"path":"src/test/java/Martin/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"tanyunchao"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"tanyunchao"},"content":"import Martin.Todo;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"tanyunchao"},"content":"import java.io.ByteArrayOutputStream;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"tanyunchao"},"content":"import java.io.PrintStream;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"tanyunchao"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"tanyunchao"},"content":"public class TaskListTest {","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"tanyunchao"},"content":" @Test","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"tanyunchao"},"content":" public void testPrintList() {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"tanyunchao"},"content":" // Create a new TaskList object","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"tanyunchao"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"tanyunchao"},"content":" // Add some tasks to the task list","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"tanyunchao"},"content":" taskList.add(new Todo(\"Task 1\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"tanyunchao"},"content":" taskList.add(new Todo(\"Task 2\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"tanyunchao"},"content":" taskList.add(new Todo(\"Task 3\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"tanyunchao"},"content":" // Redirect the standard output to a ByteArrayOutputStream","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"tanyunchao"},"content":" ByteArrayOutputStream outputStream \u003d new ByteArrayOutputStream();","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"tanyunchao"},"content":" System.setOut(new PrintStream(outputStream));","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"tanyunchao"},"content":" // Call the printList method","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"tanyunchao"},"content":" taskList.printList();","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"tanyunchao"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"tanyunchao"},"content":" // Verify the output","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"tanyunchao"},"content":" String expectedOutput \u003d \"1.[T][ ] Task 1\\n2.[T][ ] Task 2\\n3.[T][ ] Task 3\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"tanyunchao"},"content":" assertEquals(expectedOutput, outputStream.toString());","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"tanyunchao"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"tanyunchao"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"tanyunchao":31}},{"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":"tanyunchao"},"content":"java -classpath ../bin Martin \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":{"tanyunchao":1,"-":37}}] diff --git a/tanyunchao_ip_master/commits.json b/tanyunchao_ip_master/commits.json index 54a8a587..5743b4ad 100644 --- a/tanyunchao_ip_master/commits.json +++ b/tanyunchao_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"tanyunchao":[{"date":"2024-01-25","commitResults":[{"hash":"eb157c71c26373b1a53915d189252f3599eeeeab","isMergeCommit":false,"messageTitle":"Rename and refactor","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"0bea23444ba72ed4ddf3942746235cd3a0935c0e","isMergeCommit":false,"messageTitle":"Renamed bot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"48658a6d6575670e3651d8a36357382f083295f5","isMergeCommit":false,"messageTitle":"added echo function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}},{"hash":"f2e382461bb38cae97cf1c174d43e87d5bd18c24","isMergeCommit":false,"messageTitle":"feat: listing function","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":1}}},{"hash":"79dff4f589a54b49650384c67e110f1c047e647f","isMergeCommit":false,"messageTitle":"refactor: added task class, update list type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":13}}},{"hash":"46f006f7f9d9dc4276f0b23577d1f423c8d101ab","isMergeCommit":false,"messageTitle":"added comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"64d6dfc63edd10223c1fcb440b4869e9f93b6999","isMergeCommit":false,"messageTitle":"fix: changed tick icon","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"cfa3b6d39297d48377264c5dd9b9ab2ef488bff1","isMergeCommit":false,"messageTitle":"feat: mark and unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}}]},{"date":"2024-01-28","commitResults":[{"hash":"dbf9bb17da78ab40cf23f62893540a3aec399a30","isMergeCommit":false,"messageTitle":"refactor: new task types inheriting from task","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":1}}},{"hash":"bb6fce84a20297a25aa9f3518e5df11a29168385","isMergeCommit":false,"messageTitle":"feat: use enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"84529007635a829e7e29cd6107c9256eee746fa2","isMergeCommit":false,"messageTitle":"fix: added UNMARK","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"5b48b9de97d07935989fc8e017d5017d5d4aa73d","isMergeCommit":false,"messageTitle":"feat: break tasks and use enum","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":29}}}]},{"date":"2024-01-29","commitResults":[{"hash":"5c8a8d90fffd2ffb3b42f588784d2684423f2f54","isMergeCommit":false,"messageTitle":"updated test scripts","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"sh":{"insertions":1,"deletions":1}}},{"hash":"9778ca539454bd14f3419138c0c9364ff074966f","isMergeCommit":false,"messageTitle":"feat: added error throwing","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}},{"hash":"e41817a65c1b6155cc68a2222e0c96779dcdbcca","isMergeCommit":false,"messageTitle":"refactor: removed unused imports","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"89a3d97353df0909139675deed390e78523f31ae","isMergeCommit":false,"messageTitle":"feat: added delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}}]},{"date":"2024-01-31","commitResults":[{"hash":"1eb4354b5d71314ba1fbe4ad43dd0131344986d4","isMergeCommit":false,"messageTitle":"feat: added txt file system","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":26,"deletions":0}}},{"hash":"c482dd10b368e78ab9c267f2e5a2a01441d84f06","isMergeCommit":false,"messageTitle":"fix: access level for class fields","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"4d13ac84284d036466af8bdc8b8907394456a9dd","isMergeCommit":false,"messageTitle":"revert: made todolist static again","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"c80408d92db2b562c98e44d2860488693b318cdb","isMergeCommit":false,"messageTitle":"Implemented startUpSequence","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":9}}}]},{"date":"2024-02-04","commitResults":[{"hash":"975b307c2c1e0f9c9e72219fbc1f3c7468bf21ca","isMergeCommit":false,"messageTitle":"add file string","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"4878876caac052ac04ed742f524cfb6196c91c29","isMergeCommit":false,"messageTitle":"implement writing to file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":3}}},{"hash":"c06e14c440da12396e80889ce6b8c445c28b8b6a","isMergeCommit":false,"messageTitle":"chore: simple imports and comment clean up","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":4}}},{"hash":"af098f2a51653273c0e47aed7748bc7f940aa3ff","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"81add0e4fb7dd9a9859f7a9ab82ff0ca5cd546ec","isMergeCommit":false,"messageTitle":"Fix deadline string formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":2}}},{"hash":"74786027eea802e3d35d38b97e9bcd41935dc8cb","isMergeCommit":false,"messageTitle":"Add date fornatting for deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":5}}},{"hash":"2f25f92796a7ee4cad89ee478799f270cc3ec5a3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-05","commitResults":[{"hash":"4905665a433820e5f9f93fc9867532f9e1cd2843","isMergeCommit":false,"messageTitle":"Creat new dummy classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"984362523d04e8182c0b1180b3fac8b2e9340fb6","isMergeCommit":false,"messageTitle":"Refactor Martin to start becoming an instance","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"e0c74db2fe0e0441f3947e246af3ddaff2b608dc","isMergeCommit":false,"messageTitle":"Initialise Storage class and associated methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":0}}},{"hash":"16585ca40c89b478d6948da177416c3228bdb9e6","isMergeCommit":false,"messageTitle":"Add startupSequence method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":2}}},{"hash":"8dd458d45ded55fae553594703e38a255698d7c1","isMergeCommit":false,"messageTitle":"Initialise TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}}]},{"date":"2024-02-06","commitResults":[{"hash":"a0cfbc9e81195e60d561c98cb64f327dcc798b72","isMergeCommit":false,"messageTitle":"Add task marking functions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"abc29db55fda92e8850871ddcff25ca8de73f8cb","isMergeCommit":false,"messageTitle":"Add functionality into parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":0}}},{"hash":"4fd28b106fa04d439bffb146b8df2bdede3956b6","isMergeCommit":false,"messageTitle":"Initialise command class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":0}}},{"hash":"7aac38cf236481dc08fb0471cad9dc1d1f409a83","isMergeCommit":false,"messageTitle":"Add greeting and farewell messages to Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"e85ae10d8a971766d627c36a1d0293ffc3f3f9e9","isMergeCommit":false,"messageTitle":"Add getRemainingWords method to Parser class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"e48381c0bb29a4487aab213b8ba3ba8699f79418","isMergeCommit":false,"messageTitle":"Refactor how Martin fundamentally works","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":210}}}]}]},"authorFileTypeContributionMap":{"tanyunchao":{"java":424,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"tanyunchao":8532.023},"authorDisplayNameMap":{"tanyunchao":"CS2103T-F13-2 TAN ..CHAO"}} +{"authorDailyContributionsMap":{"tanyunchao":[{"date":"2024-01-25","commitResults":[{"hash":"eb157c71c26373b1a53915d189252f3599eeeeab","isMergeCommit":false,"messageTitle":"Rename and refactor","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"0bea23444ba72ed4ddf3942746235cd3a0935c0e","isMergeCommit":false,"messageTitle":"Renamed bot","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"48658a6d6575670e3651d8a36357382f083295f5","isMergeCommit":false,"messageTitle":"added echo function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":1}}},{"hash":"f2e382461bb38cae97cf1c174d43e87d5bd18c24","isMergeCommit":false,"messageTitle":"feat: listing function","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":1}}},{"hash":"79dff4f589a54b49650384c67e110f1c047e647f","isMergeCommit":false,"messageTitle":"refactor: added task class, update list type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":55,"deletions":13}}},{"hash":"46f006f7f9d9dc4276f0b23577d1f423c8d101ab","isMergeCommit":false,"messageTitle":"added comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":1}}},{"hash":"64d6dfc63edd10223c1fcb440b4869e9f93b6999","isMergeCommit":false,"messageTitle":"fix: changed tick icon","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"cfa3b6d39297d48377264c5dd9b9ab2ef488bff1","isMergeCommit":false,"messageTitle":"feat: mark and unmark tasks","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":2}}}]},{"date":"2024-01-28","commitResults":[{"hash":"dbf9bb17da78ab40cf23f62893540a3aec399a30","isMergeCommit":false,"messageTitle":"refactor: new task types inheriting from task","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":1}}},{"hash":"bb6fce84a20297a25aa9f3518e5df11a29168385","isMergeCommit":false,"messageTitle":"feat: use enums","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"84529007635a829e7e29cd6107c9256eee746fa2","isMergeCommit":false,"messageTitle":"fix: added UNMARK","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"5b48b9de97d07935989fc8e017d5017d5d4aa73d","isMergeCommit":false,"messageTitle":"feat: break tasks and use enum","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":70,"deletions":29}}}]},{"date":"2024-01-29","commitResults":[{"hash":"5c8a8d90fffd2ffb3b42f588784d2684423f2f54","isMergeCommit":false,"messageTitle":"updated test scripts","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"sh":{"insertions":1,"deletions":1}}},{"hash":"9778ca539454bd14f3419138c0c9364ff074966f","isMergeCommit":false,"messageTitle":"feat: added error throwing","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":6}}},{"hash":"e41817a65c1b6155cc68a2222e0c96779dcdbcca","isMergeCommit":false,"messageTitle":"refactor: removed unused imports","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}},{"hash":"89a3d97353df0909139675deed390e78523f31ae","isMergeCommit":false,"messageTitle":"feat: added delete function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}}]},{"date":"2024-01-31","commitResults":[{"hash":"1eb4354b5d71314ba1fbe4ad43dd0131344986d4","isMergeCommit":false,"messageTitle":"feat: added txt file system","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"java":{"insertions":26,"deletions":0}}},{"hash":"c482dd10b368e78ab9c267f2e5a2a01441d84f06","isMergeCommit":false,"messageTitle":"fix: access level for class fields","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":2}}},{"hash":"4d13ac84284d036466af8bdc8b8907394456a9dd","isMergeCommit":false,"messageTitle":"revert: made todolist static again","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"c80408d92db2b562c98e44d2860488693b318cdb","isMergeCommit":false,"messageTitle":"Implemented startUpSequence","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":59,"deletions":9}}}]},{"date":"2024-02-04","commitResults":[{"hash":"975b307c2c1e0f9c9e72219fbc1f3c7468bf21ca","isMergeCommit":false,"messageTitle":"add file string","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"4878876caac052ac04ed742f524cfb6196c91c29","isMergeCommit":false,"messageTitle":"implement writing to file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":3}}},{"hash":"c06e14c440da12396e80889ce6b8c445c28b8b6a","isMergeCommit":false,"messageTitle":"chore: simple imports and comment clean up","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":4}}},{"hash":"af098f2a51653273c0e47aed7748bc7f940aa3ff","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"81add0e4fb7dd9a9859f7a9ab82ff0ca5cd546ec","isMergeCommit":false,"messageTitle":"Fix deadline string formatting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":2}}},{"hash":"74786027eea802e3d35d38b97e9bcd41935dc8cb","isMergeCommit":false,"messageTitle":"Add date fornatting for deadline","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":5}}},{"hash":"2f25f92796a7ee4cad89ee478799f270cc3ec5a3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{}}]},{"date":"2024-02-05","commitResults":[{"hash":"4905665a433820e5f9f93fc9867532f9e1cd2843","isMergeCommit":false,"messageTitle":"Creat new dummy classes","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"984362523d04e8182c0b1180b3fac8b2e9340fb6","isMergeCommit":false,"messageTitle":"Refactor Martin to start becoming an instance","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"e0c74db2fe0e0441f3947e246af3ddaff2b608dc","isMergeCommit":false,"messageTitle":"Initialise Storage class and associated methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":0}}},{"hash":"16585ca40c89b478d6948da177416c3228bdb9e6","isMergeCommit":false,"messageTitle":"Add startupSequence method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":85,"deletions":2}}},{"hash":"8dd458d45ded55fae553594703e38a255698d7c1","isMergeCommit":false,"messageTitle":"Initialise TaskList class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":0}}}]},{"date":"2024-02-06","commitResults":[{"hash":"a0cfbc9e81195e60d561c98cb64f327dcc798b72","isMergeCommit":false,"messageTitle":"Add task marking functions","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"abc29db55fda92e8850871ddcff25ca8de73f8cb","isMergeCommit":false,"messageTitle":"Add functionality into parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":41,"deletions":0}}},{"hash":"4fd28b106fa04d439bffb146b8df2bdede3956b6","isMergeCommit":false,"messageTitle":"Initialise command class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":0}}},{"hash":"7aac38cf236481dc08fb0471cad9dc1d1f409a83","isMergeCommit":false,"messageTitle":"Add greeting and farewell messages to Ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":1}}},{"hash":"e85ae10d8a971766d627c36a1d0293ffc3f3f9e9","isMergeCommit":false,"messageTitle":"Add getRemainingWords method to Parser class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"e48381c0bb29a4487aab213b8ba3ba8699f79418","isMergeCommit":false,"messageTitle":"Refactor how Martin fundamentally works","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":210}}},{"hash":"4a6b0d9ab9e33e878c94bfb7c9bdf90536e2faf4","isMergeCommit":false,"messageTitle":"Refactor code to use objects and append to file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":6}}},{"hash":"19ccb4d2c78d82545572ba7d303947b0542166eb","isMergeCommit":false,"messageTitle":"Refactor Martin class initialization and startup sequence","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":4}}},{"hash":"0b959a23dcae7bd42382e5372f4ace93eb43f085","isMergeCommit":false,"messageTitle":"Update Parser.java with new command options","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":1}}},{"hash":"ddec5955dbe9feb0d51430c4530586b1be280a54","isMergeCommit":false,"messageTitle":"Fix writing tasks to file in Storage class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-07","commitResults":[{"hash":"7202809f0ec2912c2184f175e8ce6cffb835a88f","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e2e07b75d7630e871a9f08c369197aae131be51b","isMergeCommit":false,"messageTitle":"Repackage as martin package","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":9}}},{"hash":"3012e9add7af5e3f75b38ecdc5b4ca2797bfbcb1","isMergeCommit":false,"messageTitle":"Add ParserTest class with test cases for getRemainingWords method","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":0}}},{"hash":"c3aa1f1e7dd72d5adb3da2630caa4d4209a9b1e4","isMergeCommit":false,"messageTitle":"Add TaskListTest class for unit testing","messageBody":"","tags":["A-Jar","A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"tanyunchao":{"java":522,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"tanyunchao":9263.328},"authorDisplayNameMap":{"tanyunchao":"CS2103T-F13-2 TAN ..CHAO"}} diff --git a/whelan-low_ip_master/authorship.json b/whelan-low_ip_master/authorship.json index c481e280..803bfc5d 100644 --- a/whelan-low_ip_master/authorship.json +++ b/whelan-low_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"# duke.Duke project template","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"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-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":22,"whelan-low":2}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"/*","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":" * This file was generated by the Gradle \u0027init\u0027 task.","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":" * This is a general purpose Gradle build.","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":" * Learn more about Gradle by exploring our samples at https://docs.gradle.org/7.5.1/samples","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":" */","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"whelan-low":6}},{"path":"settings.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"/*","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":" * This file was generated by the Gradle \u0027init\u0027 task.","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":" * The settings file is used to specify which projects to include in your build.","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":" * Detailed information about configuring a multi-project build in Gradle can be found","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":" * in the user manual at https://docs.gradle.org/7.5.1/userguide/multi_project_builds.html","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":"rootProject.name \u003d \u0027ip\u0027","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"whelan-low":10}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":" LocalDateTime deadline;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":" public Deadline(String name, LocalDateTime deadline, boolean isDone) {","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"whelan-low"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"whelan-low"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"whelan-low"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"content":" str \u003d String.format(\"[D]%s (by: %s)\", super.toString(), deadline.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")));","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"whelan-low"},"content":" return str;","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"whelan-low"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"whelan-low"},"content":" public String convertToText() {","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"whelan-low"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"whelan-low"},"content":" str \u003d String.format(\"%s event %s /by %s\", isDone, name, deadline);","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"whelan-low"},"content":" return str;","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"whelan-low":26}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"public class Duke {","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":" Ui.startup();","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"whelan-low":7}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":" LocalDateTime startDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":" LocalDateTime endDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":" public Event(String name, LocalDateTime startDate, LocalDateTime endDate, boolean isDone) {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"whelan-low"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"whelan-low"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"whelan-low"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"whelan-low"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"whelan-low"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"whelan-low"},"content":" str \u003d String.format(\"[E]%s (from: %s to: %s)\", super.toString(),","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"whelan-low"},"content":" startDate.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")),","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"whelan-low"},"content":" endDate.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")));","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"whelan-low"},"content":" return str;","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"whelan-low"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"whelan-low"},"content":" public String convertToText() {","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"whelan-low"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"whelan-low"},"content":" str \u003d String.format(\"%s event %s /from %s /to %s\", isDone, name, startDate, endDate);","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"whelan-low"},"content":" return str;","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"whelan-low":31}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"public class Parser {","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":" public static void commands(TaskList taskList, String request, boolean reading, boolean isDone) {","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":" String[] words \u003d request.split(\" \", 0);","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":" int length \u003d words.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":" boolean addSuccessful \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":" switch (words[0]) {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":" case \"true\": {","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"whelan-low"},"content":" commands(taskList, request.substring(5), reading, true);","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"whelan-low"},"content":" case \"false\": {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"whelan-low"},"content":" commands(taskList, request.substring(6), reading, false);","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"whelan-low"},"content":" case \"list\": {","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"whelan-low"},"content":" System.out.println(taskList.list());","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"whelan-low"},"content":" case \"mark\": {","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"whelan-low"},"content":" int index \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"whelan-low"},"content":" if(index \u003e taskList.getSize() - 1 || index \u003c 0) {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Invalid index!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"whelan-low"},"content":" taskList.get(index).mark();","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"whelan-low"},"content":" case \"unmark\": {","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"whelan-low"},"content":" int index \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"whelan-low"},"content":" if(index \u003e taskList.getSize() - 1 || index \u003c 0) {","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Invalid index!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"whelan-low"},"content":" taskList.get(index).unmark();","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"whelan-low"},"content":" case \"delete\": {","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"whelan-low"},"content":" int index \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"whelan-low"},"content":" taskList.delete(index);","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"whelan-low"},"content":" case \"todo\": {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"whelan-low"},"content":" addSuccessful \u003d taskList.addTodo(words, !reading, isDone);","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"whelan-low"},"content":" case \"deadline\": {","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"whelan-low"},"content":" addSuccessful \u003d taskList.addDeadline(words, !reading, isDone);","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"whelan-low"},"content":" case \"event\": {","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"whelan-low"},"content":" addSuccessful \u003d taskList.addEvent(words, !reading, isDone);","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"whelan-low"},"content":" default:","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Sorry, I don\u0027t know this command :(\");","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"whelan-low":63}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"import duke.Parser;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":"import java.io.File;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":"public class Storage {","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"whelan-low"},"content":" public Storage() {","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"whelan-low"},"content":" public static void save(TaskList taskList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"whelan-low"},"content":" FileWriter f \u003d new FileWriter(\"save.txt\");","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"whelan-low"},"content":" for(Task task : taskList.getTaskList()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"whelan-low"},"content":" String taskString \u003d task.convertToText();","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"whelan-low"},"content":" f.write(taskString);","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"whelan-low"},"content":" f.write(\"\\n\");","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"whelan-low"},"content":" f.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"whelan-low"},"content":" } catch (java.io.IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Error in saving\");","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"whelan-low"},"content":" public static void read(TaskList taskList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"whelan-low"},"content":" File f \u003d new File(\"save.txt\");","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"whelan-low"},"content":" if(!f.isFile()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"whelan-low"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"whelan-low"},"content":" f.createNewFile();","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"whelan-low"},"content":" } catch (java.io.IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Could not create save file :(\");","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"whelan-low"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"whelan-low"},"content":" Scanner s \u003d new Scanner(f); // create a Scanner using the File as the source","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"whelan-low"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"whelan-low"},"content":" String input \u003d s.nextLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"whelan-low"},"content":" Parser.commands(taskList, input, true, false);","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Save loaded!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"whelan-low"},"content":" } catch (FileNotFoundException e2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"File Not Found :(\");","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"whelan-low":50}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":" protected String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":" if (isDone) {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"whelan-low"},"content":" str \u003d String.format(\"[X] %s\", name);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"whelan-low"},"content":" str \u003d String.format(\"[ ] %s\", name);","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"whelan-low"},"content":" return str;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"whelan-low"},"content":" public void mark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"whelan-low"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Good job! You have completed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"whelan-low"},"content":" System.out.println(toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"whelan-low"},"content":" public void unmark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"whelan-low"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Alright. This task has been unmarked\");","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"whelan-low"},"content":" System.out.println(toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"whelan-low"},"content":" public String convertToText() {","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"whelan-low"},"content":" return \"\";","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"whelan-low":33}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"import duke.Event;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":"import duke.Task;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":"public class TaskList {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"whelan-low"},"content":" public TaskList() {","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"whelan-low"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"whelan-low"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"content":" return tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"whelan-low"},"content":" public Task get(int index) {","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"whelan-low"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"whelan-low"},"content":" public int getSize() {","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"whelan-low"},"content":" return tasks.size();","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"whelan-low"},"content":" public String list() {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"whelan-low"},"content":" StringBuilder str \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"whelan-low"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Your task list is empty! Congratulations!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"whelan-low"},"content":" for(int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"whelan-low"},"content":" str.append(String.format(\"%s: %s \\n\", i + 1, tasks.get(i)));","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"whelan-low"},"content":" return str.toString();","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"whelan-low"},"content":" public boolean addTodo(String[] words, boolean announce, boolean isDone) {","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"whelan-low"},"content":" boolean successful \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"whelan-low"},"content":" int length \u003d words.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"whelan-low"},"content":" int wordsIndex \u003d 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"whelan-low"},"content":" if (length \u003c 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"The name cannot be empty!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"whelan-low"},"content":" StringBuilder nameBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"whelan-low"},"content":" while(wordsIndex \u003c length) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"whelan-low"},"content":" nameBuilder.append(\" \").append(words[wordsIndex]);","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"whelan-low"},"content":" wordsIndex++;","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"whelan-low"},"content":" String name \u003d nameBuilder.substring(1);","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"whelan-low"},"content":" successful \u003d true;","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"whelan-low"},"content":" Task task \u003d new ToDo(name, isDone);","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"whelan-low"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"whelan-low"},"content":" if(announce) {","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"whelan-low"},"content":" announceAddition(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"whelan-low"},"content":" return successful;","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"whelan-low"},"content":" public boolean addDeadline(String[] words, boolean announce, boolean isDone) {","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"whelan-low"},"content":" boolean successful \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"whelan-low"},"content":" int length \u003d words.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"whelan-low"},"content":" int wordsIndex \u003d 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"whelan-low"},"content":" if (length \u003c 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"The name cannot be empty!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"whelan-low"},"content":" StringBuilder nameBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"whelan-low"},"content":" while(wordsIndex \u003c length) {","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"whelan-low"},"content":" if (words[wordsIndex].equals(\"/by\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"whelan-low"},"content":" wordsIndex++;","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"whelan-low"},"content":" nameBuilder.append(\" \").append(words[wordsIndex]);","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"whelan-low"},"content":" wordsIndex++;","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"whelan-low"},"content":" String name \u003d nameBuilder.substring(1);","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"whelan-low"},"content":" if (wordsIndex \u003e\u003d length) {","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"The deadline cannot be empty!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"whelan-low"},"content":" StringBuilder deadlineBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"whelan-low"},"content":" while (wordsIndex \u003c length) {","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"whelan-low"},"content":" deadlineBuilder.append(\" \").append(words[wordsIndex]);","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"whelan-low"},"content":" wordsIndex++;","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"whelan-low"},"content":" String deadline \u003d deadlineBuilder.substring(1);","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"whelan-low"},"content":" successful \u003d true;","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"whelan-low"},"content":" Task task \u003d new Deadline(name, LocalDateTime.parse(deadline), isDone);","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"whelan-low"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"whelan-low"},"content":" if(announce) {","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"whelan-low"},"content":" announceAddition(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"whelan-low"},"content":" return successful;","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"whelan-low"},"content":" public boolean addEvent(String[] words, boolean announce, boolean isDone) {","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"whelan-low"},"content":" boolean successful \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"whelan-low"},"content":" int length \u003d words.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"whelan-low"},"content":" int wordsIndex \u003d 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"whelan-low"},"content":" if (length \u003c 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"The name cannot be empty!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"whelan-low"},"content":" StringBuilder nameBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"whelan-low"},"content":" while(wordsIndex \u003c length) {","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"whelan-low"},"content":" if (words[wordsIndex].equals(\"/from\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"whelan-low"},"content":" wordsIndex++;","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"whelan-low"},"content":" nameBuilder.append(\" \").append(words[wordsIndex]);","lastModifiedDate":"2024-01-31"},{"lineNumber":118,"author":{"gitId":"whelan-low"},"content":" wordsIndex++;","lastModifiedDate":"2024-01-31"},{"lineNumber":119,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":121,"author":{"gitId":"whelan-low"},"content":" String name \u003d nameBuilder.substring(1);","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"whelan-low"},"content":" if (wordsIndex \u003e\u003d length) {","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"The start date cannot be empty!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":125,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"whelan-low"},"content":" StringBuilder startDateBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":127,"author":{"gitId":"whelan-low"},"content":" while (wordsIndex \u003c length) {","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"whelan-low"},"content":" if (words[wordsIndex].equals(\"/to\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":129,"author":{"gitId":"whelan-low"},"content":" wordsIndex++;","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"whelan-low"},"content":" startDateBuilder.append(\" \").append(words[wordsIndex]);","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"whelan-low"},"content":" wordsIndex++;","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":136,"author":{"gitId":"whelan-low"},"content":" String startDate \u003d startDateBuilder.substring(1);","lastModifiedDate":"2024-01-31"},{"lineNumber":137,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":138,"author":{"gitId":"whelan-low"},"content":" if (wordsIndex \u003e\u003d length) {","lastModifiedDate":"2024-01-31"},{"lineNumber":139,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"The end date cannot be empty!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":140,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":141,"author":{"gitId":"whelan-low"},"content":" StringBuilder endDateBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":142,"author":{"gitId":"whelan-low"},"content":" while (wordsIndex \u003c length) {","lastModifiedDate":"2024-01-31"},{"lineNumber":143,"author":{"gitId":"whelan-low"},"content":" endDateBuilder.append(\" \").append(words[wordsIndex]);","lastModifiedDate":"2024-01-31"},{"lineNumber":144,"author":{"gitId":"whelan-low"},"content":" wordsIndex++;","lastModifiedDate":"2024-01-31"},{"lineNumber":145,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":146,"author":{"gitId":"whelan-low"},"content":" String endDate \u003d endDateBuilder.substring(1);","lastModifiedDate":"2024-01-31"},{"lineNumber":147,"author":{"gitId":"whelan-low"},"content":" successful \u003d true;","lastModifiedDate":"2024-01-31"},{"lineNumber":148,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"whelan-low"},"content":" Task task \u003d new Event(name, LocalDateTime.parse(startDate), LocalDateTime.parse(endDate), isDone);","lastModifiedDate":"2024-01-31"},{"lineNumber":150,"author":{"gitId":"whelan-low"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":151,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":152,"author":{"gitId":"whelan-low"},"content":" if(announce) {","lastModifiedDate":"2024-01-31"},{"lineNumber":153,"author":{"gitId":"whelan-low"},"content":" announceAddition(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":154,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":155,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":156,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":157,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":158,"author":{"gitId":"whelan-low"},"content":" return successful;","lastModifiedDate":"2024-01-31"},{"lineNumber":159,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":160,"author":{"gitId":"whelan-low"},"content":" public void announceAddition(Task task) {","lastModifiedDate":"2024-01-31"},{"lineNumber":161,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Alright. Adding this task:\");","lastModifiedDate":"2024-01-31"},{"lineNumber":162,"author":{"gitId":"whelan-low"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":163,"author":{"gitId":"whelan-low"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-01-31"},{"lineNumber":164,"author":{"gitId":"whelan-low"},"content":" str \u003d String.format(\"You now have %s tasks\", tasks.size());","lastModifiedDate":"2024-01-31"},{"lineNumber":165,"author":{"gitId":"whelan-low"},"content":" System.out.println(str);","lastModifiedDate":"2024-01-31"},{"lineNumber":166,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":167,"author":{"gitId":"whelan-low"},"content":" public void delete(int index) {","lastModifiedDate":"2024-01-31"},{"lineNumber":168,"author":{"gitId":"whelan-low"},"content":" if(index \u003e tasks.size() - 1 || index \u003c 0) {","lastModifiedDate":"2024-01-31"},{"lineNumber":169,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Invalid index!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":170,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":171,"author":{"gitId":"whelan-low"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2024-01-31"},{"lineNumber":172,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Alright, removing this task\");","lastModifiedDate":"2024-01-31"},{"lineNumber":173,"author":{"gitId":"whelan-low"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-31"},{"lineNumber":174,"author":{"gitId":"whelan-low"},"content":" tasks.remove(index);","lastModifiedDate":"2024-01-31"},{"lineNumber":175,"author":{"gitId":"whelan-low"},"content":" System.out.println(String.format(\"You now have %s tasks left\", tasks.size()));","lastModifiedDate":"2024-01-31"},{"lineNumber":176,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":177,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":178,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"whelan-low":178}},{"path":"src/main/java/duke/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"import duke.Task;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":" public ToDo(String name, boolean isDone) {","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"whelan-low"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"whelan-low"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"whelan-low"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"whelan-low"},"content":" str \u003d String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"whelan-low"},"content":" return str;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"whelan-low"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"whelan-low"},"content":" public String convertToText() {","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"whelan-low"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"whelan-low"},"content":" str \u003d String.format(\"%s todo %s\", isDone, name);","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"whelan-low"},"content":" return str;","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"whelan-low":24}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":"public class Ui {","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":" private Ui() {","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":" Storage.read(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":" greet();","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"whelan-low"},"content":" listen();","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"whelan-low"},"content":" public static void startup() {","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"whelan-low"},"content":" Ui greg \u003d new Ui();","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"content":" public void greet() {","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"whelan-low"},"content":" fillerLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"whelan-low"},"content":" System.out.println(\" Hello! I am Greg.\\n What can I do for you?\");","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"whelan-low"},"content":" fillerLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"whelan-low"},"content":" public void bye() {","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"whelan-low"},"content":" Storage.save(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"whelan-low"},"content":" fillerLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"whelan-low"},"content":" System.out.println(\" Goodbye! Hope to see you again soon!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"whelan-low"},"content":" fillerLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"whelan-low"},"content":" public static void fillerLine() {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"whelan-low"},"content":" System.out.println(\" _______________________________________\");","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"whelan-low"},"content":" public void listen() {","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"whelan-low"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"whelan-low"},"content":" while (true) {","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"whelan-low"},"content":" String request \u003d sc.nextLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"whelan-low"},"content":" if (request.equals(\"bye\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"whelan-low"},"content":" bye();","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"whelan-low"},"content":" Parser.commands(taskList, request, false, false);","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"whelan-low":46}},{"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":"whelan-low"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":20,"whelan-low":1}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"# duke.Duke project template","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"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-31"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":22,"whelan-low":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":"-"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-08-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"-":42,"whelan-low":1}},{"path":"settings.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"/*","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":" * This file was generated by the Gradle \u0027init\u0027 task.","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":" * The settings file is used to specify which projects to include in your build.","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":" *","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":" * Detailed information about configuring a multi-project build in Gradle can be found","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":" * in the user manual at https://docs.gradle.org/7.5.1/userguide/multi_project_builds.html","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":" */","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":"rootProject.name \u003d \u0027ip\u0027","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"whelan-low":10}},{"path":"src/main/java/duke/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":"public class Deadline extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":" LocalDateTime deadline;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":" public Deadline(String name, LocalDateTime deadline, boolean isDone) {","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"whelan-low"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"whelan-low"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"whelan-low"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"content":" str \u003d String.format(\"[D]%s (by: %s)\", super.toString(), deadline.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")));","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"whelan-low"},"content":" return str;","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"whelan-low"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"whelan-low"},"content":" public String convertToText() {","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"whelan-low"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"whelan-low"},"content":" str \u003d String.format(\"%s event %s /by %s\", isDone, name, deadline);","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"whelan-low"},"content":" return str;","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"whelan-low":26}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"public class Duke {","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":" Ui.startup();","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"whelan-low":7}},{"path":"src/main/java/duke/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":"public class Event extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":" LocalDateTime startDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":" LocalDateTime endDate;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":" public Event(String name, LocalDateTime startDate, LocalDateTime endDate, boolean isDone) {","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"whelan-low"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"whelan-low"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"whelan-low"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"whelan-low"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"whelan-low"},"content":" str \u003d String.format(\"[E]%s (from: %s to: %s)\", super.toString(),","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"whelan-low"},"content":" startDate.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")),","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"whelan-low"},"content":" endDate.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy\")));","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"whelan-low"},"content":" return str;","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"whelan-low"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"whelan-low"},"content":" public String convertToText() {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"whelan-low"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"whelan-low"},"content":" str \u003d String.format(\"%s event %s /from %s /to %s\", isDone, name, startDate, endDate);","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"whelan-low"},"content":" return str;","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"whelan-low":30}},{"path":"src/main/java/duke/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"public class Parser {","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":" public static void commands(TaskList taskList, String request, boolean reading, boolean isDone) {","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":" String[] words \u003d request.split(\" \", 0);","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":" int length \u003d words.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":" boolean addSuccessful \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":" switch (words[0]) {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":" case \"true\": {","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"whelan-low"},"content":" commands(taskList, request.substring(5), reading, true);","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"whelan-low"},"content":" case \"false\": {","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"whelan-low"},"content":" commands(taskList, request.substring(6), reading, false);","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"whelan-low"},"content":" case \"list\": {","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"whelan-low"},"content":" System.out.println(taskList.list());","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"whelan-low"},"content":" case \"mark\": {","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"whelan-low"},"content":" int index \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"whelan-low"},"content":" if(index \u003e taskList.getSize() - 1 || index \u003c 0) {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Invalid index!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"whelan-low"},"content":" taskList.get(index).mark();","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"whelan-low"},"content":" case \"unmark\": {","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"whelan-low"},"content":" int index \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"whelan-low"},"content":" if(index \u003e taskList.getSize() - 1 || index \u003c 0) {","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Invalid index!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"whelan-low"},"content":" taskList.get(index).unmark();","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"whelan-low"},"content":" case \"delete\": {","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"whelan-low"},"content":" int index \u003d Integer.parseInt(words[1]) - 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"whelan-low"},"content":" taskList.delete(index);","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"whelan-low"},"content":" case \"todo\": {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"whelan-low"},"content":" addSuccessful \u003d taskList.addToDo(words, !reading, isDone);","lastModifiedDate":"2024-02-06"},{"lineNumber":48,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"whelan-low"},"content":" case \"deadline\": {","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"whelan-low"},"content":" addSuccessful \u003d taskList.addDeadline(words, !reading, isDone);","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"whelan-low"},"content":" case \"event\": {","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"whelan-low"},"content":" addSuccessful \u003d taskList.addEvent(words, !reading, isDone);","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"whelan-low"},"content":" default:","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Sorry, I don\u0027t know this command :(\");","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"whelan-low":63}},{"path":"src/main/java/duke/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"import duke.Parser;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":"import java.io.File;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":"public class Storage {","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"whelan-low"},"content":" public Storage() {","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"whelan-low"},"content":" public static void save(TaskList taskList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"whelan-low"},"content":" FileWriter f \u003d new FileWriter(\"save.txt\");","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"whelan-low"},"content":" for(Task task : taskList.getTaskList()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"whelan-low"},"content":" String taskString \u003d task.convertToText();","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"whelan-low"},"content":" f.write(taskString);","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"whelan-low"},"content":" f.write(\"\\n\");","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"whelan-low"},"content":" f.close();","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"whelan-low"},"content":" } catch (java.io.IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Error in saving\");","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"whelan-low"},"content":" public static void read(TaskList taskList) {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"whelan-low"},"content":" File f \u003d new File(\"save.txt\");","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"whelan-low"},"content":" if(!f.isFile()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"whelan-low"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"whelan-low"},"content":" f.createNewFile();","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"whelan-low"},"content":" } catch (java.io.IOException e) {","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Could not create save file :(\");","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"whelan-low"},"content":" try {","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"whelan-low"},"content":" Scanner s \u003d new Scanner(f); // create a Scanner using the File as the source","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"whelan-low"},"content":" while (s.hasNext()) {","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"whelan-low"},"content":" String input \u003d s.nextLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"whelan-low"},"content":" Parser.commands(taskList, input, true, false);","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Save loaded!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"whelan-low"},"content":" } catch (FileNotFoundException e2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"File Not Found :(\");","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"whelan-low":50}},{"path":"src/main/java/duke/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"public abstract class Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":" protected String name;","lastModifiedDate":"2024-01-24"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":" if (isDone) {","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"whelan-low"},"content":" str \u003d String.format(\"[X] %s\", name);","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"whelan-low"},"content":" str \u003d String.format(\"[ ] %s\", name);","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"whelan-low"},"content":" return str;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":18,"author":{"gitId":"whelan-low"},"content":" public void mark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":19,"author":{"gitId":"whelan-low"},"content":" isDone \u003d true;","lastModifiedDate":"2024-01-24"},{"lineNumber":20,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Good job! You have completed this task:\");","lastModifiedDate":"2024-01-24"},{"lineNumber":21,"author":{"gitId":"whelan-low"},"content":" System.out.println(toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":22,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":23,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":24,"author":{"gitId":"whelan-low"},"content":" public void unmark() {","lastModifiedDate":"2024-01-24"},{"lineNumber":25,"author":{"gitId":"whelan-low"},"content":" isDone \u003d false;","lastModifiedDate":"2024-01-24"},{"lineNumber":26,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Alright. This task has been unmarked\");","lastModifiedDate":"2024-01-24"},{"lineNumber":27,"author":{"gitId":"whelan-low"},"content":" System.out.println(toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":28,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":29,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"whelan-low"},"content":" public String convertToText() {","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"whelan-low"},"content":" return \"\";","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"whelan-low":33}},{"path":"src/main/java/duke/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"import duke.Event;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":"import duke.Task;","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":"public class TaskList {","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"whelan-low"},"content":" public TaskList() {","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"whelan-low"},"content":" this.tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"whelan-low"},"content":" public ArrayList\u003cTask\u003e getTaskList() {","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"content":" return tasks;","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"whelan-low"},"content":" public Task get(int index) {","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"whelan-low"},"content":" return tasks.get(index);","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"whelan-low"},"content":" public int getSize() {","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"whelan-low"},"content":" return tasks.size();","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"whelan-low"},"content":" public String list() {","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"whelan-low"},"content":" StringBuilder str \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"whelan-low"},"content":" if (tasks.size() \u003d\u003d 0) {","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Your task list is empty! Congratulations!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"whelan-low"},"content":" for(int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"whelan-low"},"content":" str.append(String.format(\"%s: %s \\n\", i + 1, tasks.get(i)));","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"whelan-low"},"content":" return str.toString();","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"whelan-low"},"content":" public boolean addToDo(String[] words, boolean announce, boolean isDone) {","lastModifiedDate":"2024-02-06"},{"lineNumber":38,"author":{"gitId":"whelan-low"},"content":" boolean successful \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"whelan-low"},"content":" int length \u003d words.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"whelan-low"},"content":" int wordsIndex \u003d 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"whelan-low"},"content":" if (length \u003c 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"The name cannot be empty!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"whelan-low"},"content":" StringBuilder nameBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"whelan-low"},"content":" while(wordsIndex \u003c length) {","lastModifiedDate":"2024-01-31"},{"lineNumber":47,"author":{"gitId":"whelan-low"},"content":" nameBuilder.append(\" \").append(words[wordsIndex]);","lastModifiedDate":"2024-01-31"},{"lineNumber":48,"author":{"gitId":"whelan-low"},"content":" wordsIndex++;","lastModifiedDate":"2024-01-31"},{"lineNumber":49,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":50,"author":{"gitId":"whelan-low"},"content":" String name \u003d nameBuilder.substring(1);","lastModifiedDate":"2024-01-31"},{"lineNumber":51,"author":{"gitId":"whelan-low"},"content":" successful \u003d true;","lastModifiedDate":"2024-01-31"},{"lineNumber":52,"author":{"gitId":"whelan-low"},"content":" Task task \u003d new ToDo(name, isDone);","lastModifiedDate":"2024-01-31"},{"lineNumber":53,"author":{"gitId":"whelan-low"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":54,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":55,"author":{"gitId":"whelan-low"},"content":" if(announce) {","lastModifiedDate":"2024-01-31"},{"lineNumber":56,"author":{"gitId":"whelan-low"},"content":" announceAddition(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":57,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":58,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":59,"author":{"gitId":"whelan-low"},"content":" return successful;","lastModifiedDate":"2024-01-31"},{"lineNumber":60,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":61,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":62,"author":{"gitId":"whelan-low"},"content":" public boolean addDeadline(String[] words, boolean announce, boolean isDone) {","lastModifiedDate":"2024-01-31"},{"lineNumber":63,"author":{"gitId":"whelan-low"},"content":" boolean successful \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":64,"author":{"gitId":"whelan-low"},"content":" int length \u003d words.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":65,"author":{"gitId":"whelan-low"},"content":" int wordsIndex \u003d 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":66,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":67,"author":{"gitId":"whelan-low"},"content":" if (length \u003c 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":68,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"The name cannot be empty!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":69,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":70,"author":{"gitId":"whelan-low"},"content":" StringBuilder nameBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":71,"author":{"gitId":"whelan-low"},"content":" while(wordsIndex \u003c length) {","lastModifiedDate":"2024-01-31"},{"lineNumber":72,"author":{"gitId":"whelan-low"},"content":" if (words[wordsIndex].equals(\"/by\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":73,"author":{"gitId":"whelan-low"},"content":" wordsIndex++;","lastModifiedDate":"2024-01-31"},{"lineNumber":74,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":75,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":76,"author":{"gitId":"whelan-low"},"content":" nameBuilder.append(\" \").append(words[wordsIndex]);","lastModifiedDate":"2024-01-31"},{"lineNumber":77,"author":{"gitId":"whelan-low"},"content":" wordsIndex++;","lastModifiedDate":"2024-01-31"},{"lineNumber":78,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":79,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":80,"author":{"gitId":"whelan-low"},"content":" String name \u003d nameBuilder.substring(1);","lastModifiedDate":"2024-01-31"},{"lineNumber":81,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":82,"author":{"gitId":"whelan-low"},"content":" if (wordsIndex \u003e\u003d length) {","lastModifiedDate":"2024-01-31"},{"lineNumber":83,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"The deadline cannot be empty!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":84,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":85,"author":{"gitId":"whelan-low"},"content":" StringBuilder deadlineBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":86,"author":{"gitId":"whelan-low"},"content":" while (wordsIndex \u003c length) {","lastModifiedDate":"2024-01-31"},{"lineNumber":87,"author":{"gitId":"whelan-low"},"content":" deadlineBuilder.append(\" \").append(words[wordsIndex]);","lastModifiedDate":"2024-01-31"},{"lineNumber":88,"author":{"gitId":"whelan-low"},"content":" wordsIndex++;","lastModifiedDate":"2024-01-31"},{"lineNumber":89,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":90,"author":{"gitId":"whelan-low"},"content":" String deadline \u003d deadlineBuilder.substring(1);","lastModifiedDate":"2024-01-31"},{"lineNumber":91,"author":{"gitId":"whelan-low"},"content":" successful \u003d true;","lastModifiedDate":"2024-01-31"},{"lineNumber":92,"author":{"gitId":"whelan-low"},"content":" Task task \u003d new Deadline(name, LocalDateTime.parse(deadline), isDone);","lastModifiedDate":"2024-01-31"},{"lineNumber":93,"author":{"gitId":"whelan-low"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":94,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":95,"author":{"gitId":"whelan-low"},"content":" if(announce) {","lastModifiedDate":"2024-01-31"},{"lineNumber":96,"author":{"gitId":"whelan-low"},"content":" announceAddition(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":97,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":98,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":99,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":100,"author":{"gitId":"whelan-low"},"content":" return successful;","lastModifiedDate":"2024-01-31"},{"lineNumber":101,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":102,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":103,"author":{"gitId":"whelan-low"},"content":" public boolean addEvent(String[] words, boolean announce, boolean isDone) {","lastModifiedDate":"2024-01-31"},{"lineNumber":104,"author":{"gitId":"whelan-low"},"content":" boolean successful \u003d false;","lastModifiedDate":"2024-01-31"},{"lineNumber":105,"author":{"gitId":"whelan-low"},"content":" int length \u003d words.length;","lastModifiedDate":"2024-01-31"},{"lineNumber":106,"author":{"gitId":"whelan-low"},"content":" int wordsIndex \u003d 1;","lastModifiedDate":"2024-01-31"},{"lineNumber":107,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":108,"author":{"gitId":"whelan-low"},"content":" if (length \u003c 2) {","lastModifiedDate":"2024-01-31"},{"lineNumber":109,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"The name cannot be empty!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":110,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":111,"author":{"gitId":"whelan-low"},"content":" StringBuilder nameBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":112,"author":{"gitId":"whelan-low"},"content":" while(wordsIndex \u003c length) {","lastModifiedDate":"2024-01-31"},{"lineNumber":113,"author":{"gitId":"whelan-low"},"content":" if (words[wordsIndex].equals(\"/from\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":114,"author":{"gitId":"whelan-low"},"content":" wordsIndex++;","lastModifiedDate":"2024-01-31"},{"lineNumber":115,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":116,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":117,"author":{"gitId":"whelan-low"},"content":" nameBuilder.append(\" \").append(words[wordsIndex]);","lastModifiedDate":"2024-01-31"},{"lineNumber":118,"author":{"gitId":"whelan-low"},"content":" wordsIndex++;","lastModifiedDate":"2024-01-31"},{"lineNumber":119,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":120,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":121,"author":{"gitId":"whelan-low"},"content":" String name \u003d nameBuilder.substring(1);","lastModifiedDate":"2024-01-31"},{"lineNumber":122,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":123,"author":{"gitId":"whelan-low"},"content":" if (wordsIndex \u003e\u003d length) {","lastModifiedDate":"2024-01-31"},{"lineNumber":124,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"The start date cannot be empty!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":125,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":126,"author":{"gitId":"whelan-low"},"content":" StringBuilder startDateBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":127,"author":{"gitId":"whelan-low"},"content":" while (wordsIndex \u003c length) {","lastModifiedDate":"2024-01-31"},{"lineNumber":128,"author":{"gitId":"whelan-low"},"content":" if (words[wordsIndex].equals(\"/to\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":129,"author":{"gitId":"whelan-low"},"content":" wordsIndex++;","lastModifiedDate":"2024-01-31"},{"lineNumber":130,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":131,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":132,"author":{"gitId":"whelan-low"},"content":" startDateBuilder.append(\" \").append(words[wordsIndex]);","lastModifiedDate":"2024-01-31"},{"lineNumber":133,"author":{"gitId":"whelan-low"},"content":" wordsIndex++;","lastModifiedDate":"2024-01-31"},{"lineNumber":134,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":135,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":136,"author":{"gitId":"whelan-low"},"content":" String startDate \u003d startDateBuilder.substring(1);","lastModifiedDate":"2024-01-31"},{"lineNumber":137,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":138,"author":{"gitId":"whelan-low"},"content":" if (wordsIndex \u003e\u003d length) {","lastModifiedDate":"2024-01-31"},{"lineNumber":139,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"The end date cannot be empty!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":140,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":141,"author":{"gitId":"whelan-low"},"content":" StringBuilder endDateBuilder \u003d new StringBuilder();","lastModifiedDate":"2024-01-31"},{"lineNumber":142,"author":{"gitId":"whelan-low"},"content":" while (wordsIndex \u003c length) {","lastModifiedDate":"2024-01-31"},{"lineNumber":143,"author":{"gitId":"whelan-low"},"content":" endDateBuilder.append(\" \").append(words[wordsIndex]);","lastModifiedDate":"2024-01-31"},{"lineNumber":144,"author":{"gitId":"whelan-low"},"content":" wordsIndex++;","lastModifiedDate":"2024-01-31"},{"lineNumber":145,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":146,"author":{"gitId":"whelan-low"},"content":" String endDate \u003d endDateBuilder.substring(1);","lastModifiedDate":"2024-01-31"},{"lineNumber":147,"author":{"gitId":"whelan-low"},"content":" successful \u003d true;","lastModifiedDate":"2024-01-31"},{"lineNumber":148,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":149,"author":{"gitId":"whelan-low"},"content":" Task task \u003d new Event(name, LocalDateTime.parse(startDate), LocalDateTime.parse(endDate), isDone);","lastModifiedDate":"2024-01-31"},{"lineNumber":150,"author":{"gitId":"whelan-low"},"content":" tasks.add(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":151,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":152,"author":{"gitId":"whelan-low"},"content":" if(announce) {","lastModifiedDate":"2024-01-31"},{"lineNumber":153,"author":{"gitId":"whelan-low"},"content":" announceAddition(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":154,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":155,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":156,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":157,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":158,"author":{"gitId":"whelan-low"},"content":" return successful;","lastModifiedDate":"2024-01-31"},{"lineNumber":159,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":160,"author":{"gitId":"whelan-low"},"content":" public void announceAddition(Task task) {","lastModifiedDate":"2024-01-31"},{"lineNumber":161,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Alright. Adding this task:\");","lastModifiedDate":"2024-01-31"},{"lineNumber":162,"author":{"gitId":"whelan-low"},"content":" System.out.println(task);","lastModifiedDate":"2024-01-31"},{"lineNumber":163,"author":{"gitId":"whelan-low"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-01-31"},{"lineNumber":164,"author":{"gitId":"whelan-low"},"content":" str \u003d String.format(\"You now have %s tasks\", tasks.size());","lastModifiedDate":"2024-01-31"},{"lineNumber":165,"author":{"gitId":"whelan-low"},"content":" System.out.println(str);","lastModifiedDate":"2024-01-31"},{"lineNumber":166,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":167,"author":{"gitId":"whelan-low"},"content":" public void delete(int index) {","lastModifiedDate":"2024-01-31"},{"lineNumber":168,"author":{"gitId":"whelan-low"},"content":" if(index \u003e tasks.size() - 1 || index \u003c 0) {","lastModifiedDate":"2024-01-31"},{"lineNumber":169,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Invalid index!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":170,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":171,"author":{"gitId":"whelan-low"},"content":" Task task \u003d tasks.get(index);","lastModifiedDate":"2024-01-31"},{"lineNumber":172,"author":{"gitId":"whelan-low"},"content":" System.out.println(\"Alright, removing this task\");","lastModifiedDate":"2024-01-31"},{"lineNumber":173,"author":{"gitId":"whelan-low"},"content":" System.out.println(task.toString());","lastModifiedDate":"2024-01-31"},{"lineNumber":174,"author":{"gitId":"whelan-low"},"content":" tasks.remove(index);","lastModifiedDate":"2024-01-31"},{"lineNumber":175,"author":{"gitId":"whelan-low"},"content":" System.out.println(String.format(\"You now have %s tasks left\", tasks.size()));","lastModifiedDate":"2024-01-31"},{"lineNumber":176,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":177,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":178,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"whelan-low":178}},{"path":"src/main/java/duke/ToDo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"import duke.Task;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":"public class ToDo extends Task {","lastModifiedDate":"2024-01-24"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":" public ToDo(String name, boolean isDone) {","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-24"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-24"},{"lineNumber":11,"author":{"gitId":"whelan-low"},"content":" @Override","lastModifiedDate":"2024-01-24"},{"lineNumber":12,"author":{"gitId":"whelan-low"},"content":" public String toString() {","lastModifiedDate":"2024-01-24"},{"lineNumber":13,"author":{"gitId":"whelan-low"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-01-24"},{"lineNumber":14,"author":{"gitId":"whelan-low"},"content":" str \u003d String.format(\"[T]%s\", super.toString());","lastModifiedDate":"2024-01-24"},{"lineNumber":15,"author":{"gitId":"whelan-low"},"content":" return str;","lastModifiedDate":"2024-01-24"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-24"},{"lineNumber":17,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"whelan-low"},"content":" @Override","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"whelan-low"},"content":" public String convertToText() {","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"whelan-low"},"content":" String str \u003d \"\";","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"whelan-low"},"content":" str \u003d String.format(\"%s todo %s\", isDone, name);","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"whelan-low"},"content":" return str;","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-01-24"}],"authorContributionMap":{"whelan-low":24}},{"path":"src/main/java/duke/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-01-31"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-01-31"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":"public class Ui {","lastModifiedDate":"2024-01-31"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":" private TaskList taskList;","lastModifiedDate":"2024-01-31"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":" private Ui() {","lastModifiedDate":"2024-01-31"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2024-01-31"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":" Storage.read(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":" greet();","lastModifiedDate":"2024-01-31"},{"lineNumber":11,"author":{"gitId":"whelan-low"},"content":" listen();","lastModifiedDate":"2024-01-31"},{"lineNumber":12,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":13,"author":{"gitId":"whelan-low"},"content":" public static void startup() {","lastModifiedDate":"2024-01-31"},{"lineNumber":14,"author":{"gitId":"whelan-low"},"content":" Ui greg \u003d new Ui();","lastModifiedDate":"2024-01-31"},{"lineNumber":15,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"content":" public void greet() {","lastModifiedDate":"2024-01-31"},{"lineNumber":17,"author":{"gitId":"whelan-low"},"content":" fillerLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":18,"author":{"gitId":"whelan-low"},"content":" System.out.println(\" Hello! I am Greg.\\n What can I do for you?\");","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"whelan-low"},"content":" fillerLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":20,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":21,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":22,"author":{"gitId":"whelan-low"},"content":" public void bye() {","lastModifiedDate":"2024-01-31"},{"lineNumber":23,"author":{"gitId":"whelan-low"},"content":" Storage.save(taskList);","lastModifiedDate":"2024-01-31"},{"lineNumber":24,"author":{"gitId":"whelan-low"},"content":" fillerLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":25,"author":{"gitId":"whelan-low"},"content":" System.out.println(\" Goodbye! Hope to see you again soon!\");","lastModifiedDate":"2024-01-31"},{"lineNumber":26,"author":{"gitId":"whelan-low"},"content":" fillerLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":27,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":28,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":29,"author":{"gitId":"whelan-low"},"content":" public static void fillerLine() {","lastModifiedDate":"2024-01-31"},{"lineNumber":30,"author":{"gitId":"whelan-low"},"content":" System.out.println(\" _______________________________________\");","lastModifiedDate":"2024-01-31"},{"lineNumber":31,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":32,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":33,"author":{"gitId":"whelan-low"},"content":" public void listen() {","lastModifiedDate":"2024-01-31"},{"lineNumber":34,"author":{"gitId":"whelan-low"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2024-01-31"},{"lineNumber":35,"author":{"gitId":"whelan-low"},"content":" while (true) {","lastModifiedDate":"2024-01-31"},{"lineNumber":36,"author":{"gitId":"whelan-low"},"content":" String request \u003d sc.nextLine();","lastModifiedDate":"2024-01-31"},{"lineNumber":37,"author":{"gitId":"whelan-low"},"content":" if (request.equals(\"bye\")) {","lastModifiedDate":"2024-01-31"},{"lineNumber":38,"author":{"gitId":"whelan-low"},"content":" bye();","lastModifiedDate":"2024-01-31"},{"lineNumber":39,"author":{"gitId":"whelan-low"},"content":" break;","lastModifiedDate":"2024-01-31"},{"lineNumber":40,"author":{"gitId":"whelan-low"},"content":" } else {","lastModifiedDate":"2024-01-31"},{"lineNumber":41,"author":{"gitId":"whelan-low"},"content":" Parser.commands(taskList, request, false, false);","lastModifiedDate":"2024-01-31"},{"lineNumber":42,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":43,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":44,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-01-31"},{"lineNumber":45,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-01-31"},{"lineNumber":46,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-01-31"}],"authorContributionMap":{"whelan-low":46}},{"path":"src/test/java/duke/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":"public class ParserTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":" public void deleteTest() {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"whelan-low"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"whelan-low"},"content":" TaskList testList2 \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"whelan-low"},"content":" String[] words \u003d new String[] {\"todo\", \"test\", \"123\"};","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"whelan-low"},"content":" String[] words2 \u003d new String[] {\"todo\", \"test\", \"456\"};","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"whelan-low"},"content":" String[] words3 \u003d new String[] {\"todo\", \"test\", \"789\"};","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"content":" testList.addToDo(words, true, false);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"whelan-low"},"content":" testList.addToDo(words2, true, false);","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"whelan-low"},"content":" testList.addToDo(words3, true, false);","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"whelan-low"},"content":" testList2.addToDo(words, true, false);","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"whelan-low"},"content":" testList2.addToDo(words3, true, false);","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"whelan-low"},"content":" Parser.commands(testList, \"delete 2\", false, false);","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"whelan-low"},"content":" String expected \u003d testList.list();","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"whelan-low"},"content":" String actual \u003d testList2.list();","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"whelan-low"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"whelan-low":26}},{"path":"src/test/java/duke/TaskListTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"whelan-low"},"content":"package duke;","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":3,"author":{"gitId":"whelan-low"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":5,"author":{"gitId":"whelan-low"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":7,"author":{"gitId":"whelan-low"},"content":"public class TaskListTest {","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"whelan-low"},"content":" @Test","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"whelan-low"},"content":" public void listTest() {","lastModifiedDate":"2024-02-06"},{"lineNumber":11,"author":{"gitId":"whelan-low"},"content":" TaskList testList \u003d new TaskList();","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"whelan-low"},"content":" String[] words \u003d new String[] {\"todo\", \"test\", \"123\"};","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"whelan-low"},"content":" testList.addToDo(words, true, false);","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"whelan-low"},"content":" String actual \u003d testList.list();","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"whelan-low"},"content":" String expected \u003d \"1: \" + testList.getTaskList().get(0).toString();","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"whelan-low"},"content":" assertEquals(expected, actual);","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"whelan-low"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"whelan-low"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"whelan-low"},"content":"}","lastModifiedDate":"2024-02-06"}],"authorContributionMap":{"whelan-low":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":"whelan-low"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-01-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"-":20,"whelan-low":1}}] diff --git a/whelan-low_ip_master/commits.json b/whelan-low_ip_master/commits.json index edb6ab93..ec50a89b 100644 --- a/whelan-low_ip_master/commits.json +++ b/whelan-low_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"whelan-low":[{"date":"2024-01-24","commitResults":[{"hash":"ee04a87202c34830745c9ecfb59827c80eb8ba4b","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":6}}},{"hash":"8efa0d669ae941089ddbdb7b8acc4a3ab333d1cb","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":5}}},{"hash":"187aeb9b4614dd3ed0a89209957498e5bd897c60","isMergeCommit":false,"messageTitle":"Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":11}}},{"hash":"4a6ccce366dcf30f1d51863f5c44255be280f5e8","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":10}}},{"hash":"28ae237fb532ec4a471e81fe3f55ed2d3ff11647","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","tags":["Level-5-partial","Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":14}}},{"hash":"d7ec5c4e522fd9ca46df34d775cf5308ff860142","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":2}}},{"hash":"375eb046639c9b217662dcf272683343f85db9d8","isMergeCommit":false,"messageTitle":"Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"bb330da7d876d10c9986af69bf3a396988c3ba7c","isMergeCommit":false,"messageTitle":"Level 6","messageBody":"","tags":["Level-6","Level-5-partial-2"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":19}}}]},{"date":"2024-01-31","commitResults":[{"hash":"538c40b4fcf8447fb52dfe9bb1b7275169374a49","isMergeCommit":false,"messageTitle":"Level 7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":272,"deletions":120}}},{"hash":"337185077f3eceae6d962761357fcb9684d1ed09","isMergeCommit":false,"messageTitle":"Level 8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":10}}},{"hash":"d8e3efaa7233898ad749069e56273ed7666d9bb7","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":326,"deletions":294}}},{"hash":"8d88661b2b5591722056800972eac1506a110ce6","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":15},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"12ef4c7e7aedee2e64a9d0edb3333b7d90938cc0","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":16,"deletions":0}}}]}]},"authorFileTypeContributionMap":{"whelan-low":{"java":458,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":16,"txt":0}},"authorContributionVariance":{"whelan-low":93075.51},"authorDisplayNameMap":{"whelan-low":"CS2103T-T09-4 LOW ..ELAN"}} +{"authorDailyContributionsMap":{"whelan-low":[{"date":"2024-01-24","commitResults":[{"hash":"ee04a87202c34830745c9ecfb59827c80eb8ba4b","isMergeCommit":false,"messageTitle":"Level 0","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":6}}},{"hash":"8efa0d669ae941089ddbdb7b8acc4a3ab333d1cb","isMergeCommit":false,"messageTitle":"Level 1","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":5}}},{"hash":"187aeb9b4614dd3ed0a89209957498e5bd897c60","isMergeCommit":false,"messageTitle":"Level 2","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":11}}},{"hash":"4a6ccce366dcf30f1d51863f5c44255be280f5e8","isMergeCommit":false,"messageTitle":"Level 3","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":60,"deletions":10}}},{"hash":"28ae237fb532ec4a471e81fe3f55ed2d3ff11647","isMergeCommit":false,"messageTitle":"Level 4","messageBody":"","tags":["Level-5-partial","Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":14}}},{"hash":"d7ec5c4e522fd9ca46df34d775cf5308ff860142","isMergeCommit":false,"messageTitle":"A-TextUiTesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":2}}},{"hash":"375eb046639c9b217662dcf272683343f85db9d8","isMergeCommit":false,"messageTitle":"Level 5","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"bb330da7d876d10c9986af69bf3a396988c3ba7c","isMergeCommit":false,"messageTitle":"Level 6","messageBody":"","tags":["Level-6","Level-5-partial-2"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":19}}}]},{"date":"2024-01-31","commitResults":[{"hash":"538c40b4fcf8447fb52dfe9bb1b7275169374a49","isMergeCommit":false,"messageTitle":"Level 7","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":272,"deletions":120}}},{"hash":"337185077f3eceae6d962761357fcb9684d1ed09","isMergeCommit":false,"messageTitle":"Level 8","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":10}}},{"hash":"d8e3efaa7233898ad749069e56273ed7666d9bb7","isMergeCommit":false,"messageTitle":"A-MoreOOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":326,"deletions":294}}},{"hash":"8d88661b2b5591722056800972eac1506a110ce6","isMergeCommit":false,"messageTitle":"A-Packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":15},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"12ef4c7e7aedee2e64a9d0edb3333b7d90938cc0","isMergeCommit":false,"messageTitle":"A-Gradle","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":16,"deletions":0}}}]},{"date":"2024-02-06","commitResults":[{"hash":"b417c53746fa75a836b571d60522e79213b77081","isMergeCommit":true,"messageTitle":"Merge commit \u0027f837ddb7d2b77f6654758f93d056420a580787ca\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a19ed41d7286866b7eadf71a865d3e20758dd59a","isMergeCommit":false,"messageTitle":"A-JUnit","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":2}}},{"hash":"869f7a7ac54bdf9239e47c8579d909075738d665","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/add-gradle-support\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cee0bb5dbe776af942053e3a6a492f2f869e0ebc","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027","messageBody":"# Conflicts:\n#\t.gitignore\n#\tbuild.gradle\n#\tgradle/wrapper/gradle-wrapper.jar\n#\tgradle/wrapper/gradle-wrapper.properties\n#\tgradlew\n#\tgradlew.bat\n","fileTypesAndContributionMap":{}},{"hash":"0e26166dee3cbbde69705b935eff3a5001d1e00e","isMergeCommit":false,"messageTitle":"A-Jar","messageBody":"","tags":["A-Jar"],"fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":9},"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-07","commitResults":[{"hash":"3685b9fab9966ad031bc0c5aacb8eded7baedeca","isMergeCommit":false,"messageTitle":"removed unused import","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"whelan-low":{"java":502,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":11,"txt":0}},"authorContributionVariance":{"whelan-low":63180.1},"authorDisplayNameMap":{"whelan-low":"CS2103T-T09-4 LOW ..ELAN"}} diff --git a/yorklim_ip_master/authorship.json b/yorklim_ip_master/authorship.json index 5317380e..d46b47e0 100644 --- a/yorklim_ip_master/authorship.json +++ b/yorklim_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"# NotDuke","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"\u003e\"Your mind is for having ideas, not holding them.\" – David Aleen ([source](https://dansilvestre.com/productivity-quotes))","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"NotDuke frees your mind of having to remember things you need to do. It\u0027s,","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"- text-based","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"- easy to learn","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"- ~~FAST~~ *SUPER FAST* to use","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"All you need to do is,","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"1. download it from [here](https://github.com/yorklim/ip/releases).","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"1. double-click it.","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"1. add your tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":"1. let it manage your tasks for you :wink:","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":"And its **FREE**!","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":"Features:","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":"- [x] Managing tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":"- [ ] Managing deadlines (coming soon)","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":"- [ ] Reminders (coming soon)","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":"---","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":"If you are a Java programmer, you can use it to practice Java too. Here\u0027s the `main` method:","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":"public class Main {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" Application.launch(MainApp.class, args);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"yorklim":27,"-":6}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-02"},{"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":"yorklim"},"content":" mainClass.set(\"duke.Duke\")","lastModifiedDate":"2024-02-02"},{"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":{"yorklim":2,"-":41}},{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"D | 0 | a | 1111-11-11T11:11","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"T | 0 | 1","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"D | 0 | do work | 2024-01-01T16:00","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"E | 0 | school event | 2024-01-01T08:00/2024-01-04T20:00","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"T | 0 | work day","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"yorklim":5}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"# NotDuke","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"\u003e\"Your mind is for having ideas, not holding them.\" – David Aleen ([source](https://dansilvestre.com/productivity-quotes))","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"NotDuke frees your mind of having to remember things you need to do. It\u0027s,","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"- text-based","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"- easy to learn","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"- ~~FAST~~ *SUPER FAST* to use","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"All you need to do is,","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"1. download it from [here](https://github.com/yorklim/ip/releases).","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"1. double-click it.","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"1. add your tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":"1. let it manage your tasks for you :wink:","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":"And its **FREE**!","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":"Features:","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":"- [x] Managing tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":"- [ ] Managing deadlines (coming soon)","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":"- [ ] Reminders (coming soon)","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":"---","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":"If you are a Java programmer, you can use it to practice Java too. Here\u0027s the `main` method:","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2024-01-07"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":"public class Main {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" Application.launch(MainApp.class, args);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2024-01-07"}],"authorContributionMap":{"yorklim":23,"-":10}},{"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"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"yorklim":3}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.command.Command;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" private Storage storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" private Ui ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" public Duke(String filePath) {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" ui \u003d new Ui();","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" storage \u003d new Storage(filePath);","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" ui.showError(e);","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" public void run() {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" ui.greet();","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" boolean isExit \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" while (!isExit) {","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" String fullCommand \u003d ui.getUserCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" Command c \u003d Parser.parse(fullCommand);","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" c.execute(tasks, ui, storage);","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" isExit \u003d c.isExit();","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" ui.showError(e);","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-07-29"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" new Duke(\"data/tasks.txt\").run();","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":42,"-":4}},{"path":"src/main/java/duke/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" ui.sendReply(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" return true;","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":17}},{"path":"src/main/java/duke/command/CheckCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeInvalidDateTimeFormat;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"public class CheckCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" private String inputs;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" public CheckCommand(String command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" inputs \u003d command;","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" LocalDate date \u003d LocalDate.parse(inputs, DateTimeFormatter.ofPattern(\"d/M/yyyy\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" ui.sendReply(tasks.check(date));","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" } catch (DateTimeParseException e1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidDateTimeFormat(\"d/M/yyyy\");","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":31}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"public abstract class Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" * Executes the command given the TaskList, Ui and Storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" * @param tasks The current TaskList","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" * @param ui The Ui for the session","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" * @param storage The Storage for the session","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" * @throws DukeException if there is an error executing the command","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" * Returns a true if it is a Byecommand, false otherwise.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" * @return true if command is a Byecommand, else false","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":26}},{"path":"src/main/java/duke/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeInvalidDateTimeFormat;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeMissingArgument;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"import duke.task.Deadlines;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" private String inputs;","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" public DeadlineCommand(String command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" inputs \u003d command;","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" String timeFormat \u003d \"d/M/yyyy HHmm\";","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" String[] values \u003d inputs.split(\" /by \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" LocalDateTime by \u003d LocalDateTime.parse(values[1], DateTimeFormatter.ofPattern(timeFormat));","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" ui.sendReply(tasks.add(new Deadlines(values[0], by, false)));","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" } catch (ArrayIndexOutOfBoundsException e1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(2, \"deadline\");","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" } catch (DateTimeParseException e2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidDateTimeFormat(timeFormat);","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":37}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeInvalidArgument;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeMissingArgument;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" private String inputs;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" public DeleteCommand(String command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" inputs \u003d command;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" if (inputs.isEmpty()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(1, \"delete\");","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" int index \u003d Integer.valueOf(inputs);","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" ui.sendReply(tasks.delete(index));","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidArgument(inputs);","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":31}},{"path":"src/main/java/duke/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeMissingArgument;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"import duke.task.Events;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" private String inputs;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" public EventCommand(String command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" inputs \u003d command;","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" String timeFormat \u003d \"d/M/yyyy HHmm\";","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" String[] event \u003d inputs.split(\" /from \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" String[] time \u003d event[1].split(\" /to \");","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" LocalDateTime from \u003d LocalDateTime.parse(time[0], DateTimeFormatter.ofPattern(timeFormat));","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" LocalDateTime to \u003d LocalDateTime.parse(time[1], DateTimeFormatter.ofPattern(timeFormat));","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" ui.sendReply(tasks.add(new Events(event[0], from, to, false)));","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(3, \"event\");","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":35}},{"path":"src/main/java/duke/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" private String inputs;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" public FindCommand(String command) {","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" inputs \u003d command;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" ui.sendReply(tasks.find(inputs));","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"yorklim":21}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" ui.sendReply(tasks.list());","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":16}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeInvalidArgument;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeMissingArgument;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" private String inputs;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" public MarkCommand(String command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" inputs \u003d command;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" if (inputs.isEmpty()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(1, \"mark\");","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" int index \u003d Integer.valueOf(inputs);","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" ui.sendReply(tasks.mark(index));","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidArgument(inputs);","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":31}},{"path":"src/main/java/duke/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeMissingArgument;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.task.ToDos;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" private String inputs;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" public TodoCommand(String command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" inputs \u003d command;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" if (inputs.isEmpty()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(1, \"todo\");","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" ToDos newTask \u003d new ToDos(inputs, false);","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" ui.sendReply(tasks.add(newTask));","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":27}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeInvalidArgument;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeMissingArgument;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import duke.ui.Ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" private String inputs;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" public UnmarkCommand(String command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" inputs \u003d command;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" if (inputs.isEmpty()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(1, \"unmark\");","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" int index \u003d Integer.valueOf(inputs);","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" ui.sendReply(tasks.unmark(index));","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidArgument(inputs);","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":31}},{"path":"src/main/java/duke/dukeexception/DukeCannotBeMarked.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeCannotBeMarked extends DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s Task is already marked!\", super.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":9}},{"path":"src/main/java/duke/dukeexception/DukeCannotBeUnmarked.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeCannotBeUnmarked extends DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s Task is already unmarked!\", super.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":9}},{"path":"src/main/java/duke/dukeexception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"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/duke/dukeexception/DukeInvalidArgument.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeInvalidArgument extends DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" private String args;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" public DukeInvalidArgument(String args) {","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" args \u003d args;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s The argument(s):\\\"%s\\\" you entered are invalid!\", super.toString(), args);","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":12}},{"path":"src/main/java/duke/dukeexception/DukeInvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeInvalidCommand extends DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" private String command;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" public DukeInvalidCommand(String command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" this.command \u003d command;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s This is not a valid duke command: \\\"\" + command + \"\\\"\", super.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":12}},{"path":"src/main/java/duke/dukeexception/DukeInvalidDateTimeFormat.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeInvalidDateTimeFormat extends DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" private String timeFormat;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" public DukeInvalidDateTimeFormat(String timeFormat) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" super();","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" this.timeFormat \u003d timeFormat;","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 toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"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":12,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yorklim":13}},{"path":"src/main/java/duke/dukeexception/DukeMissingArgument.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeMissingArgument extends DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" private int need;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" private String command;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" public DukeMissingArgument(int need, String command) {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" this.need \u003d need;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s There are missing argument(s), %d argument(s) is needed for %s\",","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" super.toString(), need, command);","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":16}},{"path":"src/main/java/duke/dukeexception/DukeNoSaveFile.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeNoSaveFile extends DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s No save file could be found!\", super.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":8}},{"path":"src/main/java/duke/dukeexception/DukeSaveError.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeSaveError extends DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s Unable to save!\", super.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":8}},{"path":"src/main/java/duke/dukeexception/DukeTaskNotFound.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeTaskNotFound extends DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" private int index;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" public DukeTaskNotFound(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" this.index \u003d index;","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 Task No. %d cannot be found!\", super.toString(), this.index);","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":13}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.parser;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.command.ByeCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.command.CheckCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.command.Command;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.command.DeadlineCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import duke.command.EventCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"import duke.command.FindCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"import duke.command.ListCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"import duke.command.TodoCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"import duke.command.UnmarkCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeInvalidCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":"public class Parser {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" * Returns the corresponding command given the input string.","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" * @param fullCommand the String command to be parsed","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" * @return the command corresponding to the string","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" * @throws DukeInvalidCommand if string is not a valid command","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" public static Command parse(String fullCommand) throws DukeInvalidCommand {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" String[] input \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" String command \u003d input[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" return new ByeCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"list\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"unmark\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" return new UnmarkCommand(input[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"mark\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" return new MarkCommand(input[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"todo\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" return new TodoCommand(input[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"deadline\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" return new DeadlineCommand(input[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"event\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" return new EventCommand(input[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"delete\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":" return new DeleteCommand(input[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"check\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" return new CheckCommand(input[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"find\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":" return new FindCommand(input[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidCommand(fullCommand);","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":50}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.io.File;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeNoSaveFile;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeSaveError;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"import duke.task.Deadlines;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"import duke.task.Events;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"import duke.task.Task;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":"import duke.task.ToDos;","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" * Facilitates the loading and saving of TaskList data during start up and closing of NotDuke.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":"public class Storage {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" /** The file to load and save to. */","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" private final File filePath;","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" * Constructs tne storage controller with the given String as the target file location.","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" * @param path The location to read and save the savefile","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" public Storage(String path) {","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" filePath \u003d new File(path);","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" * Returns an ArrayList containing all the tasks saved in the savefile.","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" * @return an ArrayList of tasks","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" * @throws DukeNoSaveFile if savefile cannot be found","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" public ArrayList\u003cTask\u003e load() throws DukeNoSaveFile {","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":" ArrayList\u003cTask\u003e saveFile \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":" Scanner s \u003d new Scanner(filePath);","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" while (s.hasNextLine()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" String line \u003d s.nextLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":" String[] inputs \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":" boolean isDone \u003d !inputs[1].equals(\"0\");","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":" Task task;","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"yorklim"},"content":" switch (inputs[0]) {","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"yorklim"},"content":" case \"T\":","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"yorklim"},"content":" task \u003d new ToDos(inputs[2], isDone);","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"yorklim"},"content":" saveFile.add(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"yorklim"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"yorklim"},"content":" case \"D\":","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"yorklim"},"content":" task \u003d new Deadlines(inputs[2], LocalDateTime.parse(inputs[3]), isDone);","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"yorklim"},"content":" saveFile.add(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"yorklim"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"yorklim"},"content":" case \"E\":","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"yorklim"},"content":" String[] time \u003d inputs[3].split(\"/\");","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"yorklim"},"content":" task \u003d new Events(inputs[2], LocalDateTime.parse(time[0]),","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"yorklim"},"content":" LocalDateTime.parse(time[1]), isDone);","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"yorklim"},"content":" saveFile.add(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"yorklim"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"yorklim"},"content":" default:","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"yorklim"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"yorklim"},"content":" return saveFile;","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"yorklim"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"yorklim"},"content":" throw new DukeNoSaveFile();","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"yorklim"},"content":" * Saves data of TaskList in this session to the target savefile location.","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"yorklim"},"content":" * @param taskList the TaskList of the session","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"yorklim"},"content":" * @throws DukeSaveError if file cannot be saved","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"yorklim"},"content":" public void save(TaskList taskList) throws DukeSaveError {","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"yorklim"},"content":" filePath.getParentFile().mkdirs();","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"yorklim"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"yorklim"},"content":" fw.write(taskList.saveFormat());","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"yorklim"},"content":" fw.close();","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"yorklim"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"yorklim"},"content":" throw new DukeSaveError();","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":88}},{"path":"src/main/java/duke/task/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.task;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" * Represents a Deadline which is a type of Task","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" /** The date the Deadline is due */","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" * Constructs a Deadline object with the specified name, the due date of the Deadline and mark whether it is done.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" * @param name The name of the Deadline","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" * @param by The date in which the Deadline is due","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" * @param status The status of the Deadline","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" public Deadlines(String name, LocalDateTime by, Boolean status) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" super(name, status);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" public String happenOn(LocalDate date) {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" if (date.isEqual(by.toLocalDate())) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" return taskInfo();","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" return \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" public String printMatch(String match) {","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" if (super.contains(match)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" return taskInfo();","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" return \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":" * @InheritDoc Includes task type Deadlines to string.","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":" public String saveOutput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":" return \"D \" + super.saveOutput() + String.format(\" | %s\", by);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"yorklim"},"content":" * @InheritDoc Includes task type Deadlines to string.","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"yorklim"},"content":" public String taskInfo() {","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"yorklim"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"yorklim"},"content":" output +\u003d \"[D]\";","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"yorklim"},"content":" output +\u003d super.taskInfo();","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"yorklim"},"content":" return output + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, HHmm\")) + \"hrs)\"","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"yorklim"},"content":" + System.lineSeparator();","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":60,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":60}},{"path":"src/main/java/duke/task/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.task;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" * Represents an Event which is a type of Task","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"public class Events extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" /** The start date and time of the Event */","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" /** The end date and time of the Event */","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" * Constructs a Event object with the specified name, the start and end date of the Event and mark whether it is","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" * done.","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" * @param name The name of the Event","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" * @param from The start date and time of the Event","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" * @param to The end date and time of the Event","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" * @param status The status of the Event","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" public Events(String name, LocalDateTime from, LocalDateTime to, Boolean status) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" super(name, status);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" public String happenOn(LocalDate date) {","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" if ((date.isAfter(from.toLocalDate()) \u0026\u0026 date.isBefore(to.toLocalDate()))","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" || date.isEqual(from.toLocalDate()) || date.isEqual(to.toLocalDate())) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" return taskInfo();","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" return \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":" * @InheritDoc Includes task type Events, from date and to date to string.","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":" public String printMatch(String match) {","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":" if (super.contains(match)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":" return taskInfo();","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"yorklim"},"content":" return \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"yorklim"},"content":" public String saveOutput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"yorklim"},"content":" return \"E \" + super.saveOutput() + String.format(\" | %s/%s\", from, to);","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-02-03"},{"lineNumber":58,"author":{"gitId":"yorklim"},"content":" * @InheritDoc Includes task type Events, from date and to date to string.","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"yorklim"},"content":" public String taskInfo() {","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"yorklim"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"yorklim"},"content":" output +\u003d \"[E]\";","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"yorklim"},"content":" output +\u003d super.taskInfo();","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"yorklim"},"content":" return output + \" (from: \" + from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, HHmm\")) + \"hrs to: \"","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"yorklim"},"content":" + to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, HHmm\")) + \"hrs)\" + System.lineSeparator();","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":68}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.task;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeCannotBeMarked;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeCannotBeUnmarked;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" * Represents a Task object added by the user. A \u003ccode\u003eTask\u003c/code\u003e object contains a String corresponding to the name of","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" * the task and a boolean to signify if the task is completed.","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" /** Name of the task */","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" protected String name;","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" /** Status of the task */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" * Constructs a Task object with the specified name and mark whether it is done.","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" * @param name The name of the task","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" * @param isDone The status of the task","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" public Task(String name, Boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" * Returns a String representation of the task used for saving the task. The String will contain information such","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" * as the name of the task and the status.","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" * @return the string to be saved","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" public String saveOutput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" return String.format(\"| %d | %s\", isDone ? 1 : 0, name);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" * Returns a String representation of the task if task is occurring on the date given.","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" * @param date the date to check if task was active","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":" * @return the string representation of task if date is within task timeframe, or an empty string if it is not","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" public String happenOn(LocalDate date) {","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" return \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"yorklim"},"content":" * Returns a String representation of the task if task name contains string.","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"yorklim"},"content":" * @param match the date to check if task was active","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"yorklim"},"content":" * @return the string representation of task if string is within task name, or an empty string if it is not","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"yorklim"},"content":" public String printMatch(String match) {","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"yorklim"},"content":" return \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"yorklim"},"content":" * Returns true if the name contains the string given, false otherwise","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"yorklim"},"content":" * @param match string to be checked","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"yorklim"},"content":" * @return true if name contains string, false otherwise","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"yorklim"},"content":" public boolean contains(String match) {","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"yorklim"},"content":" return name.contains(match);","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"yorklim"},"content":" * Returns a String representation to be printed out to display for the user. The String will contain information","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"yorklim"},"content":" * such as the name of the task and status.","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"yorklim"},"content":" * @return the string representing the task to be printed","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"yorklim"},"content":" public String taskInfo() {","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"yorklim"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"yorklim"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"yorklim"},"content":" output +\u003d \"[X]\";","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"yorklim"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"yorklim"},"content":" output +\u003d \"[ ]\";","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"yorklim"},"content":" return output + \" \" + name;","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"yorklim"},"content":" * Returns a string to be printed to inform the user that the task has been marked. Updates the isDone variable in","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"yorklim"},"content":" * the Task object to true as well.","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"yorklim"},"content":" * @return the string informing user that task has been marked to be printed","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"yorklim"},"content":" * @throws DukeCannotBeMarked if isDone is false","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"yorklim"},"content":" public String mark() throws DukeCannotBeMarked {","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"yorklim"},"content":" if (isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":90,"author":{"gitId":"yorklim"},"content":" throw new DukeCannotBeMarked();","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"yorklim"},"content":" isDone \u003d true;","lastModifiedDate":"2024-02-02"},{"lineNumber":93,"author":{"gitId":"yorklim"},"content":" return \"Nice! I\u0027ve marked this task as done:\" + this.taskInfo();","lastModifiedDate":"2024-02-02"},{"lineNumber":94,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"yorklim"},"content":" * Returns a string to be printed to inform the user that the task has been unmarked. Updates the isDone variable in","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"yorklim"},"content":" * the Task object to false as well.","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"yorklim"},"content":" * @return the string informing user that task has been unmarked to be printed","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"yorklim"},"content":" * @throws DukeCannotBeUnmarked if isDone is false","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"yorklim"},"content":" public String unmark() throws DukeCannotBeUnmarked {","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"yorklim"},"content":" if (!isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"yorklim"},"content":" throw new DukeCannotBeUnmarked();","lastModifiedDate":"2024-02-02"},{"lineNumber":104,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":105,"author":{"gitId":"yorklim"},"content":" isDone \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":106,"author":{"gitId":"yorklim"},"content":" return \"OK, I\u0027ve marked this task as not done yet:\" + this.taskInfo();","lastModifiedDate":"2024-02-02"},{"lineNumber":107,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":108}},{"path":"src/main/java/duke/task/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.task;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" * Represents a ToDo which is a type of Task","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"public class ToDos extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" * Constructs a ToDo object with the specified name and mark whether it is done.","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" * @param name The name of the ToDo","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" * @param status The status of the ToDo","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" public ToDos(String name, Boolean status) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" super(name, status);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" * @InheritDoc Includes task type ToDos to string.","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"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 \"T \" + super.saveOutput();","lastModifiedDate":"2024-01-30"},{"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":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" public String printMatch(String match) {","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" if (super.contains(match)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" return taskInfo();","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" return \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" * @InheritDoc Includes task type ToDos to string.","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" public String taskInfo() {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" output +\u003d \"[T]\";","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" return output + super.taskInfo() + System.lineSeparator();","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":41}},{"path":"src/main/java/duke/tasklist/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.tasklist;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeTaskNotFound;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import duke.task.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" * A List that is used to contain the Tasks inputted by the user.","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"public class TaskList {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" public TaskList() {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" * Constructs a TaskList with the given tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" * @param saveFile An ArrayList containing the Tasks from previous usage","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" public TaskList(ArrayList\u003cTask\u003e saveFile) {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" list \u003d saveFile;","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" * Returns a string to be printed which indicates that the adding of the new Task to the TaskList was successful.","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" * Adds the new task into the list as well.","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" * @param newTask The task to be added into the TaskList","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" * @return The string to be printed that indicates add was successful","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" public String add(Task newTask) {","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" list.add(newTask);","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" return \"Got it. I\u0027ve added this task:\" + System.lineSeparator() + newTask.taskInfo() + listStatus();","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" * Returns a string to be printed which contains all the String representation of the tasks in the TaskList.","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" * @return a string representation of all the task in the TaskList.","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":" public String list() {","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":" if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"yorklim"},"content":" return \"The list is empty\" + System.lineSeparator();","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"yorklim"},"content":" int index \u003d 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"yorklim"},"content":" String output \u003d \"Here are the tasks in your list\" + System.lineSeparator();","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"yorklim"},"content":" for (Task item : list) {","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"yorklim"},"content":" output \u003d output + index + \".\";","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"yorklim"},"content":" index++;","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"yorklim"},"content":" output +\u003d item.taskInfo();","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"yorklim"},"content":" return output;","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"yorklim"},"content":" * Returns a string to be printed which informs the user how many elements are in the TaskList.","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"yorklim"},"content":" * @return a string with the size of the TaskList","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"yorklim"},"content":" public String listStatus() {","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"yorklim"},"content":" int length \u003d list.size();","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"yorklim"},"content":" return \"Now you have \" + length + \" task\" + (length \u003e 1 ? \"s\" : \"\") + \" in the list.\" + System.lineSeparator();","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"yorklim"},"content":" * Returns a string to be printed which indicates that the deleting of task at index in TaskList was successful.","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"yorklim"},"content":" * Removes the task at index given from the list as well.","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"yorklim"},"content":" * @param index the index of the task to be deleted","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"yorklim"},"content":" * @return a string that indicates delete was successful","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"yorklim"},"content":" * @throws DukeException if index \u003e number of tasks","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"yorklim"},"content":" public String delete(int index) throws DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"yorklim"},"content":" Task removed \u003d list.remove(index - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"yorklim"},"content":" removed.taskInfo();","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"yorklim"},"content":" return \"Noted. I\u0027ve removed this duke.task:\" + System.lineSeparator() + listStatus();","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"yorklim"},"content":" } catch (IndexOutOfBoundsException e3) {","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"yorklim"},"content":" throw new DukeTaskNotFound(index);","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"yorklim"},"content":" * Returns a string to be printed which indicates that the marking of task at index in TaskList was successful.","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"yorklim"},"content":" * Marks the task at index given from the list as well.","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"yorklim"},"content":" * @param index the index of the task to be marked","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"yorklim"},"content":" * @return a string that indicates mark was successful","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"yorklim"},"content":" * @throws DukeException if index \u003e number of tasks or task was already marked","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"yorklim"},"content":" public String mark(int index) throws DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":94,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":95,"author":{"gitId":"yorklim"},"content":" Task task \u003d list.get(index - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":96,"author":{"gitId":"yorklim"},"content":" return task.mark();","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"yorklim"},"content":" } catch (IndexOutOfBoundsException e3) {","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"yorklim"},"content":" throw new DukeTaskNotFound(index);","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"yorklim"},"content":" * Returns a string to be printed which indicates that the unmarking of task at index in TaskList was successful.","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"yorklim"},"content":" * Unmarks the task at index given from the list as well.","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"yorklim"},"content":" * @param index the index of the task to be unmarked","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"yorklim"},"content":" * @return a string that indicates unmark was successful","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"yorklim"},"content":" * @throws DukeException if index \u003e number of tasks or task was already unmarked","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"yorklim"},"content":" public String unmark(int index) throws DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":110,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":111,"author":{"gitId":"yorklim"},"content":" Task task \u003d list.get(index - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":112,"author":{"gitId":"yorklim"},"content":" return task.unmark();","lastModifiedDate":"2024-02-02"},{"lineNumber":113,"author":{"gitId":"yorklim"},"content":" } catch (IndexOutOfBoundsException e3) {","lastModifiedDate":"2024-02-02"},{"lineNumber":114,"author":{"gitId":"yorklim"},"content":" throw new DukeTaskNotFound(index);","lastModifiedDate":"2024-02-02"},{"lineNumber":115,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":116,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":117,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":118,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"yorklim"},"content":" * Returns a string to be printed which represents the list of tasks which are occurring on the given date.","lastModifiedDate":"2024-02-03"},{"lineNumber":121,"author":{"gitId":"yorklim"},"content":" * @param date The date to check which tasks are occurring","lastModifiedDate":"2024-02-03"},{"lineNumber":122,"author":{"gitId":"yorklim"},"content":" * @return a string that represents the tasks occurring on the date","lastModifiedDate":"2024-02-03"},{"lineNumber":123,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":124,"author":{"gitId":"yorklim"},"content":" public String check(LocalDate date) {","lastModifiedDate":"2024-02-03"},{"lineNumber":125,"author":{"gitId":"yorklim"},"content":" String output \u003d String.format(\"Tasks on %s:\", date) + System.lineSeparator();","lastModifiedDate":"2024-02-02"},{"lineNumber":126,"author":{"gitId":"yorklim"},"content":" for (Task item : list) {","lastModifiedDate":"2024-02-02"},{"lineNumber":127,"author":{"gitId":"yorklim"},"content":" output +\u003d item.happenOn(date);","lastModifiedDate":"2024-02-02"},{"lineNumber":128,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":129,"author":{"gitId":"yorklim"},"content":" return output;","lastModifiedDate":"2024-02-02"},{"lineNumber":130,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":131,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":132,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":133,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":134,"author":{"gitId":"yorklim"},"content":" * Returns a String representation of the TaskList to be used for saving the task. The String will contain","lastModifiedDate":"2024-02-03"},{"lineNumber":135,"author":{"gitId":"yorklim"},"content":" * information such as the type, name, the status, dates of all the tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":136,"author":{"gitId":"yorklim"},"content":" * @return a string that represents the whole TaskList","lastModifiedDate":"2024-02-03"},{"lineNumber":137,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":138,"author":{"gitId":"yorklim"},"content":" public String saveFormat() {","lastModifiedDate":"2024-02-02"},{"lineNumber":139,"author":{"gitId":"yorklim"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":140,"author":{"gitId":"yorklim"},"content":" for (Task t: list) {","lastModifiedDate":"2024-02-02"},{"lineNumber":141,"author":{"gitId":"yorklim"},"content":" output +\u003d t.saveOutput();","lastModifiedDate":"2024-02-02"},{"lineNumber":142,"author":{"gitId":"yorklim"},"content":" output +\u003d System.lineSeparator();","lastModifiedDate":"2024-02-02"},{"lineNumber":143,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":144,"author":{"gitId":"yorklim"},"content":" return output;","lastModifiedDate":"2024-02-02"},{"lineNumber":145,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":146,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":147,"author":{"gitId":"yorklim"},"content":" public String find(String match) {","lastModifiedDate":"2024-02-03"},{"lineNumber":148,"author":{"gitId":"yorklim"},"content":" String output \u003d \"Here are the matching tasks in your list:\" + System.lineSeparator();","lastModifiedDate":"2024-02-03"},{"lineNumber":149,"author":{"gitId":"yorklim"},"content":" for (Task item : list) {","lastModifiedDate":"2024-02-03"},{"lineNumber":150,"author":{"gitId":"yorklim"},"content":" output +\u003d item.printMatch(match);","lastModifiedDate":"2024-02-03"},{"lineNumber":151,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":152,"author":{"gitId":"yorklim"},"content":" return output;","lastModifiedDate":"2024-02-03"},{"lineNumber":153,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":154,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":155,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":155}},{"path":"src/main/java/duke/ui/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.ui;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.io.PrintStream;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" * Read the inputs from the user and sends the outputs to the user.","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"public class Ui {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" /** The input source from the user. */","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" private final Scanner in;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" /** The output source to the user. */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" private final PrintStream out;","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" * Constructs the Ui object that will facilitate the interaction between the user and chatbot.","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" public Ui() {","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" in \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" out \u003d System.out;","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" * Prints the welcome message to the user.","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" public void greet() {","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" out.println(\"Hello! I\u0027m \" + \"NotDuke\");","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" out.println(\"What can I do for you?\");","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" * Returns the string inputted by the user into the input source.","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" * @return the user\u0027s input string","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" public String getUserCommand() {","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" String fullInputLine \u003d in.nextLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":" return fullInputLine;","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" * Prints the outputMessage to the output source.","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":" * @param outputMessage The output message to be printed to the user","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":" public void sendReply(String outputMessage) {","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"yorklim"},"content":" out.print(outputMessage);","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"yorklim"},"content":" * Prints the error message to the output source","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"yorklim"},"content":" * @param e The error that has occurred","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"yorklim"},"content":" public void showError(DukeException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"yorklim"},"content":" out.println(e);","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":58}},{"path":"src/test/java/duke/DukeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":4}},{"path":"src/test/java/duke/task/DeadlinesTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.task;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"public class DeadlinesTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" private LocalDateTime by \u003d LocalDateTime.of(2024, 1, 1, 0, 0);","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" private Deadlines test \u003d new Deadlines(\"Test\", by, false);","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" public void testSaveOutput() {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" assertEquals(test.saveOutput(), String.format(\"D | 0 | Test | %s\", by));","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" public void testTaskInfo() {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" assertEquals(test.taskInfo(), \"[D][ ] Test (by: Jan 1 2024, 0000hrs)\"","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" + System.lineSeparator());","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" public void testHappenOn() {","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" LocalDate withinDate1 \u003d LocalDate.of(2024, 1, 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" assertEquals(test.happenOn(withinDate1), \"[D][ ] Test (by: Jan 1 2024, 0000hrs)\" + System.lineSeparator());","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" LocalDate notWithinDate \u003d LocalDate.of(2024, 2, 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" assertEquals(test.happenOn(notWithinDate), \"\");","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":32}},{"path":"src/test/java/duke/task/EventsTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.task;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"public class EventsTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" private LocalDateTime from \u003d LocalDateTime.of(2024, 1, 1, 0, 0);","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" private LocalDateTime to \u003d LocalDateTime.of(2024, 1, 30, 23, 59);","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" private Events test \u003d new Events(\"Test\", from, to, false);","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" public void testSaveOutput() {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" assertEquals(test.saveOutput(), String.format(\"E | 0 | Test | %s/%s\", from, to));","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" public void testTaskInfo() {","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" assertEquals(test.taskInfo(), \"[E][ ] Test (from: Jan 1 2024, 0000hrs to: Jan 30 2024, 2359hrs)\"","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" + System.lineSeparator());","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" public void testHappenOn() {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" LocalDate withinDate1 \u003d LocalDate.of(2024, 1, 15);","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" assertEquals(test.happenOn(withinDate1), \"[E][ ] Test (from: Jan 1 2024, 0000hrs to: Jan 30 2024, 2359hrs)\"","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" + System.lineSeparator());","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" LocalDate withinDate2 \u003d LocalDate.of(2024, 1, 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" assertEquals(test.happenOn(withinDate2), \"[E][ ] Test (from: Jan 1 2024, 0000hrs to: Jan 30 2024, 2359hrs)\"","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" + System.lineSeparator());","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" LocalDate withinDate3 \u003d LocalDate.of(2024, 1, 30);","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" assertEquals(test.happenOn(withinDate3), \"[E][ ] Test (from: Jan 1 2024, 0000hrs to: Jan 30 2024, 2359hrs)\"","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" + System.lineSeparator());","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" LocalDate notWithinDate \u003d LocalDate.of(2024, 2, 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" assertEquals(test.happenOn(notWithinDate), \"\");","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":40}},{"path":"src/test/java/duke/task/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.task;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"public class TaskTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" private Task testUnmarked \u003d new Task(\"Test1\", false);","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" private Task testMarked \u003d new Task(\"Test2\", true);","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" public void testTaskInfo_unmarked() {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" assertEquals(testUnmarked.taskInfo(), \"[ ] Test1\");","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" public void testTaskInfo_marked() {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" assertEquals(testMarked.taskInfo(), \"[X] Test2\");","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" public void unmark_unmarked_exceptionThrown() {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" testUnmarked.unmark();","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" fail();","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" assertEquals(e.toString(), \"Huh?! Task is already unmarked!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" public void mark_marked_exceptionThrown() {","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" testMarked.mark();","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" fail();","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" assertEquals(e.toString(), \"Huh?! Task is already marked!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":" public void mark_unmarked_success() {","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":" assertEquals(testUnmarked.mark(), \"Nice! I\u0027ve marked this task as done:\" + testUnmarked.taskInfo());","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" fail();","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"yorklim"},"content":" public void unmark_marked_success() {","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"yorklim"},"content":" assertEquals(testMarked.unmark(), \"OK, I\u0027ve marked this task as not done yet:\" + testMarked.taskInfo());","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"yorklim"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"yorklim"},"content":" fail();","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"yorklim"},"content":" public void testSaveOutput() {","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"yorklim"},"content":" assertEquals(testUnmarked.saveOutput(), \"| 0 | Test1\");","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"yorklim"},"content":" assertEquals(testMarked.saveOutput(), \"| 1 | Test2\");","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":63}},{"path":"src/test/java/duke/task/ToDosTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.task;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"public class ToDosTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" private ToDos test \u003d new ToDos(\"Test\", false);","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" public void testSaveOutput() {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" assertEquals(test.saveOutput(), \"T | 0 | Test\");","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" public void testTaskInfo() {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" assertEquals(test.taskInfo(), \"[T][ ] Test\" + System.lineSeparator());","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":19}},{"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 duke.task:","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"[T][ ] read book","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"Now you have 1 duke.task in the list.","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"Bye. Hope to see you again soon!","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":6}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-02"},{"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":{"yorklim":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"# NotDuke","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"\u003e\"Your mind is for having ideas, not holding them.\" – David Aleen ([source](https://dansilvestre.com/productivity-quotes))","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"NotDuke frees your mind of having to remember things you need to do. It\u0027s,","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"- text-based","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"- easy to learn","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"- ~~FAST~~ *SUPER FAST* to use","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"All you need to do is,","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"1. download it from [here](https://github.com/yorklim/ip/releases).","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"1. double-click it.","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"1. add your tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":"1. let it manage your tasks for you :wink:","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":"And its **FREE**!","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":"Features:","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":"- [x] Managing tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":"- [ ] Managing deadlines (coming soon)","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":"- [ ] Reminders (coming soon)","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-06"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":"---","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":"If you are a Java programmer, you can use it to practice Java too. Here\u0027s the `main` method:","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":"public class Main {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" Application.launch(MainApp.class, args);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"yorklim":27,"-":6}},{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2024-02-02"},{"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":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":" mainClass.set(\"duke.Launcher\")","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":53,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"yorklim":17,"-":41}},{"path":"data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"D | 0 | a | 1111-11-11T11:11","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"T | 0 | 1","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"D | 0 | do work | 2024-01-01T16:00","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"E | 0 | school event | 2024-01-01T08:00/2024-01-04T20:00","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"T | 0 | work day","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"T | 1 | new task","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"yorklim":6}},{"path":"docs/README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"# NotDuke","lastModifiedDate":"2024-02-06"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"\u003e\"Your mind is for having ideas, not holding them.\" – David Aleen ([source](https://dansilvestre.com/productivity-quotes))","lastModifiedDate":"2024-02-06"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"NotDuke frees your mind of having to remember things you need to do. It\u0027s,","lastModifiedDate":"2024-02-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"- text-based","lastModifiedDate":"2024-02-06"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"- easy to learn","lastModifiedDate":"2024-02-06"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"- ~~FAST~~ *SUPER FAST* to use","lastModifiedDate":"2024-02-06"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"All you need to do is,","lastModifiedDate":"2024-02-06"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-17"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"1. download it from [here](https://github.com/yorklim/ip/releases).","lastModifiedDate":"2024-02-06"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"1. double-click it.","lastModifiedDate":"2024-02-06"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"1. add your tasks.","lastModifiedDate":"2024-02-06"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":"1. let it manage your tasks for you :wink:","lastModifiedDate":"2024-02-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":"And its **FREE**!","lastModifiedDate":"2024-02-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":"Features:","lastModifiedDate":"2024-02-06"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":"- [x] Managing tasks","lastModifiedDate":"2024-02-06"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":"- [ ] Managing deadlines (coming soon)","lastModifiedDate":"2024-02-06"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":"- [ ] Reminders (coming soon)","lastModifiedDate":"2024-02-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-29"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":"---","lastModifiedDate":"2024-02-06"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":"If you are a Java programmer, you can use it to practice Java too. Here\u0027s the `main` method:","lastModifiedDate":"2024-02-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2024-01-07"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":"public class Main {","lastModifiedDate":"2024-02-06"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-06"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" Application.launch(MainApp.class, args);","lastModifiedDate":"2024-02-06"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-06"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2024-01-07"}],"authorContributionMap":{"yorklim":23,"-":10}},{"path":"src/main/java/data/tasks.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"D | 0 | a | 1111-11-11T11:11","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"T | 0 | 1","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"D | 0 | do work | 2024-01-01T16:00","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"E | 0 | school event | 2024-01-01T08:00/2024-01-04T20:00","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"T | 0 | work day","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"T | 1 | new task","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"T | 0 | new test","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"yorklim":7}},{"path":"src/main/java/duke/DialogBox.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import java.util.Collections;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"import javafx.geometry.Pos;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"import javafx.scene.Node;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"import javafx.scene.image.ImageView;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" * An example of a custom control using FXML.","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" * This control represents a dialog box consisting of an ImageView to represent the speaker\u0027s face and a label","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" * containing text from the speaker.","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":"public class DialogBox extends HBox {","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" private Label name;","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" private Label dialog;","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" private ImageView displayPicture;","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" private DialogBox(String person, String text, Image img) {","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(MainWindow.class.getResource(\"/view/DialogBox.fxml\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" fxmlLoader.setController(this);","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" fxmlLoader.setRoot(this);","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" fxmlLoader.load();","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":" name.setText(person);","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":" dialog.setText(text);","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" displayPicture.setImage(img);","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":" * Flips the dialog box such that the ImageView is on the left and text on the right.","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"yorklim"},"content":" private void flip() {","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"yorklim"},"content":" ObservableList\u003cNode\u003e tmp \u003d FXCollections.observableArrayList(this.getChildren());","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"yorklim"},"content":" name.setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"yorklim"},"content":" dialog.setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"yorklim"},"content":" Collections.reverse(tmp);","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"yorklim"},"content":" getChildren().setAll(tmp);","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"yorklim"},"content":" setAlignment(Pos.TOP_LEFT);","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"yorklim"},"content":" public static DialogBox getUserDialog(String text, Image img) {","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"yorklim"},"content":" return new DialogBox(\"User\",text, img);","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"yorklim"},"content":" public static DialogBox getDukeDialog(String text, Image img) {","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"yorklim"},"content":" var db \u003d new DialogBox(\"NotDuke\", text, img);","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"yorklim"},"content":" db.flip();","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"yorklim"},"content":" return db;","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"yorklim":68}},{"path":"src/main/java/duke/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.command.Command;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.parser.Parser;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" private Storage storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" private TaskList tasks;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" public Duke(String saveFile) {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" storage \u003d new Storage(saveFile);","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" public String load() {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-30"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" tasks \u003d new TaskList(storage.load());","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" return \"Successfully loaded save file\";","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-01-23"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" return e.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" public String greet() {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" return \"Hello! I\u0027m notDuke\\nWhat can I do for you?\";","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" public String getResponse(String userInput) {","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-01-23"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" Command c \u003d Parser.parse(userInput);","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" return c.execute(tasks, storage);","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" return e.toString();","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":" public boolean isBye(String userInput) {","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" Command c \u003d Parser.parse(userInput);","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" return c.isExit();","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":" } catch (DukeException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"yorklim":46,"-":3}},{"path":"src/main/java/duke/Launcher.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"public class Launcher {","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" Application.launch(Main.class, args);","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"yorklim":9}},{"path":"src/main/java/duke/Main.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import javafx.application.Application;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import javafx.fxml.FXMLLoader;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import javafx.scene.Scene;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" * A GUI for Duke using FXML.","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"public class Main extends Application {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" private Duke duke \u003d new Duke(\"src/main/java/data/tasks.txt\");","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" public void start(Stage stage) {","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" FXMLLoader fxmlLoader \u003d new FXMLLoader(Main.class.getResource(\"/view/MainWindow.fxml\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" AnchorPane ap \u003d fxmlLoader.load();","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" Scene scene \u003d new Scene(ap);","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" stage.setScene(scene);","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().setDuke(duke);","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" fxmlLoader.\u003cMainWindow\u003egetController().startUp();","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" stage.show();","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" e.printStackTrace();","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"yorklim":32}},{"path":"src/main/java/duke/MainWindow.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import javafx.animation.PauseTransition;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import javafx.scene.control.ScrollPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import javafx.scene.control.TextField;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import javafx.scene.image.Image;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"import javafx.scene.layout.AnchorPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"import javafx.util.Duration;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"/**","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" * Controller for MainWindow. Provides the layout for the other controls.","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":"public class MainWindow extends AnchorPane {","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" private AnchorPane scenePane;","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" private ScrollPane scrollPane;","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" private VBox dialogContainer;","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" private TextField userInput;","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" private Button sendButton;","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" private Duke duke;","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" private Image userImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaUser.png\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" private Image dukeImage \u003d new Image(this.getClass().getResourceAsStream(\"/images/DaDuke.png\"));","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" public void initialize() {","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" scrollPane.vvalueProperty().bind(dialogContainer.heightProperty());","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":" public void setDuke(Duke d) {","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":" duke \u003d d;","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" public void startUp() {","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":" DialogBox.getDukeDialog(duke.greet(), dukeImage),","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":" DialogBox.getDukeDialog(duke.load(), dukeImage)","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"yorklim"},"content":" );","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"yorklim"},"content":" * Creates two dialog boxes, one echoing user input and the other containing Duke\u0027s reply and then appends them to","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"yorklim"},"content":" * the dialog container. Clears the user input after processing.","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"yorklim"},"content":" @FXML","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"yorklim"},"content":" private void handleUserInput() {","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"yorklim"},"content":" String input \u003d userInput.getText();","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"yorklim"},"content":" String response \u003d duke.getResponse(input);","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"yorklim"},"content":" dialogContainer.getChildren().addAll(","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"yorklim"},"content":" DialogBox.getUserDialog(input, userImage),","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"yorklim"},"content":" DialogBox.getDukeDialog(response, dukeImage)","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"yorklim"},"content":" );","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"yorklim"},"content":" userInput.clear();","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"yorklim"},"content":" if (duke.isBye(input)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"yorklim"},"content":" Stage s \u003d (Stage) scenePane.getScene().getWindow();","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"yorklim"},"content":" PauseTransition delay \u003d new PauseTransition(Duration.seconds(2));","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"yorklim"},"content":" delay.setOnFinished(event -\u003e s.close());","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"yorklim"},"content":" delay.play();","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"yorklim":72}},{"path":"src/main/java/duke/command/ByeCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"public class ByeCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" public String execute(TaskList tasks, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" storage.save(tasks);","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" return \"Bye. Hope to see you again soon!\";","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" return true;","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":17}},{"path":"src/main/java/duke/command/CheckCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeInvalidDateTimeFormat;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"public class CheckCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" private String inputs;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" public CheckCommand(String command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" inputs \u003d command;","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" public String execute(TaskList tasks, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" LocalDate date \u003d LocalDate.parse(inputs, DateTimeFormatter.ofPattern(\"d/M/yyyy\"));","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" return tasks.check(date);","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" } catch (DateTimeParseException e1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidDateTimeFormat(\"d/M/yyyy\");","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":30}},{"path":"src/main/java/duke/command/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"public abstract class Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" * Executes the command given the TaskList, Ui and Storage.","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" * @param tasks The current TaskList","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" * @param storage The Storage for the session","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" * @throws DukeException if there is an error executing the command","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" public abstract String execute(TaskList tasks, Storage storage) throws DukeException;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" * Returns a true if it is a Byecommand, false otherwise.","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" * @return true if command is a Byecommand, else false","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":24}},{"path":"src/main/java/duke/command/DeadlineCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeInvalidDateTimeFormat;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeMissingArgument;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"import duke.task.Deadlines;","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"public class DeadlineCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" private String inputs;","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" public DeadlineCommand(String command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" inputs \u003d command;","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" public String execute(TaskList tasks, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" String timeFormat \u003d \"d/M/yyyy HHmm\";","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" String[] values \u003d inputs.split(\" /by \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" LocalDateTime by \u003d LocalDateTime.parse(values[1], DateTimeFormatter.ofPattern(timeFormat));","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" return tasks.add(new Deadlines(values[0], by, false));","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" } catch (ArrayIndexOutOfBoundsException e1) {","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(2, \"deadline\");","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" } catch (DateTimeParseException e2) {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidDateTimeFormat(timeFormat);","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":36}},{"path":"src/main/java/duke/command/DeleteCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeInvalidArgument;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeMissingArgument;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" private String inputs;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" public DeleteCommand(String command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" inputs \u003d command;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" public String execute(TaskList tasks, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" if (inputs.isEmpty()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(1, \"delete\");","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" int index \u003d Integer.valueOf(inputs);","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" return tasks.delete(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidArgument(inputs);","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":30}},{"path":"src/main/java/duke/command/EventCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeMissingArgument;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"import duke.task.Events;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"public class EventCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" private String inputs;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" public EventCommand(String command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" inputs \u003d command;","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" public String execute(TaskList tasks, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" String timeFormat \u003d \"d/M/yyyy HHmm\";","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" String[] event \u003d inputs.split(\" /from \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" String[] time \u003d event[1].split(\" /to \");","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" LocalDateTime from \u003d LocalDateTime.parse(time[0], DateTimeFormatter.ofPattern(timeFormat));","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" LocalDateTime to \u003d LocalDateTime.parse(time[1], DateTimeFormatter.ofPattern(timeFormat));","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" return tasks.add(new Events(event[0], from, to, false));","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(3, \"event\");","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":34}},{"path":"src/main/java/duke/command/FindCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-03"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" private String inputs;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" public FindCommand(String command) {","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" inputs \u003d command;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" public String execute(TaskList tasks, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" return tasks.find(inputs);","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-03"}],"authorContributionMap":{"yorklim":20}},{"path":"src/main/java/duke/command/ListCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" public String execute(TaskList tasks, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" return tasks.list();","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":15}},{"path":"src/main/java/duke/command/MarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeInvalidArgument;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeMissingArgument;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" private String inputs;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" public MarkCommand(String command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" inputs \u003d command;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" public String execute(TaskList tasks, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" if (inputs.isEmpty()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(1, \"mark\");","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" int index \u003d Integer.valueOf(inputs);","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" return tasks.mark(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidArgument(inputs);","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":30}},{"path":"src/main/java/duke/command/TodoCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeMissingArgument;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.task.ToDos;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"public class TodoCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" private String inputs;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" public TodoCommand(String command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" inputs \u003d command;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" public String execute(TaskList tasks, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" if (inputs.isEmpty()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(1, \"todo\");","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" ToDos newTask \u003d new ToDos(inputs, false);","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" return tasks.add(newTask);","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":26}},{"path":"src/main/java/duke/command/UnmarkCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.command;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeInvalidArgument;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeMissingArgument;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.storage.Storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"public class UnmarkCommand extends Command {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" private String inputs;","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" public UnmarkCommand(String command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" inputs \u003d command;","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" public String execute(TaskList tasks, Storage storage) throws DukeException {","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" if (inputs.isEmpty()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" throw new DukeMissingArgument(1, \"unmark\");","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" int index \u003d Integer.valueOf(inputs);","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" return tasks.unmark(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" } catch (NumberFormatException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidArgument(inputs);","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" public boolean isExit() {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" return false;","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":30}},{"path":"src/main/java/duke/dukeexception/DukeCannotBeMarked.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeCannotBeMarked extends DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s Task is already marked!\", super.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":9}},{"path":"src/main/java/duke/dukeexception/DukeCannotBeUnmarked.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeCannotBeUnmarked extends DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s Task is already unmarked!\", super.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":9}},{"path":"src/main/java/duke/dukeexception/DukeException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeException extends Exception {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"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/duke/dukeexception/DukeInvalidArgument.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeInvalidArgument extends DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" private String args;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" public DukeInvalidArgument(String args) {","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" args \u003d args;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s The argument(s):\\\"%s\\\" you entered are invalid!\", super.toString(), args);","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":12}},{"path":"src/main/java/duke/dukeexception/DukeInvalidCommand.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeInvalidCommand extends DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" private String command;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" public DukeInvalidCommand(String command) {","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" this.command \u003d command;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s This is not a valid duke command: \\\"\" + command + \"\\\"\", super.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":12}},{"path":"src/main/java/duke/dukeexception/DukeInvalidDateTimeFormat.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeInvalidDateTimeFormat extends DukeException {","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" private String timeFormat;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" public DukeInvalidDateTimeFormat(String timeFormat) {","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" super();","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" this.timeFormat \u003d timeFormat;","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 toString() {","lastModifiedDate":"2024-01-30"},{"lineNumber":11,"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":12,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-30"}],"authorContributionMap":{"yorklim":13}},{"path":"src/main/java/duke/dukeexception/DukeMissingArgument.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeMissingArgument extends DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" private int need;","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" private String command;","lastModifiedDate":"2024-01-23"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" public DukeMissingArgument(int need, String command) {","lastModifiedDate":"2024-01-23"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" this.need \u003d need;","lastModifiedDate":"2024-01-23"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" this.command \u003d command;","lastModifiedDate":"2024-01-23"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s There are missing argument(s), %d argument(s) is needed for %s\",","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" super.toString(), need, command);","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":16}},{"path":"src/main/java/duke/dukeexception/DukeNoSaveFile.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeNoSaveFile extends DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s No save file could be found!\", super.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":8}},{"path":"src/main/java/duke/dukeexception/DukeSaveError.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeSaveError extends DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" public String toString() {","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" return String.format(\"%s Unable to save!\", super.toString());","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":8}},{"path":"src/main/java/duke/dukeexception/DukeTaskNotFound.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.dukeexception;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeTaskNotFound extends DukeException {","lastModifiedDate":"2024-01-23"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" private int index;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":" public DukeTaskNotFound(int index) {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" this.index \u003d index;","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 Task No. %d cannot be found!\", super.toString(), this.index);","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":13}},{"path":"src/main/java/duke/parser/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.parser;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import duke.command.ByeCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import duke.command.CheckCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.command.Command;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.command.DeadlineCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.command.DeleteCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import duke.command.EventCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"import duke.command.FindCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"import duke.command.ListCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"import duke.command.MarkCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"import duke.command.TodoCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"import duke.command.UnmarkCommand;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeInvalidCommand;","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":"public class Parser {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" * Returns the corresponding command given the input string.","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" * @param fullCommand the String command to be parsed","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" * @return the command corresponding to the string","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" * @throws DukeInvalidCommand if string is not a valid command","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" public static Command parse(String fullCommand) throws DukeInvalidCommand {","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" String[] input \u003d fullCommand.split(\" \", 2);","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" String command \u003d input[0];","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" if (command.equals(\"bye\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" return new ByeCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"list\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" return new ListCommand();","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"unmark\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" return new UnmarkCommand(input[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"mark\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" return new MarkCommand(input[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"todo\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" return new TodoCommand(input[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"deadline\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" return new DeadlineCommand(input[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"event\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" return new EventCommand(input[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"delete\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":" return new DeleteCommand(input[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"check\")) {","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" return new CheckCommand(input[1]);","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" } else if (command.equals(\"find\")) {","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":" return new FindCommand(input[1]);","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":" } else {","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":" throw new DukeInvalidCommand(fullCommand);","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":50}},{"path":"src/main/java/duke/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.storage;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.io.File;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeNoSaveFile;","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeSaveError;","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"import duke.task.Deadlines;","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"import duke.task.Events;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"import duke.task.Task;","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":"import duke.task.ToDos;","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":"import duke.tasklist.TaskList;","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" * Facilitates the loading and saving of TaskList data during start up and closing of NotDuke.","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":"public class Storage {","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" /** The file to load and save to. */","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" private final File filePath;","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" * Constructs tne storage controller with the given String as the target file location.","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" * @param path The location to read and save the savefile","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" public Storage(String path) {","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" filePath \u003d new File(path);","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" * Returns an ArrayList containing all the tasks saved in the savefile.","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" * @return an ArrayList of tasks","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" * @throws DukeNoSaveFile if savefile cannot be found","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" public ArrayList\u003cTask\u003e load() throws DukeNoSaveFile {","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":" ArrayList\u003cTask\u003e saveFile \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":" Scanner s \u003d new Scanner(filePath);","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" while (s.hasNextLine()) {","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" String line \u003d s.nextLine();","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":" String[] inputs \u003d line.split(\" \\\\| \");","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":" boolean isDone \u003d !inputs[1].equals(\"0\");","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":" Task task;","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"yorklim"},"content":" switch (inputs[0]) {","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"yorklim"},"content":" case \"T\":","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"yorklim"},"content":" task \u003d new ToDos(inputs[2], isDone);","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"yorklim"},"content":" saveFile.add(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"yorklim"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"yorklim"},"content":" case \"D\":","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"yorklim"},"content":" task \u003d new Deadlines(inputs[2], LocalDateTime.parse(inputs[3]), isDone);","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"yorklim"},"content":" saveFile.add(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"yorklim"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"yorklim"},"content":" case \"E\":","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"yorklim"},"content":" String[] time \u003d inputs[3].split(\"/\");","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"yorklim"},"content":" task \u003d new Events(inputs[2], LocalDateTime.parse(time[0]),","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"yorklim"},"content":" LocalDateTime.parse(time[1]), isDone);","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"yorklim"},"content":" saveFile.add(task);","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"yorklim"},"content":" break;","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"yorklim"},"content":" default:","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"yorklim"},"content":" break;","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":67,"author":{"gitId":"yorklim"},"content":" return saveFile;","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"yorklim"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"yorklim"},"content":" throw new DukeNoSaveFile();","lastModifiedDate":"2024-02-02"},{"lineNumber":70,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":71,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"yorklim"},"content":" * Saves data of TaskList in this session to the target savefile location.","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"yorklim"},"content":" * @param taskList the TaskList of the session","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"yorklim"},"content":" * @throws DukeSaveError if file cannot be saved","lastModifiedDate":"2024-02-03"},{"lineNumber":77,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":78,"author":{"gitId":"yorklim"},"content":" public void save(TaskList taskList) throws DukeSaveError {","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"yorklim"},"content":" filePath.getParentFile().mkdirs();","lastModifiedDate":"2024-02-02"},{"lineNumber":81,"author":{"gitId":"yorklim"},"content":" FileWriter fw \u003d new FileWriter(filePath);","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"yorklim"},"content":" fw.write(taskList.saveFormat());","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"yorklim"},"content":" fw.close();","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"yorklim"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"yorklim"},"content":" throw new DukeSaveError();","lastModifiedDate":"2024-02-02"},{"lineNumber":86,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":87,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":88,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":88}},{"path":"src/main/java/duke/task/Deadlines.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.task;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" * Represents a Deadline which is a type of Task","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"public class Deadlines extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" /** The date the Deadline is due */","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" private LocalDateTime by;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" * Constructs a Deadline object with the specified name, the due date of the Deadline and mark whether it is done.","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" * @param name The name of the Deadline","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" * @param by The date in which the Deadline is due","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" * @param status The status of the Deadline","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" public Deadlines(String name, LocalDateTime by, Boolean status) {","lastModifiedDate":"2024-01-30"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" super(name, status);","lastModifiedDate":"2024-01-30"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" this.by \u003d by;","lastModifiedDate":"2024-01-23"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" public String happenOn(LocalDate date) {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" if (date.isEqual(by.toLocalDate())) {","lastModifiedDate":"2024-01-30"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" return taskInfo();","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" return \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" public String printMatch(String match) {","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" if (super.contains(match)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" return taskInfo();","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" return \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":" * @InheritDoc Includes task type Deadlines to string.","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":" public String saveOutput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":" return \"D \" + super.saveOutput() + String.format(\" | %s\", by);","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":48,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":49,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"yorklim"},"content":" * @InheritDoc Includes task type Deadlines to string.","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":53,"author":{"gitId":"yorklim"},"content":" public String taskInfo() {","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"yorklim"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"yorklim"},"content":" output +\u003d \"[D]\";","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"yorklim"},"content":" output +\u003d super.taskInfo();","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"yorklim"},"content":" return output + \" (by: \" + by.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, HHmm\")) + \"hrs)\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":59,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":59}},{"path":"src/main/java/duke/task/Events.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.task;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-01-30"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-01-30"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-01-30"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" * Represents an Event which is a type of Task","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"public class Events extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" /** The start date and time of the Event */","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" private LocalDateTime from;","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" /** The end date and time of the Event */","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" private LocalDateTime to;","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" * Constructs a Event object with the specified name, the start and end date of the Event and mark whether it is","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" * done.","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" * @param name The name of the Event","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" * @param from The start date and time of the Event","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" * @param to The end date and time of the Event","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" * @param status The status of the Event","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" public Events(String name, LocalDateTime from, LocalDateTime to, Boolean status) {","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" super(name, status);","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" this.from \u003d from;","lastModifiedDate":"2024-01-23"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" this.to \u003d to;","lastModifiedDate":"2024-01-23"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" public String happenOn(LocalDate date) {","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" if ((date.isAfter(from.toLocalDate()) \u0026\u0026 date.isBefore(to.toLocalDate()))","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" || date.isEqual(from.toLocalDate()) || date.isEqual(to.toLocalDate())) {","lastModifiedDate":"2024-01-30"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" return taskInfo();","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" return \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":" * @InheritDoc Includes task type Events, from date and to date to string.","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":" public String printMatch(String match) {","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":" if (super.contains(match)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":" return taskInfo();","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"yorklim"},"content":" return \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-30"},{"lineNumber":53,"author":{"gitId":"yorklim"},"content":" public String saveOutput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":54,"author":{"gitId":"yorklim"},"content":" return \"E \" + super.saveOutput() + String.format(\" | %s/%s\", from, to);","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-02-03"},{"lineNumber":58,"author":{"gitId":"yorklim"},"content":" * @InheritDoc Includes task type Events, from date and to date to string.","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":61,"author":{"gitId":"yorklim"},"content":" public String taskInfo() {","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"yorklim"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"yorklim"},"content":" output +\u003d \"[E]\";","lastModifiedDate":"2024-02-02"},{"lineNumber":64,"author":{"gitId":"yorklim"},"content":" output +\u003d super.taskInfo();","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"yorklim"},"content":" return output + \" (from: \" + from.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, HHmm\")) + \"hrs to: \"","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"yorklim"},"content":" + to.format(DateTimeFormatter.ofPattern(\"MMM d yyyy, HHmm\")) + \"hrs)\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":68,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":68}},{"path":"src/main/java/duke/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.task;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeCannotBeMarked;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeCannotBeUnmarked;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" * Represents a Task object added by the user. A \u003ccode\u003eTask\u003c/code\u003e object contains a String corresponding to the name of","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" * the task and a boolean to signify if the task is completed.","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":"public class Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" /** Name of the task */","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" protected String name;","lastModifiedDate":"2024-01-23"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" /** Status of the task */","lastModifiedDate":"2024-02-03"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" protected boolean isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" * Constructs a Task object with the specified name and mark whether it is done.","lastModifiedDate":"2024-02-03"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" * @param name The name of the task","lastModifiedDate":"2024-02-03"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" * @param isDone The status of the task","lastModifiedDate":"2024-02-03"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" public Task(String name, Boolean isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" this.name \u003d name;","lastModifiedDate":"2024-01-23"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2024-01-30"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" * Returns a String representation of the task used for saving the task. The String will contain information such","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" * as the name of the task and the status.","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" * @return the string to be saved","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" public String saveOutput() {","lastModifiedDate":"2024-01-30"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" return String.format(\"| %d | %s\", isDone ? 1 : 0, name);","lastModifiedDate":"2024-01-30"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" * Returns a String representation of the task if task is occurring on the date given.","lastModifiedDate":"2024-02-03"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" * @param date the date to check if task was active","lastModifiedDate":"2024-02-03"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":" * @return the string representation of task if date is within task timeframe, or an empty string if it is not","lastModifiedDate":"2024-02-03"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" public String happenOn(LocalDate date) {","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" return \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":48,"author":{"gitId":"yorklim"},"content":" * Returns a String representation of the task if task name contains string.","lastModifiedDate":"2024-02-03"},{"lineNumber":49,"author":{"gitId":"yorklim"},"content":" * @param match the date to check if task was active","lastModifiedDate":"2024-02-03"},{"lineNumber":50,"author":{"gitId":"yorklim"},"content":" * @return the string representation of task if string is within task name, or an empty string if it is not","lastModifiedDate":"2024-02-03"},{"lineNumber":51,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":52,"author":{"gitId":"yorklim"},"content":" public String printMatch(String match) {","lastModifiedDate":"2024-02-03"},{"lineNumber":53,"author":{"gitId":"yorklim"},"content":" return \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":54,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":55,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":56,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":57,"author":{"gitId":"yorklim"},"content":" * Returns true if the name contains the string given, false otherwise","lastModifiedDate":"2024-02-03"},{"lineNumber":58,"author":{"gitId":"yorklim"},"content":" * @param match string to be checked","lastModifiedDate":"2024-02-03"},{"lineNumber":59,"author":{"gitId":"yorklim"},"content":" * @return true if name contains string, false otherwise","lastModifiedDate":"2024-02-03"},{"lineNumber":60,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"yorklim"},"content":" public boolean contains(String match) {","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"yorklim"},"content":" return name.contains(match);","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":65,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":66,"author":{"gitId":"yorklim"},"content":" * Returns a String representation to be printed out to display for the user. The String will contain information","lastModifiedDate":"2024-02-03"},{"lineNumber":67,"author":{"gitId":"yorklim"},"content":" * such as the name of the task and status.","lastModifiedDate":"2024-02-03"},{"lineNumber":68,"author":{"gitId":"yorklim"},"content":" * @return the string representing the task to be printed","lastModifiedDate":"2024-02-03"},{"lineNumber":69,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"yorklim"},"content":" public String taskInfo() {","lastModifiedDate":"2024-02-02"},{"lineNumber":72,"author":{"gitId":"yorklim"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":73,"author":{"gitId":"yorklim"},"content":" if (isDone) {","lastModifiedDate":"2024-01-30"},{"lineNumber":74,"author":{"gitId":"yorklim"},"content":" output +\u003d \"[X]\";","lastModifiedDate":"2024-02-02"},{"lineNumber":75,"author":{"gitId":"yorklim"},"content":" } else {","lastModifiedDate":"2024-01-23"},{"lineNumber":76,"author":{"gitId":"yorklim"},"content":" output +\u003d \"[ ]\";","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":78,"author":{"gitId":"yorklim"},"content":" return output + \" \" + name;","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":80,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-23"},{"lineNumber":81,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":82,"author":{"gitId":"yorklim"},"content":" * Returns a string to be printed to inform the user that the task has been marked. Updates the isDone variable in","lastModifiedDate":"2024-02-03"},{"lineNumber":83,"author":{"gitId":"yorklim"},"content":" * the Task object to true as well.","lastModifiedDate":"2024-02-03"},{"lineNumber":84,"author":{"gitId":"yorklim"},"content":" * @return the string informing user that task has been marked to be printed","lastModifiedDate":"2024-02-03"},{"lineNumber":85,"author":{"gitId":"yorklim"},"content":" * @throws DukeCannotBeMarked if isDone is false","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"yorklim"},"content":" public String mark() throws DukeCannotBeMarked {","lastModifiedDate":"2024-02-02"},{"lineNumber":89,"author":{"gitId":"yorklim"},"content":" if (isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":90,"author":{"gitId":"yorklim"},"content":" throw new DukeCannotBeMarked();","lastModifiedDate":"2024-02-02"},{"lineNumber":91,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":92,"author":{"gitId":"yorklim"},"content":" isDone \u003d true;","lastModifiedDate":"2024-02-02"},{"lineNumber":93,"author":{"gitId":"yorklim"},"content":" return \"Nice! I\u0027ve marked this task as done:\" + this.taskInfo();","lastModifiedDate":"2024-02-02"},{"lineNumber":94,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":95,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":96,"author":{"gitId":"yorklim"},"content":" * Returns a string to be printed to inform the user that the task has been unmarked. Updates the isDone variable in","lastModifiedDate":"2024-02-03"},{"lineNumber":97,"author":{"gitId":"yorklim"},"content":" * the Task object to false as well.","lastModifiedDate":"2024-02-03"},{"lineNumber":98,"author":{"gitId":"yorklim"},"content":" * @return the string informing user that task has been unmarked to be printed","lastModifiedDate":"2024-02-03"},{"lineNumber":99,"author":{"gitId":"yorklim"},"content":" * @throws DukeCannotBeUnmarked if isDone is false","lastModifiedDate":"2024-02-03"},{"lineNumber":100,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":101,"author":{"gitId":"yorklim"},"content":" public String unmark() throws DukeCannotBeUnmarked {","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"yorklim"},"content":" if (!isDone) {","lastModifiedDate":"2024-02-02"},{"lineNumber":103,"author":{"gitId":"yorklim"},"content":" throw new DukeCannotBeUnmarked();","lastModifiedDate":"2024-02-02"},{"lineNumber":104,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":105,"author":{"gitId":"yorklim"},"content":" isDone \u003d false;","lastModifiedDate":"2024-02-02"},{"lineNumber":106,"author":{"gitId":"yorklim"},"content":" return \"OK, I\u0027ve marked this task as not done yet:\" + this.taskInfo();","lastModifiedDate":"2024-02-02"},{"lineNumber":107,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":108,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":108}},{"path":"src/main/java/duke/task/ToDos.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.task;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":" * Represents a ToDo which is a type of Task","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"public class ToDos extends Task {","lastModifiedDate":"2024-01-23"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" * Constructs a ToDo object with the specified name and mark whether it is done.","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" * @param name The name of the ToDo","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" * @param status The status of the ToDo","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" public ToDos(String name, Boolean status) {","lastModifiedDate":"2024-01-30"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" super(name, status);","lastModifiedDate":"2024-01-30"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-30"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-01-30"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" * @InheritDoc Includes task type ToDos to string.","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"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 \"T \" + super.saveOutput();","lastModifiedDate":"2024-01-30"},{"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":" @Override","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" public String printMatch(String match) {","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" if (super.contains(match)) {","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" return taskInfo();","lastModifiedDate":"2024-02-03"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" return \"\";","lastModifiedDate":"2024-02-03"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" * @InheritDoc Includes task type ToDos to string.","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" @Override","lastModifiedDate":"2024-01-23"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" public String taskInfo() {","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" output +\u003d \"[T]\";","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" return output + super.taskInfo() + \"\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-01-23"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":41}},{"path":"src/main/java/duke/tasklist/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.tasklist;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-03"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeException;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"import duke.dukeexception.DukeTaskNotFound;","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import duke.task.Task;","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"/**","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" * A List that is used to contain the Tasks inputted by the user.","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"public class TaskList {","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" private ArrayList\u003cTask\u003e list;","lastModifiedDate":"2024-02-03"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" * Constructs an empty TaskList.","lastModifiedDate":"2024-02-03"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" public TaskList() {","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" list \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" * Constructs a TaskList with the given tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" * @param saveFile An ArrayList containing the Tasks from previous usage","lastModifiedDate":"2024-02-03"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" public TaskList(ArrayList\u003cTask\u003e saveFile) {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" list \u003d saveFile;","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" * Returns a string to be printed which indicates that the adding of the new Task to the TaskList was successful.","lastModifiedDate":"2024-02-03"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" * Adds the new task into the list as well.","lastModifiedDate":"2024-02-03"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" * @param newTask The task to be added into the TaskList","lastModifiedDate":"2024-02-03"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" * @return The string to be printed that indicates add was successful","lastModifiedDate":"2024-02-03"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" public String add(Task newTask) {","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" list.add(newTask);","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" return \"Got it. I\u0027ve added this task:\\n\" + newTask.taskInfo() + listStatus();","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" * Returns a string to be printed which contains all the String representation of the tasks in the TaskList.","lastModifiedDate":"2024-02-03"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" * @return a string representation of all the task in the TaskList.","lastModifiedDate":"2024-02-03"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":" public String list() {","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":" if (list.size() \u003d\u003d 0) {","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"yorklim"},"content":" return \"The list is empty\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"yorklim"},"content":" int index \u003d 1;","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"yorklim"},"content":" String output \u003d \"Here are the tasks in your list\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"yorklim"},"content":" for (Task item : list) {","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"yorklim"},"content":" output \u003d output + index + \".\";","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"yorklim"},"content":" index++;","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"yorklim"},"content":" output +\u003d item.taskInfo();","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"yorklim"},"content":" return output;","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":61,"author":{"gitId":"yorklim"},"content":" * Returns a string to be printed which informs the user how many elements are in the TaskList.","lastModifiedDate":"2024-02-03"},{"lineNumber":62,"author":{"gitId":"yorklim"},"content":" * @return a string with the size of the TaskList","lastModifiedDate":"2024-02-03"},{"lineNumber":63,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":64,"author":{"gitId":"yorklim"},"content":" public String listStatus() {","lastModifiedDate":"2024-02-02"},{"lineNumber":65,"author":{"gitId":"yorklim"},"content":" int length \u003d list.size();","lastModifiedDate":"2024-02-02"},{"lineNumber":66,"author":{"gitId":"yorklim"},"content":" return \"Now you have \" + length + \" task\" + (length \u003e 1 ? \"s\" : \"\") + \" in the list.\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":68,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":69,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":70,"author":{"gitId":"yorklim"},"content":" * Returns a string to be printed which indicates that the deleting of task at index in TaskList was successful.","lastModifiedDate":"2024-02-03"},{"lineNumber":71,"author":{"gitId":"yorklim"},"content":" * Removes the task at index given from the list as well.","lastModifiedDate":"2024-02-03"},{"lineNumber":72,"author":{"gitId":"yorklim"},"content":" * @param index the index of the task to be deleted","lastModifiedDate":"2024-02-03"},{"lineNumber":73,"author":{"gitId":"yorklim"},"content":" * @return a string that indicates delete was successful","lastModifiedDate":"2024-02-03"},{"lineNumber":74,"author":{"gitId":"yorklim"},"content":" * @throws DukeException if index \u003e number of tasks","lastModifiedDate":"2024-02-03"},{"lineNumber":75,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":76,"author":{"gitId":"yorklim"},"content":" public String delete(int index) throws DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":77,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":78,"author":{"gitId":"yorklim"},"content":" Task removed \u003d list.remove(index - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":79,"author":{"gitId":"yorklim"},"content":" removed.taskInfo();","lastModifiedDate":"2024-02-02"},{"lineNumber":80,"author":{"gitId":"yorklim"},"content":" return \"Noted. I\u0027ve removed this duke.task:\\n\" + listStatus();","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"yorklim"},"content":" } catch (IndexOutOfBoundsException e3) {","lastModifiedDate":"2024-02-02"},{"lineNumber":82,"author":{"gitId":"yorklim"},"content":" throw new DukeTaskNotFound(index);","lastModifiedDate":"2024-02-02"},{"lineNumber":83,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":84,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":85,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":86,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":87,"author":{"gitId":"yorklim"},"content":" * Returns a string to be printed which indicates that the marking of task at index in TaskList was successful.","lastModifiedDate":"2024-02-03"},{"lineNumber":88,"author":{"gitId":"yorklim"},"content":" * Marks the task at index given from the list as well.","lastModifiedDate":"2024-02-03"},{"lineNumber":89,"author":{"gitId":"yorklim"},"content":" * @param index the index of the task to be marked","lastModifiedDate":"2024-02-03"},{"lineNumber":90,"author":{"gitId":"yorklim"},"content":" * @return a string that indicates mark was successful","lastModifiedDate":"2024-02-03"},{"lineNumber":91,"author":{"gitId":"yorklim"},"content":" * @throws DukeException if index \u003e number of tasks or task was already marked","lastModifiedDate":"2024-02-03"},{"lineNumber":92,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":93,"author":{"gitId":"yorklim"},"content":" public String mark(int index) throws DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":94,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":95,"author":{"gitId":"yorklim"},"content":" Task task \u003d list.get(index - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":96,"author":{"gitId":"yorklim"},"content":" return task.mark();","lastModifiedDate":"2024-02-02"},{"lineNumber":97,"author":{"gitId":"yorklim"},"content":" } catch (IndexOutOfBoundsException e3) {","lastModifiedDate":"2024-02-02"},{"lineNumber":98,"author":{"gitId":"yorklim"},"content":" throw new DukeTaskNotFound(index);","lastModifiedDate":"2024-02-02"},{"lineNumber":99,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":100,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":101,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":102,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":103,"author":{"gitId":"yorklim"},"content":" * Returns a string to be printed which indicates that the unmarking of task at index in TaskList was successful.","lastModifiedDate":"2024-02-03"},{"lineNumber":104,"author":{"gitId":"yorklim"},"content":" * Unmarks the task at index given from the list as well.","lastModifiedDate":"2024-02-03"},{"lineNumber":105,"author":{"gitId":"yorklim"},"content":" * @param index the index of the task to be unmarked","lastModifiedDate":"2024-02-03"},{"lineNumber":106,"author":{"gitId":"yorklim"},"content":" * @return a string that indicates unmark was successful","lastModifiedDate":"2024-02-03"},{"lineNumber":107,"author":{"gitId":"yorklim"},"content":" * @throws DukeException if index \u003e number of tasks or task was already unmarked","lastModifiedDate":"2024-02-03"},{"lineNumber":108,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":109,"author":{"gitId":"yorklim"},"content":" public String unmark(int index) throws DukeException {","lastModifiedDate":"2024-02-02"},{"lineNumber":110,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":111,"author":{"gitId":"yorklim"},"content":" Task task \u003d list.get(index - 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":112,"author":{"gitId":"yorklim"},"content":" return task.unmark();","lastModifiedDate":"2024-02-02"},{"lineNumber":113,"author":{"gitId":"yorklim"},"content":" } catch (IndexOutOfBoundsException e3) {","lastModifiedDate":"2024-02-02"},{"lineNumber":114,"author":{"gitId":"yorklim"},"content":" throw new DukeTaskNotFound(index);","lastModifiedDate":"2024-02-02"},{"lineNumber":115,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":116,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":117,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":118,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":119,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":120,"author":{"gitId":"yorklim"},"content":" * Returns a string to be printed which represents the list of tasks which are occurring on the given date.","lastModifiedDate":"2024-02-03"},{"lineNumber":121,"author":{"gitId":"yorklim"},"content":" * @param date The date to check which tasks are occurring","lastModifiedDate":"2024-02-03"},{"lineNumber":122,"author":{"gitId":"yorklim"},"content":" * @return a string that represents the tasks occurring on the date","lastModifiedDate":"2024-02-03"},{"lineNumber":123,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":124,"author":{"gitId":"yorklim"},"content":" public String check(LocalDate date) {","lastModifiedDate":"2024-02-03"},{"lineNumber":125,"author":{"gitId":"yorklim"},"content":" String output \u003d String.format(\"Tasks on %s:\\n\", date);","lastModifiedDate":"2024-02-07"},{"lineNumber":126,"author":{"gitId":"yorklim"},"content":" for (Task item : list) {","lastModifiedDate":"2024-02-02"},{"lineNumber":127,"author":{"gitId":"yorklim"},"content":" output +\u003d item.happenOn(date);","lastModifiedDate":"2024-02-02"},{"lineNumber":128,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":129,"author":{"gitId":"yorklim"},"content":" return output;","lastModifiedDate":"2024-02-02"},{"lineNumber":130,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":131,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":132,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":133,"author":{"gitId":"yorklim"},"content":" /**","lastModifiedDate":"2024-02-03"},{"lineNumber":134,"author":{"gitId":"yorklim"},"content":" * Returns a String representation of the TaskList to be used for saving the task. The String will contain","lastModifiedDate":"2024-02-03"},{"lineNumber":135,"author":{"gitId":"yorklim"},"content":" * information such as the type, name, the status, dates of all the tasks.","lastModifiedDate":"2024-02-03"},{"lineNumber":136,"author":{"gitId":"yorklim"},"content":" * @return a string that represents the whole TaskList","lastModifiedDate":"2024-02-03"},{"lineNumber":137,"author":{"gitId":"yorklim"},"content":" */","lastModifiedDate":"2024-02-03"},{"lineNumber":138,"author":{"gitId":"yorklim"},"content":" public String saveFormat() {","lastModifiedDate":"2024-02-02"},{"lineNumber":139,"author":{"gitId":"yorklim"},"content":" String output \u003d \"\";","lastModifiedDate":"2024-02-02"},{"lineNumber":140,"author":{"gitId":"yorklim"},"content":" for (Task t: list) {","lastModifiedDate":"2024-02-02"},{"lineNumber":141,"author":{"gitId":"yorklim"},"content":" output +\u003d t.saveOutput();","lastModifiedDate":"2024-02-02"},{"lineNumber":142,"author":{"gitId":"yorklim"},"content":" output +\u003d \"\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":143,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":144,"author":{"gitId":"yorklim"},"content":" return output;","lastModifiedDate":"2024-02-02"},{"lineNumber":145,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":146,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":147,"author":{"gitId":"yorklim"},"content":" public String find(String match) {","lastModifiedDate":"2024-02-03"},{"lineNumber":148,"author":{"gitId":"yorklim"},"content":" String output \u003d \"Here are the matching tasks in your list:\\n\";","lastModifiedDate":"2024-02-07"},{"lineNumber":149,"author":{"gitId":"yorklim"},"content":" for (Task item : list) {","lastModifiedDate":"2024-02-03"},{"lineNumber":150,"author":{"gitId":"yorklim"},"content":" output +\u003d item.printMatch(match);","lastModifiedDate":"2024-02-03"},{"lineNumber":151,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":152,"author":{"gitId":"yorklim"},"content":" return output;","lastModifiedDate":"2024-02-03"},{"lineNumber":153,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":154,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-03"},{"lineNumber":155,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":155}},{"path":"src/main/resources/view/DialogBox.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"\u003c?import javafx.scene.text.Font?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":"\u003cfx:root alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefWidth\u003d\"400.0\" type\u003d\"javafx.scene.layout.HBox\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" \u003cVBox alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" prefHeight\u003d\"99.0\" prefWidth\u003d\"290.0\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" \u003cLabel fx:id\u003d\"name\" alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" text\u003d\"Label\" wrapText\u003d\"true\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" \u003cfont\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" \u003cFont name\u003d\"System Bold\" size\u003d\"12.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" \u003c/font\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" \u003cScrollPane fitToWidth\u003d\"true\" hbarPolicy\u003d\"NEVER\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" \u003cLabel fx:id\u003d\"dialog\" alignment\u003d\"TOP_RIGHT\" maxHeight\u003d\"1.7976931348623157E308\" maxWidth\u003d\"1.7976931348623157E308\" text\u003d\"Label\" wrapText\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" \u003cImageView fx:id\u003d\"displayPicture\" fitHeight\u003d\"99.0\" fitWidth\u003d\"99.0\" pickOnBounds\u003d\"true\" preserveRatio\u003d\"true\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" \u003cInsets bottom\u003d\"15.0\" left\u003d\"5.0\" right\u003d\"5.0\" top\u003d\"15.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"yorklim":32}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"fxml","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"\u003c?import javafx.scene.control.ScrollPane?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"\u003c?import javafx.scene.layout.AnchorPane?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"\u003cAnchorPane fx:id\u003d\"scenePane\" maxHeight\u003d\"-Infinity\" maxWidth\u003d\"-Infinity\" minHeight\u003d\"-Infinity\" minWidth\u003d\"-Infinity\" prefHeight\u003d\"600.0\" prefWidth\u003d\"400.0\" xmlns\u003d\"http://javafx.com/javafx/21\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" fx:controller\u003d\"duke.MainWindow\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" \u003cTextField fx:id\u003d\"userInput\" layoutY\u003d\"558.0\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"324.0\" promptText\u003d\"Input Command\" AnchorPane.bottomAnchor\u003d\"1.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" \u003cButton fx:id\u003d\"sendButton\" layoutX\u003d\"324.0\" layoutY\u003d\"558.0\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleUserInput\" prefHeight\u003d\"41.0\" prefWidth\u003d\"76.0\" text\u003d\"Send\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" \u003cScrollPane fx:id\u003d\"scrollPane\" hbarPolicy\u003d\"NEVER\" hvalue\u003d\"1.0\" prefHeight\u003d\"557.0\" prefWidth\u003d\"400.0\" vvalue\u003d\"1.0\"\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" \u003ccontent\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" \u003cVBox fx:id\u003d\"dialogContainer\" prefHeight\u003d\"552.0\" prefWidth\u003d\"388.0\" /\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" \u003c/content\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" \u003c/ScrollPane\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":"\u003c/AnchorPane\u003e","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"yorklim":19}},{"path":"src/test/java/duke/DukeTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"public class DukeTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":4}},{"path":"src/test/java/duke/task/DeadlinesTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.task;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-03"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"public class DeadlinesTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" private LocalDateTime by \u003d LocalDateTime.of(2024, 1, 1, 0, 0);","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" private Deadlines test \u003d new Deadlines(\"Test\", by, false);","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" public void testSaveOutput() {","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" assertEquals(test.saveOutput(), String.format(\"D | 0 | Test | %s\", by));","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" public void testTaskInfo() {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" assertEquals(test.taskInfo(), \"[D][ ] Test (by: Jan 1 2024, 0000hrs)\"","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" + System.lineSeparator());","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" public void testHappenOn() {","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" LocalDate withinDate1 \u003d LocalDate.of(2024, 1, 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" assertEquals(test.happenOn(withinDate1), \"[D][ ] Test (by: Jan 1 2024, 0000hrs)\" + System.lineSeparator());","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" LocalDate notWithinDate \u003d LocalDate.of(2024, 2, 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" assertEquals(test.happenOn(notWithinDate), \"\");","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":32}},{"path":"src/test/java/duke/task/EventsTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.task;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-02-02"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":"public class EventsTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" private LocalDateTime from \u003d LocalDateTime.of(2024, 1, 1, 0, 0);","lastModifiedDate":"2024-02-03"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" private LocalDateTime to \u003d LocalDateTime.of(2024, 1, 30, 23, 59);","lastModifiedDate":"2024-02-03"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" private Events test \u003d new Events(\"Test\", from, to, false);","lastModifiedDate":"2024-02-03"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" public void testSaveOutput() {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" assertEquals(test.saveOutput(), String.format(\"E | 0 | Test | %s/%s\", from, to));","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" public void testTaskInfo() {","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" assertEquals(test.taskInfo(), \"[E][ ] Test (from: Jan 1 2024, 0000hrs to: Jan 30 2024, 2359hrs)\"","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" + System.lineSeparator());","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" public void testHappenOn() {","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":" LocalDate withinDate1 \u003d LocalDate.of(2024, 1, 15);","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" assertEquals(test.happenOn(withinDate1), \"[E][ ] Test (from: Jan 1 2024, 0000hrs to: Jan 30 2024, 2359hrs)\"","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" + System.lineSeparator());","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" LocalDate withinDate2 \u003d LocalDate.of(2024, 1, 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" assertEquals(test.happenOn(withinDate2), \"[E][ ] Test (from: Jan 1 2024, 0000hrs to: Jan 30 2024, 2359hrs)\"","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" + System.lineSeparator());","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" LocalDate withinDate3 \u003d LocalDate.of(2024, 1, 30);","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" assertEquals(test.happenOn(withinDate3), \"[E][ ] Test (from: Jan 1 2024, 0000hrs to: Jan 30 2024, 2359hrs)\"","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" + System.lineSeparator());","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" LocalDate notWithinDate \u003d LocalDate.of(2024, 2, 1);","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":" assertEquals(test.happenOn(notWithinDate), \"\");","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":40}},{"path":"src/test/java/duke/task/TaskTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.task;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":"public class TaskTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":" private Task testUnmarked \u003d new Task(\"Test1\", false);","lastModifiedDate":"2024-02-03"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" private Task testMarked \u003d new Task(\"Test2\", true);","lastModifiedDate":"2024-02-03"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" public void testTaskInfo_unmarked() {","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" assertEquals(testUnmarked.taskInfo(), \"[ ] Test1\");","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" public void testTaskInfo_marked() {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" assertEquals(testMarked.taskInfo(), \"[X] Test2\");","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":20,"author":{"gitId":"yorklim"},"content":" public void unmark_unmarked_exceptionThrown() {","lastModifiedDate":"2024-02-02"},{"lineNumber":21,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":22,"author":{"gitId":"yorklim"},"content":" testUnmarked.unmark();","lastModifiedDate":"2024-02-02"},{"lineNumber":23,"author":{"gitId":"yorklim"},"content":" fail();","lastModifiedDate":"2024-02-02"},{"lineNumber":24,"author":{"gitId":"yorklim"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":25,"author":{"gitId":"yorklim"},"content":" assertEquals(e.toString(), \"Huh?! Task is already unmarked!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":26,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":27,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":28,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":29,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":30,"author":{"gitId":"yorklim"},"content":" public void mark_marked_exceptionThrown() {","lastModifiedDate":"2024-02-02"},{"lineNumber":31,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":32,"author":{"gitId":"yorklim"},"content":" testMarked.mark();","lastModifiedDate":"2024-02-02"},{"lineNumber":33,"author":{"gitId":"yorklim"},"content":" fail();","lastModifiedDate":"2024-02-02"},{"lineNumber":34,"author":{"gitId":"yorklim"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":35,"author":{"gitId":"yorklim"},"content":" assertEquals(e.toString(), \"Huh?! Task is already marked!\");","lastModifiedDate":"2024-02-02"},{"lineNumber":36,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":37,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":38,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":39,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":40,"author":{"gitId":"yorklim"},"content":" public void mark_unmarked_success() {","lastModifiedDate":"2024-02-02"},{"lineNumber":41,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":42,"author":{"gitId":"yorklim"},"content":" assertEquals(testUnmarked.mark(), \"Nice! I\u0027ve marked this task as done:\" + testUnmarked.taskInfo());","lastModifiedDate":"2024-02-02"},{"lineNumber":43,"author":{"gitId":"yorklim"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":44,"author":{"gitId":"yorklim"},"content":" fail();","lastModifiedDate":"2024-02-02"},{"lineNumber":45,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":46,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":47,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":48,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":49,"author":{"gitId":"yorklim"},"content":" public void unmark_marked_success() {","lastModifiedDate":"2024-02-02"},{"lineNumber":50,"author":{"gitId":"yorklim"},"content":" try {","lastModifiedDate":"2024-02-02"},{"lineNumber":51,"author":{"gitId":"yorklim"},"content":" assertEquals(testMarked.unmark(), \"OK, I\u0027ve marked this task as not done yet:\" + testMarked.taskInfo());","lastModifiedDate":"2024-02-02"},{"lineNumber":52,"author":{"gitId":"yorklim"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-02"},{"lineNumber":53,"author":{"gitId":"yorklim"},"content":" fail();","lastModifiedDate":"2024-02-02"},{"lineNumber":54,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":55,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":56,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":57,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":58,"author":{"gitId":"yorklim"},"content":" public void testSaveOutput() {","lastModifiedDate":"2024-02-02"},{"lineNumber":59,"author":{"gitId":"yorklim"},"content":" assertEquals(testUnmarked.saveOutput(), \"| 0 | Test1\");","lastModifiedDate":"2024-02-02"},{"lineNumber":60,"author":{"gitId":"yorklim"},"content":" assertEquals(testMarked.saveOutput(), \"| 1 | Test2\");","lastModifiedDate":"2024-02-02"},{"lineNumber":61,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":62,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"},{"lineNumber":63,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":63}},{"path":"src/test/java/duke/task/ToDosTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yorklim"},"content":"package duke.task;","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yorklim"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-02-03"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-03"},{"lineNumber":7,"author":{"gitId":"yorklim"},"content":"public class ToDosTest {","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yorklim"},"content":" private ToDos test \u003d new ToDos(\"Test\", false);","lastModifiedDate":"2024-02-03"},{"lineNumber":9,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yorklim"},"content":" public void testSaveOutput() {","lastModifiedDate":"2024-02-02"},{"lineNumber":12,"author":{"gitId":"yorklim"},"content":" assertEquals(test.saveOutput(), \"T | 0 | Test\");","lastModifiedDate":"2024-02-02"},{"lineNumber":13,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":14,"author":{"gitId":"yorklim"},"content":"","lastModifiedDate":"2024-02-02"},{"lineNumber":15,"author":{"gitId":"yorklim"},"content":" @Test","lastModifiedDate":"2024-02-02"},{"lineNumber":16,"author":{"gitId":"yorklim"},"content":" public void testTaskInfo() {","lastModifiedDate":"2024-02-02"},{"lineNumber":17,"author":{"gitId":"yorklim"},"content":" assertEquals(test.taskInfo(), \"[T][ ] Test\" + System.lineSeparator());","lastModifiedDate":"2024-02-02"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":" }","lastModifiedDate":"2024-02-02"},{"lineNumber":19,"author":{"gitId":"yorklim"},"content":"}","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yorklim":19}},{"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 duke.task:","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yorklim"},"content":"[T][ ] read book","lastModifiedDate":"2024-01-23"},{"lineNumber":5,"author":{"gitId":"yorklim"},"content":"Now you have 1 duke.task in the list.","lastModifiedDate":"2024-02-02"},{"lineNumber":6,"author":{"gitId":"yorklim"},"content":"Bye. Hope to see you again soon!","lastModifiedDate":"2024-01-23"}],"authorContributionMap":{"yorklim":6}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"yorklim"},"content":"java -classpath ..\\bin duke.Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-02"},{"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":{"yorklim":1,"-":20}}] diff --git a/yorklim_ip_master/commits.json b/yorklim_ip_master/commits.json index 4fe384ef..ec6e3e1d 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}}}]},{"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":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-02","commitResults":[{"hash":"52f5fe17c39fad1a957135f04c199b30f734c0c6","isMergeCommit":false,"messageTitle":"Add Level 7. Save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":90,"deletions":16}}},{"hash":"925c87b97ebb5e1e8ee5393eb2d05454b8009e21","isMergeCommit":false,"messageTitle":"Add Level 8. Dates and Times","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":6},"java":{"insertions":86,"deletions":15}}},{"hash":"516b036297c6495c62e616cd3a40888ac8419f3c","isMergeCommit":false,"messageTitle":"Add Level 7. Save","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":90,"deletions":16}}},{"hash":"8496473ab531b14cc1f8022e97a3f78be7517596","isMergeCommit":false,"messageTitle":"Add Level 8. Dates and Times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":6},"java":{"insertions":86,"deletions":15}}},{"hash":"7e98cbf055624edad0ad44de09d7653445978ab6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8df1ec324ee6f3953cd0a3f0d057622ed256aa8f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"366f5484dcb882a7b5856fb518d9bf3b3e3b6225","isMergeCommit":false,"messageTitle":"Add more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":476,"deletions":249}}},{"hash":"c61a414eb39945afcc7ba762e3f096d53dd5ec95","isMergeCommit":false,"messageTitle":"Move files to packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":390,"deletions":249},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"a167c29d580a81911664a02852cca2299fe9babe","isMergeCommit":true,"messageTitle":"Add gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"0c35c881a92e08bc7775ca681ecab127ee292870","isMergeCommit":false,"messageTitle":"Add JUnit tests for Task classes","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":164,"deletions":8}}},{"hash":"a39736e58bbc97f70012ff1ce8d781e97e501700","isMergeCommit":false,"messageTitle":"bug fix: Add line seperator after list command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-03","commitResults":[{"hash":"aefd0e3adaf3c74d1536668af249ce245cc5914e","isMergeCommit":false,"messageTitle":"Add JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":214,"deletions":5}}},{"hash":"7c879305dbf1cae9bb0b9d9c983fbc1a15e88eaf","isMergeCommit":true,"messageTitle":"Remerge branch-Level-7","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"57829ab828b71cb8ebe8ae270d4366d981bbd195","isMergeCommit":true,"messageTitle":"Remerge branch-Level-8","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9a30a6b692794826b3d78b4f35d3ec9e810ba105","isMergeCommit":false,"messageTitle":"Change Coding Standard","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2},"java":{"insertions":100,"deletions":91}}},{"hash":"61096b17e2a386d9b8c5110500c4bc504b0fbb43","isMergeCommit":false,"messageTitle":"Add Level 9. Find","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":64,"deletions":4}}},{"hash":"2042f7374641801997efb4cdb2bbcc2362d09fca","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c6f364417e22a8149e5e8080ea95fce9f3a4a73a","isMergeCommit":true,"messageTitle":"Fix branch-A-CodingStandard merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d4d234060e2cd837f172e05c842645a9e6692870","isMergeCommit":true,"messageTitle":"Fix branch-A-JavaDoc merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ccece922e7e985c42d6a87fb6630ad4dd1aa4c6e","isMergeCommit":false,"messageTitle":"Add javadoc to Task methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":3}}},{"hash":"7fc1c2c9876b275fda831735ea3b1767e84f1899","isMergeCommit":false,"messageTitle":"Remove leftover merge conflict tags","messageBody":"","tags":["Level-9","A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":3}}}]},{"date":"2024-02-06","commitResults":[{"hash":"393e2ecee9b7a935b6ad4c71edffbed46f6476a4","isMergeCommit":false,"messageTitle":"Update Readme.md and Add Checkstyle","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"md":{"insertions":23,"deletions":21}}},{"hash":"2dbfb98939fedab4659f7abb488e159301c28889","isMergeCommit":false,"messageTitle":"Update Readme.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":33,"deletions":24}}}]}]},"authorFileTypeContributionMap":{"yorklim":{"java":1240,"md":50,"fxml":0,"sh":0,"bat":1,"gradle":2,"txt":16}},"authorContributionVariance":{"yorklim":248484.3},"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":"","fileTypesAndContributionMap":{}}]},{"date":"2024-02-02","commitResults":[{"hash":"52f5fe17c39fad1a957135f04c199b30f734c0c6","isMergeCommit":false,"messageTitle":"Add Level 7. Save","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":90,"deletions":16}}},{"hash":"925c87b97ebb5e1e8ee5393eb2d05454b8009e21","isMergeCommit":false,"messageTitle":"Add Level 8. Dates and Times","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":6},"java":{"insertions":86,"deletions":15}}},{"hash":"516b036297c6495c62e616cd3a40888ac8419f3c","isMergeCommit":false,"messageTitle":"Add Level 7. Save","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"txt":{"insertions":6,"deletions":0},"java":{"insertions":90,"deletions":16}}},{"hash":"8496473ab531b14cc1f8022e97a3f78be7517596","isMergeCommit":false,"messageTitle":"Add Level 8. Dates and Times","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":6},"java":{"insertions":86,"deletions":15}}},{"hash":"7e98cbf055624edad0ad44de09d7653445978ab6","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8df1ec324ee6f3953cd0a3f0d057622ed256aa8f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-8\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"366f5484dcb882a7b5856fb518d9bf3b3e3b6225","isMergeCommit":false,"messageTitle":"Add more OOP","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"java":{"insertions":476,"deletions":249}}},{"hash":"c61a414eb39945afcc7ba762e3f096d53dd5ec95","isMergeCommit":false,"messageTitle":"Move files to packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":2},"java":{"insertions":390,"deletions":249},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"a167c29d580a81911664a02852cca2299fe9babe","isMergeCommit":true,"messageTitle":"Add gradle support","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{}},{"hash":"0c35c881a92e08bc7775ca681ecab127ee292870","isMergeCommit":false,"messageTitle":"Add JUnit tests for Task classes","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":1},"java":{"insertions":164,"deletions":8}}},{"hash":"a39736e58bbc97f70012ff1ce8d781e97e501700","isMergeCommit":false,"messageTitle":"bug fix: Add line seperator after list command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-03","commitResults":[{"hash":"aefd0e3adaf3c74d1536668af249ce245cc5914e","isMergeCommit":false,"messageTitle":"Add JavaDoc","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":214,"deletions":5}}},{"hash":"7c879305dbf1cae9bb0b9d9c983fbc1a15e88eaf","isMergeCommit":true,"messageTitle":"Remerge branch-Level-7","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"57829ab828b71cb8ebe8ae270d4366d981bbd195","isMergeCommit":true,"messageTitle":"Remerge branch-Level-8","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9a30a6b692794826b3d78b4f35d3ec9e810ba105","isMergeCommit":false,"messageTitle":"Change Coding Standard","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":0,"deletions":2},"java":{"insertions":100,"deletions":91}}},{"hash":"61096b17e2a386d9b8c5110500c4bc504b0fbb43","isMergeCommit":false,"messageTitle":"Add Level 9. Find","messageBody":"","fileTypesAndContributionMap":{"txt":{"insertions":1,"deletions":0},"java":{"insertions":64,"deletions":4}}},{"hash":"2042f7374641801997efb4cdb2bbcc2362d09fca","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-9\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c6f364417e22a8149e5e8080ea95fce9f3a4a73a","isMergeCommit":true,"messageTitle":"Fix branch-A-CodingStandard merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d4d234060e2cd837f172e05c842645a9e6692870","isMergeCommit":true,"messageTitle":"Fix branch-A-JavaDoc merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ccece922e7e985c42d6a87fb6630ad4dd1aa4c6e","isMergeCommit":false,"messageTitle":"Add javadoc to Task methods","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":3}}},{"hash":"7fc1c2c9876b275fda831735ea3b1767e84f1899","isMergeCommit":false,"messageTitle":"Remove leftover merge conflict tags","messageBody":"","tags":["Level-9","A-JavaDoc","A-CodingStandard"],"fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":3}}}]},{"date":"2024-02-06","commitResults":[{"hash":"393e2ecee9b7a935b6ad4c71edffbed46f6476a4","isMergeCommit":false,"messageTitle":"Update Readme.md and Add Checkstyle","messageBody":"","tags":["A-CheckStyle"],"fileTypesAndContributionMap":{"md":{"insertions":23,"deletions":21}}},{"hash":"2dbfb98939fedab4659f7abb488e159301c28889","isMergeCommit":false,"messageTitle":"Update Readme.md","messageBody":"","fileTypesAndContributionMap":{"md":{"insertions":33,"deletions":24}}}]},{"date":"2024-02-07","commitResults":[{"hash":"908134737c745e890233b90dd238377e3dabf87f","isMergeCommit":false,"messageTitle":"Add Level-10 GUI","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":16,"deletions":1},"txt":{"insertions":8,"deletions":3},"fxml":{"insertions":51,"deletions":0},"java":{"insertions":239,"deletions":125}}},{"hash":"6d8e22a8d7962303871d30797750ac0db7ba3405","isMergeCommit":true,"messageTitle":"Merge branch \u0027JavaFX\u0027","messageBody":"","tags":["Level-10"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yorklim":{"java":1355,"md":50,"fxml":51,"sh":0,"bat":1,"gradle":17,"txt":21}},"authorContributionVariance":{"yorklim":238843.05},"authorDisplayNameMap":{"yorklim":"CS2103T-W12-1 CHIA.. LIM"}} diff --git a/yyccbb_ip_master/authorship.json b/yyccbb_ip_master/authorship.json index 86345d73..eaa64187 100644 --- a/yyccbb_ip_master/authorship.json +++ b/yyccbb_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"# Nihao project template","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":"3. After that, locate the `src/main/java/Nihao.java` file, right-click it, and choose `Run Nihao.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-02-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"yyccbb":2,"-":22}},{"path":"src/main/java/App.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"public class App {","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":" private static Nihao nihao \u003d Nihao.instance;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":" nihao.run();","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":7}},{"path":"src/main/java/Nihao.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"import action.Action;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"import handler.DataHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"import handler.InputHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"import handler.PrintHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":"import java.io.File;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":"public final class Nihao {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" public static final Nihao instance \u003d new Nihao();","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" private static final String LOGO \u003d \":::: ::: ::::::::::: ::: ::: ::: :::::::: \\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" \":+:+: :+: :+: :+: :+: :+: :+: :+: :+: \\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" \":+:+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ \\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" \"+#+ +:+ +#+ +#+ +#++:++#++ +#++:++#++: +#+ +:+ \\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" \"+#+ +#+#+# +#+ +#+ +#+ +#+ +#+ +#+ +#+ \\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" \"#+# #+#+# #+# #+# #+# #+# #+# #+# #+# \\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":" \"### #### ########### ### ### ### ### ######## \";","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"yyccbb"},"content":" private final String GREETINGS \u003d \"Hello! I\u0027m Nihao.\\nI\u0027m lazy and I don\u0027t want to do anything for you.\";","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"yyccbb"},"content":" private final String GOODBYE \u003d \"Hope to never see you again. Goodbye!\";","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"yyccbb"},"content":" private final PrintHandler printHandler \u003d PrintHandler.instance;","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"yyccbb"},"content":" private final DataHandler dataHandler \u003d DataHandler.instance;","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"yyccbb"},"content":" private final InputHandler inputHandler \u003d InputHandler.instance;","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"yyccbb"},"content":" private Nihao() {}","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"yyccbb"},"content":" public void run() {","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"yyccbb"},"content":" printHandler.printWithDivider(LOGO);","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"yyccbb"},"content":" printHandler.printWithDivider(GREETINGS);","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"yyccbb"},"content":" File myInput \u003d new File(\"text-ui-test/input.txt\");","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"yyccbb"},"content":"// try {","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"yyccbb"},"content":"// Scanner scanner \u003d new Scanner(myInput);","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"yyccbb"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"yyccbb"},"content":" while (true) {","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"yyccbb"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"yyccbb"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":38,"author":{"gitId":"yyccbb"},"content":" printHandler.printWithDivider(GOODBYE);","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"yyccbb"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"yyccbb"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"yyccbb"},"content":" Action action \u003d inputHandler.handleInput(input);","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"yyccbb"},"content":" action.execute();","lastModifiedDate":"2024-02-01"},{"lineNumber":45,"author":{"gitId":"yyccbb"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":46,"author":{"gitId":"yyccbb"},"content":" printHandler.printException(e);","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"yyccbb"},"content":" scanner.close();","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"yyccbb"},"content":"// } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"yyccbb"},"content":"// printHandler.printWithDivider(\"File not found\");","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"yyccbb"},"content":"// }","lastModifiedDate":"2024-02-05"},{"lineNumber":53,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":54}},{"path":"src/main/java/action/Action.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"public interface Action {","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" public abstract void execute() throws Exception;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":5}},{"path":"src/main/java/action/DeleteAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"import action.task.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"import exception.IndexOutOfBoundsException;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"import handler.DataHandler;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":"import handler.PrintHandler;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":"public class DeleteAction implements Action{","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" private final int index;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" public DeleteAction(String index) {","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" this.index \u003d Integer.parseInt(index);","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" public void execute() throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" Task task \u003d DataHandler.instance.getTask(index);","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" DataHandler.instance.deleteTask(index);","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" int noOfTasks \u003d DataHandler.instance.size();","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":" PrintHandler.instance.printWithDivider(\"Fine. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":" + \" \" + task + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"yyccbb"},"content":" + \"Now you have \" + noOfTasks + \" tasks.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"yyccbb":22}},{"path":"src/main/java/action/ListAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"import action.task.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"import handler.PrintHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"import handler.DataHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":"public class ListAction implements Action{","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" public ListAction() {}","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" public void execute() {","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" ArrayList\u003cTask\u003e data \u003d DataHandler.instance.getData();","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" PrintHandler.instance.print(\"Here is your list of tasks:\");","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" PrintHandler.instance.printNumberedDivider(data);","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":16}},{"path":"src/main/java/action/MarkAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"import action.task.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"import exception.IndexOutOfBoundsException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"import handler.PrintHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"import handler.DataHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":"public class MarkAction implements Action{","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":" private final int index;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" public MarkAction(String index) {","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" this.index \u003d Integer.parseInt(index);","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" public void execute() throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" DataHandler.instance.markTask(index);","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" Task task \u003d DataHandler.instance.getTask(index);","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" PrintHandler.instance.printWithDivider(\"Fine. I\u0027ve marked this as completed:\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" \" \" + task);","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":18}},{"path":"src/main/java/action/TaskAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"import action.task.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"import handler.PrintHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"import handler.DataHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"public class TaskAction implements Action{","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" private Task task;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":" public TaskAction(String text) {","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" this.task \u003d new Task(text);","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" public TaskAction(Task task) {","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" this.task \u003d task;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" public void execute() {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" DataHandler.instance.handleData(task);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":" int noOfTasks \u003d DataHandler.instance.size();","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":" PrintHandler.instance.printWithDivider(\"Ok.. I\u0027ve added this task to your list:\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"yyccbb"},"content":" \" \" + task.toString() + \"\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"yyccbb"},"content":" \"Now you have \" + noOfTasks + \" tasks.\");","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":23}},{"path":"src/main/java/action/UnmarkAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"import action.task.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"import exception.IndexOutOfBoundsException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"import handler.DataHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"import handler.PrintHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"public class UnmarkAction implements Action{","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" private int index;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" public UnmarkAction(String index) {","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" this.index \u003d Integer.parseInt(index);","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" public void execute() throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" DataHandler.instance.unmarkTask(index);","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" Task task \u003d DataHandler.instance.getTask(index);","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" PrintHandler.instance.printWithDivider(\"Fine. I\u0027ve marked this as uncompleted:\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" \" \" + task);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":19}},{"path":"src/main/java/action/task/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action.task;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"public class DeadlineTask extends Task{","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" private String by;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":" public DeadlineTask(String taskName, String by) {","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" super(taskName);","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":" this.by \u003d by;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":14}},{"path":"src/main/java/action/task/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action.task;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"public class EventTask extends Task{","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" private String from;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":" private String to;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" public EventTask(String taskName, String from, String to) {","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":" super(taskName);","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" this.from \u003d from;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" this.to \u003d to;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" return \"[E]\" + super.toString() +","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" \" (from: \" + from +","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" \" to: \" + to + \")\";","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":18}},{"path":"src/main/java/action/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action.task;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"public class Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" private boolean isCompleted;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":" private String taskName;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" public Task(String taskName) {","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" public void mark() {","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" isCompleted \u003d true;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" public void unmark() {","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" isCompleted \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" String isCompleted \u003d this.isCompleted ? \"X\" : \" \";","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":" return \"[\" + isCompleted + \"] \" + taskName;","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":20}},{"path":"src/main/java/action/task/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action.task;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"public class TodoTask extends Task{","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" public TodoTask(String taskName) {","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":" super(taskName);","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":12}},{"path":"src/main/java/enums/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package enums;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"public enum Command {","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" LIST,","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":" MARK,","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" UNMARK,","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":" DELETE,","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" TODO,","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" DEADLINE,","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" EVENT,","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" UNKNOWN;","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" public static Command getEnum(String str) {","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" return switch (str) {","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" case \"list\" -\u003e LIST;","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" case \"mark\" -\u003e MARK;","lastModifiedDate":"2024-02-05"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" case \"unmark\" -\u003e UNMARK;","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" case \"delete\" -\u003e DELETE;","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":" case \"todo\" -\u003e TODO;","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":" case \"deadline\" -\u003e DEADLINE;","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"yyccbb"},"content":" case \"event\" -\u003e EVENT;","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"yyccbb"},"content":" default -\u003e UNKNOWN;","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"yyccbb"},"content":" };","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":24,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"yyccbb":24}},{"path":"src/main/java/exception/IllegalArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package exception;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"public class IllegalArgumentException extends Exception{","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" public IllegalArgumentException(String commandName, int expected) {","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":" super(\"IllegalArgumentException: \" + commandName + \" expects \" + expected + \" arguments.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" public IllegalArgumentException(String errorMessage) {","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" super(\"IllegalArgumentException: \" + errorMessage + \".\");","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"yyccbb":11}},{"path":"src/main/java/exception/IndexOutOfBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package exception;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"public class IndexOutOfBoundsException extends Exception{","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" public IndexOutOfBoundsException(int index, int size) {","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":" super(\"IndexOutOfBoundsException: \" + \"index \" + index + \" out of bounds for size \" + size + \".\");","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"yyccbb":7}},{"path":"src/main/java/exception/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package exception;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"public class UnknownCommandException extends Exception{","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" public UnknownCommandException(String commandName) {","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":" super(\"UnknownCommandException: \" + \"\u0027\" + commandName + \"\u0027\"","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" + \" is unknown.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"yyccbb":9}},{"path":"src/main/java/handler/DataHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package handler;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"import action.task.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"import exception.IndexOutOfBoundsException;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":"public class DataHandler {","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" public static final DataHandler instance \u003d new DataHandler();","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" private static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" private DataHandler() {};","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" public void handleData(Task task) {","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" // Todo: Exception handling","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":" public void markTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-05"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":" if (index \u003e size() || index \u003c\u003d 0) {","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"yyccbb"},"content":" throw new IndexOutOfBoundsException(index, size());","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"yyccbb"},"content":" tasks.get(index - 1).mark();","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"yyccbb"},"content":" public void unmarkTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"yyccbb"},"content":" if (index \u003e size() || index \u003c\u003d 0) {","lastModifiedDate":"2024-02-05"},{"lineNumber":27,"author":{"gitId":"yyccbb"},"content":" throw new IndexOutOfBoundsException(index, size());","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"yyccbb"},"content":" tasks.get(index - 1).unmark();","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"yyccbb"},"content":" public void deleteTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"yyccbb"},"content":" if (index \u003e size() || index \u003c\u003d 0) {","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"yyccbb"},"content":" throw new IndexOutOfBoundsException(index, size());","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"yyccbb"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"yyccbb"},"content":" public int size() {","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"yyccbb"},"content":" return tasks.size();","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"yyccbb"},"content":" public ArrayList\u003cTask\u003e getData() {","lastModifiedDate":"2024-02-05"},{"lineNumber":44,"author":{"gitId":"yyccbb"},"content":" return tasks;","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"yyccbb"},"content":" public Task getTask(int index) throws IndexOutOfBoundsException{","lastModifiedDate":"2024-02-05"},{"lineNumber":48,"author":{"gitId":"yyccbb"},"content":" if (index \u003e size() || index \u003c\u003d 0) {","lastModifiedDate":"2024-02-05"},{"lineNumber":49,"author":{"gitId":"yyccbb"},"content":" throw new IndexOutOfBoundsException(index, size());","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"yyccbb"},"content":" return tasks.get(index - 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":53}},{"path":"src/main/java/handler/InputHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package handler;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"import action.*;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"import action.task.DeadlineTask;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"import action.task.EventTask;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":"import action.task.TodoTask;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"import enums.Command;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":"import exception.IllegalArgumentException;","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":"import exception.UnknownCommandException;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":"public class InputHandler {","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" public static final InputHandler instance \u003d new InputHandler();","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" private InputHandler() {}","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" public Action handleInput(String input) throws Exception{","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" String[] parsedInput \u003d input.split(\" \");","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" String commandName \u003d parsedInput[0];","lastModifiedDate":"2024-02-05"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" Command command \u003d Command.getEnum(commandName);","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":" String taskName;","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":" switch (command) {","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"yyccbb"},"content":" case LIST:","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"yyccbb"},"content":" return new ListAction();","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"yyccbb"},"content":" case MARK:","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"yyccbb"},"content":" if (parsedInput.length !\u003d 2) {","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"yyccbb"},"content":" throw new IllegalArgumentException(\"mark\", 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"yyccbb"},"content":" return new MarkAction(parsedInput[1]);","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"yyccbb"},"content":" case UNMARK:","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"yyccbb"},"content":" if (parsedInput.length !\u003d 2) {","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"yyccbb"},"content":" throw new IllegalArgumentException(\"unmark\", 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"yyccbb"},"content":" return new UnmarkAction(parsedInput[1]);","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"yyccbb"},"content":" case DELETE:","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"yyccbb"},"content":" if (parsedInput.length !\u003d 2) {","lastModifiedDate":"2024-02-05"},{"lineNumber":34,"author":{"gitId":"yyccbb"},"content":" throw new IllegalArgumentException(\"delete\", 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":36,"author":{"gitId":"yyccbb"},"content":" return new DeleteAction(parsedInput[1]);","lastModifiedDate":"2024-02-05"},{"lineNumber":37,"author":{"gitId":"yyccbb"},"content":" case TODO:","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"yyccbb"},"content":" if (parsedInput.length \u003c 2) {","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"yyccbb"},"content":" throw new IllegalArgumentException(\"todo requires at least 1 argument\");","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"yyccbb"},"content":" taskName \u003d input.substring(5);","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"yyccbb"},"content":" TodoTask todoTask \u003d new TodoTask(taskName);","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"yyccbb"},"content":" return new TaskAction(todoTask);","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"yyccbb"},"content":" case DEADLINE:","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"yyccbb"},"content":" if (countByFlag(parsedInput) !\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"yyccbb"},"content":" throw new IllegalArgumentException(\"deadline requires exactly 1 /by flag\");","lastModifiedDate":"2024-02-05"},{"lineNumber":47,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"yyccbb"},"content":" int flagIndex \u003d input.indexOf(\" /by \");","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"yyccbb"},"content":" if (flagIndex \u003d\u003d -1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":50,"author":{"gitId":"yyccbb"},"content":" throw new IllegalArgumentException(\"illegal use of /by flag\");","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":52,"author":{"gitId":"yyccbb"},"content":" taskName \u003d input.substring(9, flagIndex);","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"yyccbb"},"content":" String by \u003d input.substring(flagIndex + 5);","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"yyccbb"},"content":" DeadlineTask deadlineTask \u003d new DeadlineTask(taskName, by);","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"yyccbb"},"content":" return new TaskAction(deadlineTask);","lastModifiedDate":"2024-02-01"},{"lineNumber":56,"author":{"gitId":"yyccbb"},"content":" case EVENT:","lastModifiedDate":"2024-02-05"},{"lineNumber":57,"author":{"gitId":"yyccbb"},"content":" if (countFromFlag(parsedInput) !\u003d 1 || countToFlag(parsedInput) !\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"yyccbb"},"content":" throw new IllegalArgumentException(\"\u0027event\u0027 requires exactly 1 /from flag and 1 /to flag\");","lastModifiedDate":"2024-02-05"},{"lineNumber":59,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"yyccbb"},"content":" int fromIndex \u003d input.indexOf(\" /from \");","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"yyccbb"},"content":" int toIndex \u003d input.indexOf(\" /to \");","lastModifiedDate":"2024-02-01"},{"lineNumber":62,"author":{"gitId":"yyccbb"},"content":" if (fromIndex \u003d\u003d -1 || toIndex \u003d\u003d -1 || toIndex \u003c fromIndex) {","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"yyccbb"},"content":" throw new IllegalArgumentException(\"illegal use of flags\");","lastModifiedDate":"2024-02-05"},{"lineNumber":64,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"yyccbb"},"content":" taskName \u003d input.substring(6, fromIndex);","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"yyccbb"},"content":" String from \u003d input.substring(fromIndex + 7, toIndex);","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"yyccbb"},"content":" String to \u003d input.substring(toIndex + 5);","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"yyccbb"},"content":" EventTask eventTask \u003d new EventTask(taskName, from, to);","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"yyccbb"},"content":" return new TaskAction(eventTask);","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"yyccbb"},"content":" default:","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"yyccbb"},"content":" throw new UnknownCommandException(input);","lastModifiedDate":"2024-02-05"},{"lineNumber":72,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"yyccbb"},"content":" private int countByFlag(String[] parsedInput) {","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"yyccbb"},"content":" int counter \u003d 0;","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"yyccbb"},"content":" for (int i \u003d 0; i \u003c parsedInput.length; i++) {","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"yyccbb"},"content":" if (parsedInput[i].equals(\"/by\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"yyccbb"},"content":" counter++;","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"yyccbb"},"content":" return counter;","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"yyccbb"},"content":" private int countFromFlag(String[] parsedInput) {","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"yyccbb"},"content":" int counter \u003d 0;","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"yyccbb"},"content":" for (int i \u003d 0; i \u003c parsedInput.length; i++) {","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"yyccbb"},"content":" if (parsedInput[i].equals(\"/from\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"yyccbb"},"content":" counter++;","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"yyccbb"},"content":" return counter;","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"yyccbb"},"content":" private int countToFlag(String[] parsedInput) {","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"yyccbb"},"content":" int counter \u003d 0;","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"yyccbb"},"content":" for (int i \u003d 0; i \u003c parsedInput.length; i++) {","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"yyccbb"},"content":" if (parsedInput[i].equals(\"/to\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":99,"author":{"gitId":"yyccbb"},"content":" counter++;","lastModifiedDate":"2024-02-01"},{"lineNumber":100,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":101,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":102,"author":{"gitId":"yyccbb"},"content":" return counter;","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":104}},{"path":"src/main/java/handler/PrintHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package handler;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"import action.task.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"public final class PrintHandler {","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" public static final PrintHandler instance \u003d new PrintHandler();","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" private static final String DIVIDER \u003d \"------------------------------------\";","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" private PrintHandler() {}","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" public void print(String msg) {","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" System.out.println(msg);","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" public void printWithDivider(String msg) {","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" System.out.println(msg);","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":" public void printNumberedDivider(ArrayList\u003cTask\u003e msgs) {","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"yyccbb"},"content":" for (int i \u003d 0; i \u003c msgs.size(); i++) {","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"yyccbb"},"content":" int index \u003d i + 1;","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"yyccbb"},"content":" System.out.println(Integer.toString(index) + \". \" + msgs.get(i));","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"yyccbb"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"yyccbb"},"content":" public void printException(Exception e) {","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"yyccbb"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":29,"author":{"gitId":"yyccbb"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":33,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":33}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"hello","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"mark 2","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"list","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"deadline finish homework /by tomorrow","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"deadline finish homework /by yesterday","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":"deadline finish homework /by","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"event concert /from tomorrow 2200 /to tomorrow 2300","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":"mark 2 3","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":"mark 2","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":"list","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":"delete 4","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":"delete 2","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":"list","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":"bye","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yyccbb":14}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"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":"yyccbb"},"content":"java -classpath ..\\bin App \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-02"},{"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":{"yyccbb":1,"-":20}}] +[{"path":"README.md","fileType":"md","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"# Nihao project template","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"This is a project template for a greenfield Java project. It\u0027s named after the Java mascot _Duke_. Given below are instructions on how to use it.","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"## Setting up in Intellij","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Prerequisites: JDK 11, update Intellij to the most recent version.","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"1. Open Intellij (if you are not in the welcome screen, click `File` \u003e `Close Project` to close the existing project first)","lastModifiedDate":"2021-01-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"1. Open the project into Intellij as follows:","lastModifiedDate":"2021-01-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":" 1. Click `Open`.","lastModifiedDate":"2021-01-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":" 1. Select the project directory, and click `OK`.","lastModifiedDate":"2021-01-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":" 1. If there are any further prompts, accept the defaults.","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).\u003cbr\u003e","lastModifiedDate":"2021-07-29"},{"lineNumber":15,"author":{"gitId":"-"},"content":" In the same dialog, set the **Project language level** field to the `SDK default` option.","lastModifiedDate":"2021-07-29"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":"3. After that, locate the `src/main/java/Nihao.java` file, right-click it, and choose `Run Nihao.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-02-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Hello from","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" ____ _ ","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" | _ \\ _ _| | _____ ","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" | | | | | | | |/ / _ \\","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" | |_| | |_| | \u003c __/","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" |____/ \\__,_|_|\\_\\___|","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"yyccbb":2,"-":22}},{"path":"src/main/java/App.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"import handler.DataHandler;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"public class App {","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" private static Nihao nihao \u003d Nihao.instance;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" public static void main(String[] args) {","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":" DataHandler.read();","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" nihao.run();","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":10}},{"path":"src/main/java/Nihao.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"import action.Action;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"import handler.DataHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"import handler.InputHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"import handler.PrintHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":"import java.io.File;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":"import java.util.Scanner;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":"public final class Nihao {","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" public static final Nihao instance \u003d new Nihao();","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" private static final String LOGO \u003d \":::: ::: ::::::::::: ::: ::: ::: :::::::: \\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" \":+:+: :+: :+: :+: :+: :+: :+: :+: :+: \\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" \":+:+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ \\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" \"+#+ +:+ +#+ +#+ +#++:++#++ +#++:++#++: +#+ +:+ \\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" \"+#+ +#+#+# +#+ +#+ +#+ +#+ +#+ +#+ +#+ \\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" \"#+# #+#+# #+# #+# #+# #+# #+# #+# #+# \\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":" \"### #### ########### ### ### ### ### ######## \";","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"yyccbb"},"content":" private final String GREETINGS \u003d \"Hello! I\u0027m Nihao.\\nI\u0027m lazy and I don\u0027t want to do anything for you.\";","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"yyccbb"},"content":" private final String GOODBYE \u003d \"Hope to never see you again. Goodbye!\";","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"yyccbb"},"content":" private final InputHandler inputHandler \u003d InputHandler.instance;","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"yyccbb"},"content":" private Nihao() {}","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"yyccbb"},"content":" public void run() {","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"yyccbb"},"content":" PrintHandler.printWithDivider(LOGO);","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"yyccbb"},"content":" PrintHandler.printWithDivider(GREETINGS);","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"yyccbb"},"content":"// File myInput \u003d new File(\"text-ui-test/input.txt\");","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"yyccbb"},"content":"// try {","lastModifiedDate":"2024-02-05"},{"lineNumber":31,"author":{"gitId":"yyccbb"},"content":"// Scanner scanner \u003d new Scanner(myInput);","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"yyccbb"},"content":" Scanner scanner \u003d new Scanner(System.in);","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"yyccbb"},"content":" while (true) {","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"yyccbb"},"content":" String input \u003d scanner.nextLine();","lastModifiedDate":"2024-02-01"},{"lineNumber":35,"author":{"gitId":"yyccbb"},"content":" if (input.equals(\"bye\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"yyccbb"},"content":" PrintHandler.printWithDivider(GOODBYE);","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"yyccbb"},"content":" DataHandler.save();","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"yyccbb"},"content":" break;","lastModifiedDate":"2024-02-01"},{"lineNumber":39,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":40,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":41,"author":{"gitId":"yyccbb"},"content":" try {","lastModifiedDate":"2024-02-01"},{"lineNumber":42,"author":{"gitId":"yyccbb"},"content":" Action action \u003d inputHandler.handleInput(input);","lastModifiedDate":"2024-02-01"},{"lineNumber":43,"author":{"gitId":"yyccbb"},"content":" action.execute();","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"yyccbb"},"content":" } catch (Exception e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"yyccbb"},"content":" PrintHandler.printException(e);","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"yyccbb"},"content":" scanner.close();","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"yyccbb"},"content":"// } catch (FileNotFoundException e) {","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"yyccbb"},"content":"// printHandler.printWithDivider(\"File not found\");","lastModifiedDate":"2024-02-05"},{"lineNumber":51,"author":{"gitId":"yyccbb"},"content":"// }","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":53}},{"path":"src/main/java/action/Action.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"public interface Action {","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" public abstract void execute() throws Exception;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":5}},{"path":"src/main/java/action/DeleteAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"import action.task.Task;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"import exception.IndexOutOfBoundsException;","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"import handler.DataHandler;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":"import handler.PrintHandler;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":"public class DeleteAction implements Action{","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" private final int index;","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" public DeleteAction(String index) {","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" this.index \u003d Integer.parseInt(index);","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" public void execute() throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" Task task \u003d DataHandler.getTask(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" DataHandler.deleteTask(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" int noOfTasks \u003d DataHandler.size();","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":" PrintHandler.printWithDivider(\"Fine. I\u0027ve removed this task:\\n\"","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":" + \" \" + task + \"\\n\"","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"yyccbb"},"content":" + \"Now you have \" + noOfTasks + \" tasks.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":21,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"yyccbb":22}},{"path":"src/main/java/action/ListAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"import action.task.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"import handler.PrintHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"import handler.DataHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":"public class ListAction implements Action{","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" public ListAction() {}","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" public void execute() {","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" ArrayList\u003cTask\u003e data \u003d DataHandler.getData();","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" PrintHandler.print(\"Here is your list of tasks:\");","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" PrintHandler.printNumberedDivider(data);","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":16}},{"path":"src/main/java/action/MarkAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"import action.task.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"import exception.IndexOutOfBoundsException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"import handler.PrintHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"import handler.DataHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":"public class MarkAction implements Action{","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":" private final int index;","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" public MarkAction(String index) {","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" this.index \u003d Integer.parseInt(index);","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" public void execute() throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" DataHandler.markTask(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" Task task \u003d DataHandler.getTask(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" PrintHandler.printWithDivider(\"Fine. I\u0027ve marked this as completed:\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" \" \" + task);","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":18}},{"path":"src/main/java/action/TaskAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"import action.task.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"import handler.PrintHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"import handler.DataHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"public class TaskAction implements Action{","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" private Task task;","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":" public TaskAction(String text) {","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" this.task \u003d new Task(text);","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" public TaskAction(Task task) {","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" this.task \u003d task;","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" public void execute() {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" DataHandler.handleData(task);","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":" int noOfTasks \u003d DataHandler.size();","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":" PrintHandler.printWithDivider(\"Ok.. I\u0027ve added this task to your list:\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"yyccbb"},"content":" \" \" + task.toString() + \"\\n\" +","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"yyccbb"},"content":" \"Now you have \" + noOfTasks + \" tasks.\");","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":23}},{"path":"src/main/java/action/UnmarkAction.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"import action.task.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"import exception.IndexOutOfBoundsException;","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"import handler.DataHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"import handler.PrintHandler;","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"public class UnmarkAction implements Action{","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" private int index;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" public UnmarkAction(String index) {","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" this.index \u003d Integer.parseInt(index);","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" public void execute() throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" DataHandler.unmarkTask(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" Task task \u003d DataHandler.getTask(index);","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" PrintHandler.printWithDivider(\"Fine. I\u0027ve marked this as uncompleted:\\n\" +","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" \" \" + task);","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":19}},{"path":"src/main/java/action/task/DeadlineTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action.task;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"public class DeadlineTask extends Task{","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" private String by;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":" public String getBy() {","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" return by;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" public DeadlineTask(String taskName, String by) {","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" super(taskName);","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" this.by \u003d by;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" return \"[D]\" + super.toString() + \" (by: \" + by + \")\";","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":17}},{"path":"src/main/java/action/task/EventTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action.task;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"public class EventTask extends Task{","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" private String from;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":" public String getFrom() {","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" return from;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" private String to;","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" public String getTo() {","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" return to;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" public EventTask(String taskName, String from, String to) {","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" super(taskName);","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" this.from \u003d from;","lastModifiedDate":"2024-02-01"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" this.to \u003d to;","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"yyccbb"},"content":" return \"[E]\" + super.toString() +","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"yyccbb"},"content":" \" (from: \" + from +","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"yyccbb"},"content":" \" to: \" + to + \")\";","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":24}},{"path":"src/main/java/action/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action.task;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"public class Task {","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" private boolean isCompleted;","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":" public boolean getIsCompleted() {","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" return isCompleted;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" public void setIsCompleted(boolean isCompleted) {","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" this.isCompleted \u003d isCompleted;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" private String taskName;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" public String getTaskName() {","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" return taskName;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" public Task(String taskName) {","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":" public void mark() {","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":" isCompleted \u003d true;","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"yyccbb"},"content":" public void unmark() {","lastModifiedDate":"2024-02-01"},{"lineNumber":22,"author":{"gitId":"yyccbb"},"content":" isCompleted \u003d false;","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"yyccbb"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"yyccbb"},"content":" String isCompleted \u003d this.isCompleted ? \"X\" : \" \";","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"yyccbb"},"content":" return \"[\" + isCompleted + \"] \" + taskName;","lastModifiedDate":"2024-02-01"},{"lineNumber":28,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":29}},{"path":"src/main/java/action/task/TodoTask.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package action.task;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"public class TodoTask extends Task{","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" public TodoTask(String taskName) {","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":" super(taskName);","lastModifiedDate":"2024-02-01"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" public String toString() {","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" return \"[T]\" + super.toString();","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":12}},{"path":"src/main/java/enums/Command.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package enums;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"public enum Command {","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" LIST,","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":" MARK,","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" UNMARK,","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":" DELETE,","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" TODO,","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" DEADLINE,","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" EVENT,","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" UNKNOWN;","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" public static Command getEnum(String str) {","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" switch (str) {","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" case \"list\":","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" return LIST;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" case \"mark\":","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" return MARK;","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":" case \"unmark\":","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":" return UNMARK;","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"yyccbb"},"content":" case \"delete\":","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"yyccbb"},"content":" return DELETE;","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"yyccbb"},"content":" case \"todo\":","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"yyccbb"},"content":" return TODO;","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"yyccbb"},"content":" case \"deadline\":","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"yyccbb"},"content":" return DEADLINE;","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"yyccbb"},"content":" case \"event\":","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"yyccbb"},"content":" return EVENT;","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"yyccbb"},"content":" default:","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"yyccbb"},"content":" return UNKNOWN;","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":32,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"yyccbb":32}},{"path":"src/main/java/exception/IllegalArgumentException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package exception;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"public class IllegalArgumentException extends Exception{","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" public IllegalArgumentException(String commandName, int expected) {","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":" super(\"IllegalArgumentException: \" + commandName + \" expects \" + expected + \" arguments.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" public IllegalArgumentException(String errorMessage) {","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" super(\"IllegalArgumentException: \" + errorMessage + \".\");","lastModifiedDate":"2024-02-05"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"yyccbb":11}},{"path":"src/main/java/exception/IndexOutOfBoundsException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package exception;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"public class IndexOutOfBoundsException extends Exception{","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" public IndexOutOfBoundsException(int index, int size) {","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":" super(\"IndexOutOfBoundsException: \" + \"index \" + index + \" out of bounds for size \" + size + \".\");","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"yyccbb":7}},{"path":"src/main/java/exception/UnknownCommandException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package exception;","lastModifiedDate":"2024-02-05"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"public class UnknownCommandException extends Exception{","lastModifiedDate":"2024-02-05"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":" public UnknownCommandException(String commandName) {","lastModifiedDate":"2024-02-05"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":" super(\"UnknownCommandException: \" + \"\u0027\" + commandName + \"\u0027\"","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":" + \" is unknown.\");","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-05"}],"authorContributionMap":{"yyccbb":9}},{"path":"src/main/java/handler/DataHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package handler;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"import action.task.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"import com.google.gson.Gson;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"import com.google.gson.GsonBuilder;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":"import com.google.gson.reflect.TypeToken;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"import exception.IndexOutOfBoundsException;","lastModifiedDate":"2024-02-05"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":"import util.TaskTypeAdapter;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":"import java.io.FileReader;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":"import java.io.FileWriter;","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":"import java.lang.reflect.Type;","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":"import java.nio.file.Files;","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":"public class DataHandler {","lastModifiedDate":"2024-02-01"},{"lineNumber":20,"author":{"gitId":"yyccbb"},"content":" private static final String fileNamePath \u003d \"data/PersistentData.json\";","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"yyccbb"},"content":" private static ArrayList\u003cTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"yyccbb"},"content":" private DataHandler() {};","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"yyccbb"},"content":" private static void readFromJson() throws IOException {","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"yyccbb"},"content":" FileReader fileReader \u003d new FileReader(fileNamePath);","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"yyccbb"},"content":" GsonBuilder gsonBuilder \u003d new GsonBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"yyccbb"},"content":" gsonBuilder.registerTypeHierarchyAdapter(Task.class, new TaskTypeAdapter());","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"yyccbb"},"content":" Gson gson \u003d gsonBuilder.create();","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"yyccbb"},"content":" Type objectType \u003d TypeToken.getParameterized(ArrayList.class, Task.class).getType(); // Type objectType \u003d new TypeToken\u003cArrayList\u003cTask\u003e\u003e() {}.getType();","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"yyccbb"},"content":" tasks \u003d gson.fromJson(fileReader, objectType);","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"yyccbb"},"content":" fileReader.close();","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"yyccbb"},"content":" private static void saveToJson() throws IOException {","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"yyccbb"},"content":" FileWriter fileWriter \u003d new FileWriter(fileNamePath);","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"yyccbb"},"content":" GsonBuilder gsonBuilder \u003d new GsonBuilder();","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"yyccbb"},"content":" gsonBuilder.registerTypeHierarchyAdapter(Task.class, new TaskTypeAdapter());","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"yyccbb"},"content":" Gson gson \u003d gsonBuilder.create();","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"yyccbb"},"content":" gson.toJson(tasks, fileWriter);","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"yyccbb"},"content":" fileWriter.flush();","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"yyccbb"},"content":" fileWriter.close();","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"yyccbb"},"content":" public static void read() {","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"yyccbb"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"yyccbb"},"content":" readFromJson();","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"yyccbb"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"yyccbb"},"content":" Path newFilePath \u003d Paths.get(fileNamePath);","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"yyccbb"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"yyccbb"},"content":" Files.createFile(newFilePath);","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"yyccbb"},"content":" } catch (IOException ex) {","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"yyccbb"},"content":" PrintHandler.printException(ex);","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"yyccbb"},"content":" public static void save() {","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"yyccbb"},"content":" try {","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"yyccbb"},"content":" saveToJson();","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"yyccbb"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"yyccbb"},"content":" PrintHandler.printException(e);","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"yyccbb"},"content":" public static void handleData(Task task) {","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"yyccbb"},"content":" tasks.add(task);","lastModifiedDate":"2024-02-05"},{"lineNumber":67,"author":{"gitId":"yyccbb"},"content":" // Todo: Exception handling","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":69,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"yyccbb"},"content":" public static void markTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"yyccbb"},"content":" if (index \u003e size() || index \u003c\u003d 0) {","lastModifiedDate":"2024-02-05"},{"lineNumber":72,"author":{"gitId":"yyccbb"},"content":" throw new IndexOutOfBoundsException(index, size());","lastModifiedDate":"2024-02-05"},{"lineNumber":73,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"yyccbb"},"content":" tasks.get(index - 1).mark();","lastModifiedDate":"2024-02-05"},{"lineNumber":75,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":77,"author":{"gitId":"yyccbb"},"content":" public static void unmarkTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"yyccbb"},"content":" if (index \u003e size() || index \u003c\u003d 0) {","lastModifiedDate":"2024-02-05"},{"lineNumber":79,"author":{"gitId":"yyccbb"},"content":" throw new IndexOutOfBoundsException(index, size());","lastModifiedDate":"2024-02-05"},{"lineNumber":80,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"yyccbb"},"content":" tasks.get(index - 1).unmark();","lastModifiedDate":"2024-02-05"},{"lineNumber":82,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"yyccbb"},"content":" public static void deleteTask(int index) throws IndexOutOfBoundsException {","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"yyccbb"},"content":" if (index \u003e size() || index \u003c\u003d 0) {","lastModifiedDate":"2024-02-05"},{"lineNumber":86,"author":{"gitId":"yyccbb"},"content":" throw new IndexOutOfBoundsException(index, size());","lastModifiedDate":"2024-02-05"},{"lineNumber":87,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":88,"author":{"gitId":"yyccbb"},"content":" tasks.remove(index - 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":89,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":90,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":91,"author":{"gitId":"yyccbb"},"content":" public static int size() {","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"yyccbb"},"content":" return tasks.size();","lastModifiedDate":"2024-02-05"},{"lineNumber":93,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"yyccbb"},"content":" public static ArrayList\u003cTask\u003e getData() {","lastModifiedDate":"2024-02-07"},{"lineNumber":96,"author":{"gitId":"yyccbb"},"content":" return tasks;","lastModifiedDate":"2024-02-05"},{"lineNumber":97,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":99,"author":{"gitId":"yyccbb"},"content":" public static Task getTask(int index) throws IndexOutOfBoundsException{","lastModifiedDate":"2024-02-07"},{"lineNumber":100,"author":{"gitId":"yyccbb"},"content":" if (index \u003e size() || index \u003c\u003d 0) {","lastModifiedDate":"2024-02-05"},{"lineNumber":101,"author":{"gitId":"yyccbb"},"content":" throw new IndexOutOfBoundsException(index, size());","lastModifiedDate":"2024-02-05"},{"lineNumber":102,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":103,"author":{"gitId":"yyccbb"},"content":" return tasks.get(index - 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":104,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":105}},{"path":"src/main/java/handler/InputHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package handler;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"import action.Action;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"import action.DeleteAction;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"import action.ListAction;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":"import action.MarkAction;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"import action.TaskAction;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":"import action.UnmarkAction;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":"import action.task.DeadlineTask;","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":"import action.task.EventTask;","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":"import action.task.TodoTask;","lastModifiedDate":"2024-02-01"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":"import enums.Command;","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":"import exception.IllegalArgumentException;","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":"import exception.UnknownCommandException;","lastModifiedDate":"2024-02-05"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":"public class InputHandler {","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" public static final InputHandler instance \u003d new InputHandler();","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":" private InputHandler() {}","lastModifiedDate":"2024-02-01"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":" public Action handleInput(String input) throws Exception{","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"yyccbb"},"content":" String[] parsedInput \u003d input.split(\" \");","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"yyccbb"},"content":" String commandName \u003d parsedInput[0];","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"yyccbb"},"content":" Command command \u003d Command.getEnum(commandName);","lastModifiedDate":"2024-02-05"},{"lineNumber":23,"author":{"gitId":"yyccbb"},"content":" String taskName;","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"yyccbb"},"content":" switch (command) {","lastModifiedDate":"2024-02-05"},{"lineNumber":25,"author":{"gitId":"yyccbb"},"content":" case LIST:","lastModifiedDate":"2024-02-05"},{"lineNumber":26,"author":{"gitId":"yyccbb"},"content":" return new ListAction();","lastModifiedDate":"2024-02-01"},{"lineNumber":27,"author":{"gitId":"yyccbb"},"content":" case MARK:","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"yyccbb"},"content":" if (parsedInput.length !\u003d 2) {","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"yyccbb"},"content":" throw new IllegalArgumentException(\"mark\", 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":30,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"yyccbb"},"content":" return new MarkAction(parsedInput[1]);","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"yyccbb"},"content":" case UNMARK:","lastModifiedDate":"2024-02-05"},{"lineNumber":33,"author":{"gitId":"yyccbb"},"content":" if (parsedInput.length !\u003d 2) {","lastModifiedDate":"2024-02-01"},{"lineNumber":34,"author":{"gitId":"yyccbb"},"content":" throw new IllegalArgumentException(\"unmark\", 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":35,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":36,"author":{"gitId":"yyccbb"},"content":" return new UnmarkAction(parsedInput[1]);","lastModifiedDate":"2024-02-01"},{"lineNumber":37,"author":{"gitId":"yyccbb"},"content":" case DELETE:","lastModifiedDate":"2024-02-05"},{"lineNumber":38,"author":{"gitId":"yyccbb"},"content":" if (parsedInput.length !\u003d 2) {","lastModifiedDate":"2024-02-05"},{"lineNumber":39,"author":{"gitId":"yyccbb"},"content":" throw new IllegalArgumentException(\"delete\", 1);","lastModifiedDate":"2024-02-05"},{"lineNumber":40,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-05"},{"lineNumber":41,"author":{"gitId":"yyccbb"},"content":" return new DeleteAction(parsedInput[1]);","lastModifiedDate":"2024-02-05"},{"lineNumber":42,"author":{"gitId":"yyccbb"},"content":" case TODO:","lastModifiedDate":"2024-02-05"},{"lineNumber":43,"author":{"gitId":"yyccbb"},"content":" if (parsedInput.length \u003c 2) {","lastModifiedDate":"2024-02-01"},{"lineNumber":44,"author":{"gitId":"yyccbb"},"content":" throw new IllegalArgumentException(\"todo requires at least 1 argument\");","lastModifiedDate":"2024-02-05"},{"lineNumber":45,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":46,"author":{"gitId":"yyccbb"},"content":" taskName \u003d input.substring(5);","lastModifiedDate":"2024-02-01"},{"lineNumber":47,"author":{"gitId":"yyccbb"},"content":" TodoTask todoTask \u003d new TodoTask(taskName);","lastModifiedDate":"2024-02-01"},{"lineNumber":48,"author":{"gitId":"yyccbb"},"content":" return new TaskAction(todoTask);","lastModifiedDate":"2024-02-01"},{"lineNumber":49,"author":{"gitId":"yyccbb"},"content":" case DEADLINE:","lastModifiedDate":"2024-02-05"},{"lineNumber":50,"author":{"gitId":"yyccbb"},"content":" if (countByFlag(parsedInput) !\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":51,"author":{"gitId":"yyccbb"},"content":" throw new IllegalArgumentException(\"deadline requires exactly 1 /by flag\");","lastModifiedDate":"2024-02-05"},{"lineNumber":52,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":53,"author":{"gitId":"yyccbb"},"content":" int flagIndex \u003d input.indexOf(\" /by \");","lastModifiedDate":"2024-02-01"},{"lineNumber":54,"author":{"gitId":"yyccbb"},"content":" if (flagIndex \u003d\u003d -1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":55,"author":{"gitId":"yyccbb"},"content":" throw new IllegalArgumentException(\"illegal use of /by flag\");","lastModifiedDate":"2024-02-05"},{"lineNumber":56,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":57,"author":{"gitId":"yyccbb"},"content":" taskName \u003d input.substring(9, flagIndex);","lastModifiedDate":"2024-02-01"},{"lineNumber":58,"author":{"gitId":"yyccbb"},"content":" String by \u003d input.substring(flagIndex + 5);","lastModifiedDate":"2024-02-01"},{"lineNumber":59,"author":{"gitId":"yyccbb"},"content":" DeadlineTask deadlineTask \u003d new DeadlineTask(taskName, by);","lastModifiedDate":"2024-02-01"},{"lineNumber":60,"author":{"gitId":"yyccbb"},"content":" return new TaskAction(deadlineTask);","lastModifiedDate":"2024-02-01"},{"lineNumber":61,"author":{"gitId":"yyccbb"},"content":" case EVENT:","lastModifiedDate":"2024-02-05"},{"lineNumber":62,"author":{"gitId":"yyccbb"},"content":" if (countFromFlag(parsedInput) !\u003d 1 || countToFlag(parsedInput) !\u003d 1) {","lastModifiedDate":"2024-02-01"},{"lineNumber":63,"author":{"gitId":"yyccbb"},"content":" throw new IllegalArgumentException(\"\u0027event\u0027 requires exactly 1 /from flag and 1 /to flag\");","lastModifiedDate":"2024-02-05"},{"lineNumber":64,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":65,"author":{"gitId":"yyccbb"},"content":" int fromIndex \u003d input.indexOf(\" /from \");","lastModifiedDate":"2024-02-01"},{"lineNumber":66,"author":{"gitId":"yyccbb"},"content":" int toIndex \u003d input.indexOf(\" /to \");","lastModifiedDate":"2024-02-01"},{"lineNumber":67,"author":{"gitId":"yyccbb"},"content":" if (fromIndex \u003d\u003d -1 || toIndex \u003d\u003d -1 || toIndex \u003c fromIndex) {","lastModifiedDate":"2024-02-01"},{"lineNumber":68,"author":{"gitId":"yyccbb"},"content":" throw new IllegalArgumentException(\"illegal use of flags\");","lastModifiedDate":"2024-02-05"},{"lineNumber":69,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":70,"author":{"gitId":"yyccbb"},"content":" taskName \u003d input.substring(6, fromIndex);","lastModifiedDate":"2024-02-01"},{"lineNumber":71,"author":{"gitId":"yyccbb"},"content":" String from \u003d input.substring(fromIndex + 7, toIndex);","lastModifiedDate":"2024-02-01"},{"lineNumber":72,"author":{"gitId":"yyccbb"},"content":" String to \u003d input.substring(toIndex + 5);","lastModifiedDate":"2024-02-01"},{"lineNumber":73,"author":{"gitId":"yyccbb"},"content":" EventTask eventTask \u003d new EventTask(taskName, from, to);","lastModifiedDate":"2024-02-01"},{"lineNumber":74,"author":{"gitId":"yyccbb"},"content":" return new TaskAction(eventTask);","lastModifiedDate":"2024-02-01"},{"lineNumber":75,"author":{"gitId":"yyccbb"},"content":" default:","lastModifiedDate":"2024-02-01"},{"lineNumber":76,"author":{"gitId":"yyccbb"},"content":" throw new UnknownCommandException(input);","lastModifiedDate":"2024-02-05"},{"lineNumber":77,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":78,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":79,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":80,"author":{"gitId":"yyccbb"},"content":" private int countByFlag(String[] parsedInput) {","lastModifiedDate":"2024-02-01"},{"lineNumber":81,"author":{"gitId":"yyccbb"},"content":" int counter \u003d 0;","lastModifiedDate":"2024-02-01"},{"lineNumber":82,"author":{"gitId":"yyccbb"},"content":" for (int i \u003d 0; i \u003c parsedInput.length; i++) {","lastModifiedDate":"2024-02-01"},{"lineNumber":83,"author":{"gitId":"yyccbb"},"content":" if (parsedInput[i].equals(\"/by\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":84,"author":{"gitId":"yyccbb"},"content":" counter++;","lastModifiedDate":"2024-02-01"},{"lineNumber":85,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":86,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":87,"author":{"gitId":"yyccbb"},"content":" return counter;","lastModifiedDate":"2024-02-01"},{"lineNumber":88,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":89,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":90,"author":{"gitId":"yyccbb"},"content":" private int countFromFlag(String[] parsedInput) {","lastModifiedDate":"2024-02-01"},{"lineNumber":91,"author":{"gitId":"yyccbb"},"content":" int counter \u003d 0;","lastModifiedDate":"2024-02-01"},{"lineNumber":92,"author":{"gitId":"yyccbb"},"content":" for (int i \u003d 0; i \u003c parsedInput.length; i++) {","lastModifiedDate":"2024-02-01"},{"lineNumber":93,"author":{"gitId":"yyccbb"},"content":" if (parsedInput[i].equals(\"/from\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":94,"author":{"gitId":"yyccbb"},"content":" counter++;","lastModifiedDate":"2024-02-01"},{"lineNumber":95,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":96,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":97,"author":{"gitId":"yyccbb"},"content":" return counter;","lastModifiedDate":"2024-02-01"},{"lineNumber":98,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":99,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":100,"author":{"gitId":"yyccbb"},"content":" private int countToFlag(String[] parsedInput) {","lastModifiedDate":"2024-02-01"},{"lineNumber":101,"author":{"gitId":"yyccbb"},"content":" int counter \u003d 0;","lastModifiedDate":"2024-02-01"},{"lineNumber":102,"author":{"gitId":"yyccbb"},"content":" for (int i \u003d 0; i \u003c parsedInput.length; i++) {","lastModifiedDate":"2024-02-01"},{"lineNumber":103,"author":{"gitId":"yyccbb"},"content":" if (parsedInput[i].equals(\"/to\")) {","lastModifiedDate":"2024-02-01"},{"lineNumber":104,"author":{"gitId":"yyccbb"},"content":" counter++;","lastModifiedDate":"2024-02-01"},{"lineNumber":105,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":106,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":107,"author":{"gitId":"yyccbb"},"content":" return counter;","lastModifiedDate":"2024-02-01"},{"lineNumber":108,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":109,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":109}},{"path":"src/main/java/handler/PrintHandler.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package handler;","lastModifiedDate":"2024-02-01"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"import action.task.Task;","lastModifiedDate":"2024-02-01"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"public final class PrintHandler {","lastModifiedDate":"2024-02-01"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":" private static final String DIVIDER \u003d \"------------------------------------\";","lastModifiedDate":"2024-02-01"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":" private PrintHandler() {}","lastModifiedDate":"2024-02-01"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":" public static void print(String msg) {","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":" System.out.println(msg);","lastModifiedDate":"2024-02-01"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":" public static void printWithDivider(String msg) {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" System.out.println(msg);","lastModifiedDate":"2024-02-01"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-02-01"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":" public static void printNumberedDivider(ArrayList\u003cTask\u003e msgs) {","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":" for (int i \u003d 0; i \u003c msgs.size(); i++) {","lastModifiedDate":"2024-02-05"},{"lineNumber":20,"author":{"gitId":"yyccbb"},"content":" int index \u003d i + 1;","lastModifiedDate":"2024-02-01"},{"lineNumber":21,"author":{"gitId":"yyccbb"},"content":" System.out.println(Integer.toString(index) + \". \" + msgs.get(i));","lastModifiedDate":"2024-02-05"},{"lineNumber":22,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":23,"author":{"gitId":"yyccbb"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-02-01"},{"lineNumber":24,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":25,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":26,"author":{"gitId":"yyccbb"},"content":" public static void printException(Exception e) {","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"yyccbb"},"content":" System.out.println(e.getMessage());","lastModifiedDate":"2024-02-05"},{"lineNumber":28,"author":{"gitId":"yyccbb"},"content":" System.out.println(DIVIDER);","lastModifiedDate":"2024-02-01"},{"lineNumber":29,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-01"},{"lineNumber":30,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":31,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-01"},{"lineNumber":32,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-01"}],"authorContributionMap":{"yyccbb":32}},{"path":"src/main/java/util/TaskTypeAdapter.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"package util;","lastModifiedDate":"2024-02-07"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"import action.task.DeadlineTask;","lastModifiedDate":"2024-02-07"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"import action.task.EventTask;","lastModifiedDate":"2024-02-07"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"import action.task.Task;","lastModifiedDate":"2024-02-07"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":"import action.task.TodoTask;","lastModifiedDate":"2024-02-07"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"import com.google.gson.TypeAdapter;","lastModifiedDate":"2024-02-07"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":"import com.google.gson.stream.JsonReader;","lastModifiedDate":"2024-02-07"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":"import com.google.gson.stream.JsonToken;","lastModifiedDate":"2024-02-07"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":"import com.google.gson.stream.JsonWriter;","lastModifiedDate":"2024-02-07"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":"import java.io.IOException;","lastModifiedDate":"2024-02-07"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":"public class TaskTypeAdapter extends TypeAdapter\u003cTask\u003e {","lastModifiedDate":"2024-02-07"},{"lineNumber":15,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":16,"author":{"gitId":"yyccbb"},"content":" public void write(JsonWriter jsonWriter, Task task) throws IOException {","lastModifiedDate":"2024-02-07"},{"lineNumber":17,"author":{"gitId":"yyccbb"},"content":" jsonWriter.beginObject();","lastModifiedDate":"2024-02-07"},{"lineNumber":18,"author":{"gitId":"yyccbb"},"content":" jsonWriter.name(\"type\");","lastModifiedDate":"2024-02-07"},{"lineNumber":19,"author":{"gitId":"yyccbb"},"content":" if (task instanceof TodoTask) {","lastModifiedDate":"2024-02-07"},{"lineNumber":20,"author":{"gitId":"yyccbb"},"content":" jsonWriter.value(TodoTask.class.getSimpleName());","lastModifiedDate":"2024-02-07"},{"lineNumber":21,"author":{"gitId":"yyccbb"},"content":" } else if (task instanceof DeadlineTask) {","lastModifiedDate":"2024-02-07"},{"lineNumber":22,"author":{"gitId":"yyccbb"},"content":" jsonWriter.value(DeadlineTask.class.getSimpleName());","lastModifiedDate":"2024-02-07"},{"lineNumber":23,"author":{"gitId":"yyccbb"},"content":" } else if (task instanceof EventTask) {","lastModifiedDate":"2024-02-07"},{"lineNumber":24,"author":{"gitId":"yyccbb"},"content":" jsonWriter.value(EventTask.class.getSimpleName());","lastModifiedDate":"2024-02-07"},{"lineNumber":25,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":26,"author":{"gitId":"yyccbb"},"content":" jsonWriter.name(\"taskName\");","lastModifiedDate":"2024-02-07"},{"lineNumber":27,"author":{"gitId":"yyccbb"},"content":" jsonWriter.value(task.getTaskName());","lastModifiedDate":"2024-02-07"},{"lineNumber":28,"author":{"gitId":"yyccbb"},"content":" jsonWriter.name(\"isCompleted\");","lastModifiedDate":"2024-02-07"},{"lineNumber":29,"author":{"gitId":"yyccbb"},"content":" jsonWriter.value(task.getIsCompleted());","lastModifiedDate":"2024-02-07"},{"lineNumber":30,"author":{"gitId":"yyccbb"},"content":" if (task instanceof TodoTask) {","lastModifiedDate":"2024-02-07"},{"lineNumber":31,"author":{"gitId":"yyccbb"},"content":" } else if (task instanceof DeadlineTask) {","lastModifiedDate":"2024-02-07"},{"lineNumber":32,"author":{"gitId":"yyccbb"},"content":" jsonWriter.name(\"by\");","lastModifiedDate":"2024-02-07"},{"lineNumber":33,"author":{"gitId":"yyccbb"},"content":" jsonWriter.value(((DeadlineTask) task).getBy());","lastModifiedDate":"2024-02-07"},{"lineNumber":34,"author":{"gitId":"yyccbb"},"content":" } else if (task instanceof EventTask) {","lastModifiedDate":"2024-02-07"},{"lineNumber":35,"author":{"gitId":"yyccbb"},"content":" jsonWriter.name(\"from\");","lastModifiedDate":"2024-02-07"},{"lineNumber":36,"author":{"gitId":"yyccbb"},"content":" jsonWriter.value(((EventTask) task).getFrom());","lastModifiedDate":"2024-02-07"},{"lineNumber":37,"author":{"gitId":"yyccbb"},"content":" jsonWriter.name(\"to\");","lastModifiedDate":"2024-02-07"},{"lineNumber":38,"author":{"gitId":"yyccbb"},"content":" jsonWriter.value(((EventTask) task).getTo());","lastModifiedDate":"2024-02-07"},{"lineNumber":39,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":40,"author":{"gitId":"yyccbb"},"content":" jsonWriter.endObject();","lastModifiedDate":"2024-02-07"},{"lineNumber":41,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":42,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":43,"author":{"gitId":"yyccbb"},"content":" @Override","lastModifiedDate":"2024-02-07"},{"lineNumber":44,"author":{"gitId":"yyccbb"},"content":" public Task read(JsonReader jsonReader) throws IOException {","lastModifiedDate":"2024-02-07"},{"lineNumber":45,"author":{"gitId":"yyccbb"},"content":" Task ret \u003d null;","lastModifiedDate":"2024-02-07"},{"lineNumber":46,"author":{"gitId":"yyccbb"},"content":" jsonReader.beginObject();","lastModifiedDate":"2024-02-07"},{"lineNumber":47,"author":{"gitId":"yyccbb"},"content":" String fieldName \u003d null;","lastModifiedDate":"2024-02-07"},{"lineNumber":48,"author":{"gitId":"yyccbb"},"content":" JsonToken token \u003d jsonReader.peek();","lastModifiedDate":"2024-02-07"},{"lineNumber":49,"author":{"gitId":"yyccbb"},"content":" if (token.equals(JsonToken.NAME)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":50,"author":{"gitId":"yyccbb"},"content":" fieldName \u003d jsonReader.nextName();","lastModifiedDate":"2024-02-07"},{"lineNumber":51,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":52,"author":{"gitId":"yyccbb"},"content":" token \u003d jsonReader.peek();","lastModifiedDate":"2024-02-07"},{"lineNumber":53,"author":{"gitId":"yyccbb"},"content":" String type \u003d jsonReader.nextString();","lastModifiedDate":"2024-02-07"},{"lineNumber":54,"author":{"gitId":"yyccbb"},"content":" token \u003d jsonReader.peek();","lastModifiedDate":"2024-02-07"},{"lineNumber":55,"author":{"gitId":"yyccbb"},"content":" fieldName \u003d jsonReader.nextName();","lastModifiedDate":"2024-02-07"},{"lineNumber":56,"author":{"gitId":"yyccbb"},"content":" token \u003d jsonReader.peek();","lastModifiedDate":"2024-02-07"},{"lineNumber":57,"author":{"gitId":"yyccbb"},"content":" String taskName \u003d jsonReader.nextString();","lastModifiedDate":"2024-02-07"},{"lineNumber":58,"author":{"gitId":"yyccbb"},"content":" token \u003d jsonReader.peek();","lastModifiedDate":"2024-02-07"},{"lineNumber":59,"author":{"gitId":"yyccbb"},"content":" fieldName \u003d jsonReader.nextName();","lastModifiedDate":"2024-02-07"},{"lineNumber":60,"author":{"gitId":"yyccbb"},"content":" token \u003d jsonReader.peek();","lastModifiedDate":"2024-02-07"},{"lineNumber":61,"author":{"gitId":"yyccbb"},"content":" boolean isCompleted \u003d jsonReader.nextBoolean();","lastModifiedDate":"2024-02-07"},{"lineNumber":62,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":63,"author":{"gitId":"yyccbb"},"content":" switch (type) {","lastModifiedDate":"2024-02-07"},{"lineNumber":64,"author":{"gitId":"yyccbb"},"content":" case \"TodoTask\":","lastModifiedDate":"2024-02-07"},{"lineNumber":65,"author":{"gitId":"yyccbb"},"content":" ret \u003d new TodoTask(taskName);","lastModifiedDate":"2024-02-07"},{"lineNumber":66,"author":{"gitId":"yyccbb"},"content":" ret.setIsCompleted(isCompleted);","lastModifiedDate":"2024-02-07"},{"lineNumber":67,"author":{"gitId":"yyccbb"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":68,"author":{"gitId":"yyccbb"},"content":" case \"DeadlineTask\":","lastModifiedDate":"2024-02-07"},{"lineNumber":69,"author":{"gitId":"yyccbb"},"content":" token \u003d jsonReader.peek();","lastModifiedDate":"2024-02-07"},{"lineNumber":70,"author":{"gitId":"yyccbb"},"content":" if (token.equals(JsonToken.NAME)) {","lastModifiedDate":"2024-02-07"},{"lineNumber":71,"author":{"gitId":"yyccbb"},"content":" fieldName \u003d jsonReader.nextName();","lastModifiedDate":"2024-02-07"},{"lineNumber":72,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":73,"author":{"gitId":"yyccbb"},"content":" token \u003d jsonReader.peek();","lastModifiedDate":"2024-02-07"},{"lineNumber":74,"author":{"gitId":"yyccbb"},"content":" String by \u003d jsonReader.nextString();","lastModifiedDate":"2024-02-07"},{"lineNumber":75,"author":{"gitId":"yyccbb"},"content":" ret \u003d new DeadlineTask(taskName, by);","lastModifiedDate":"2024-02-07"},{"lineNumber":76,"author":{"gitId":"yyccbb"},"content":" ret.setIsCompleted(isCompleted);","lastModifiedDate":"2024-02-07"},{"lineNumber":77,"author":{"gitId":"yyccbb"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":78,"author":{"gitId":"yyccbb"},"content":" case \"EventTask\":","lastModifiedDate":"2024-02-07"},{"lineNumber":79,"author":{"gitId":"yyccbb"},"content":" token \u003d jsonReader.peek();","lastModifiedDate":"2024-02-07"},{"lineNumber":80,"author":{"gitId":"yyccbb"},"content":" fieldName \u003d jsonReader.nextName();","lastModifiedDate":"2024-02-07"},{"lineNumber":81,"author":{"gitId":"yyccbb"},"content":" token \u003d jsonReader.peek();","lastModifiedDate":"2024-02-07"},{"lineNumber":82,"author":{"gitId":"yyccbb"},"content":" String from \u003d jsonReader.nextString();","lastModifiedDate":"2024-02-07"},{"lineNumber":83,"author":{"gitId":"yyccbb"},"content":" token \u003d jsonReader.peek();","lastModifiedDate":"2024-02-07"},{"lineNumber":84,"author":{"gitId":"yyccbb"},"content":" fieldName \u003d jsonReader.nextName();","lastModifiedDate":"2024-02-07"},{"lineNumber":85,"author":{"gitId":"yyccbb"},"content":" token \u003d jsonReader.peek();","lastModifiedDate":"2024-02-07"},{"lineNumber":86,"author":{"gitId":"yyccbb"},"content":" String to \u003d jsonReader.nextString();","lastModifiedDate":"2024-02-07"},{"lineNumber":87,"author":{"gitId":"yyccbb"},"content":" ret \u003d new EventTask(taskName, from, to);","lastModifiedDate":"2024-02-07"},{"lineNumber":88,"author":{"gitId":"yyccbb"},"content":" ret.setIsCompleted(isCompleted);","lastModifiedDate":"2024-02-07"},{"lineNumber":89,"author":{"gitId":"yyccbb"},"content":" break;","lastModifiedDate":"2024-02-07"},{"lineNumber":90,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":91,"author":{"gitId":"yyccbb"},"content":"","lastModifiedDate":"2024-02-07"},{"lineNumber":92,"author":{"gitId":"yyccbb"},"content":" jsonReader.endObject();","lastModifiedDate":"2024-02-07"},{"lineNumber":93,"author":{"gitId":"yyccbb"},"content":" return ret;","lastModifiedDate":"2024-02-07"},{"lineNumber":94,"author":{"gitId":"yyccbb"},"content":" }","lastModifiedDate":"2024-02-07"},{"lineNumber":95,"author":{"gitId":"yyccbb"},"content":"}","lastModifiedDate":"2024-02-07"}],"authorContributionMap":{"yyccbb":95}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"yyccbb"},"content":"hello","lastModifiedDate":"2024-02-02"},{"lineNumber":2,"author":{"gitId":"yyccbb"},"content":"mark 2","lastModifiedDate":"2024-02-02"},{"lineNumber":3,"author":{"gitId":"yyccbb"},"content":"list","lastModifiedDate":"2024-02-02"},{"lineNumber":4,"author":{"gitId":"yyccbb"},"content":"deadline finish homework /by tomorrow","lastModifiedDate":"2024-02-02"},{"lineNumber":5,"author":{"gitId":"yyccbb"},"content":"deadline finish homework /by yesterday","lastModifiedDate":"2024-02-05"},{"lineNumber":6,"author":{"gitId":"yyccbb"},"content":"deadline finish homework /by","lastModifiedDate":"2024-02-05"},{"lineNumber":7,"author":{"gitId":"yyccbb"},"content":"event concert /from tomorrow 2200 /to tomorrow 2300","lastModifiedDate":"2024-02-02"},{"lineNumber":8,"author":{"gitId":"yyccbb"},"content":"mark 2 3","lastModifiedDate":"2024-02-02"},{"lineNumber":9,"author":{"gitId":"yyccbb"},"content":"mark 2","lastModifiedDate":"2024-02-02"},{"lineNumber":10,"author":{"gitId":"yyccbb"},"content":"list","lastModifiedDate":"2024-02-02"},{"lineNumber":11,"author":{"gitId":"yyccbb"},"content":"delete 4","lastModifiedDate":"2024-02-05"},{"lineNumber":12,"author":{"gitId":"yyccbb"},"content":"delete 2","lastModifiedDate":"2024-02-05"},{"lineNumber":13,"author":{"gitId":"yyccbb"},"content":"list","lastModifiedDate":"2024-02-05"},{"lineNumber":14,"author":{"gitId":"yyccbb"},"content":"bye","lastModifiedDate":"2024-02-02"}],"authorContributionMap":{"yyccbb":14}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"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":"yyccbb"},"content":"java -classpath ..\\bin App \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2024-02-02"},{"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":{"yyccbb":1,"-":20}}] diff --git a/yyccbb_ip_master/commits.json b/yyccbb_ip_master/commits.json index e4a09e32..2034f96e 100644 --- a/yyccbb_ip_master/commits.json +++ b/yyccbb_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yyccbb":[{"date":"2024-02-01","commitResults":[{"hash":"57f578c9ba9b529d3aacf03f2fdc0aaf6fc96f32","isMergeCommit":false,"messageTitle":"Rename to Nihao. Create App and PrintHandler classes.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"35557ddf0af25ad86bc7c3d75bf6dd94d607aa7a","isMergeCommit":false,"messageTitle":"Add echo functionality. Change personality.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}},{"hash":"99d83a55a7e90ca18268406001a0f561dec64b83","isMergeCommit":false,"messageTitle":"Add DataHandler class. Add temporary storage functionality.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":9}}},{"hash":"7c6e3e5a5243f79b5167f4aaa4481f81181fc174","isMergeCommit":false,"messageTitle":"Create action, exception and handler packages. Refactor action firing logic.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":121,"deletions":6}}},{"hash":"c9a8cd5be37be9e1fada6cb44967dbdc28fc1620","isMergeCommit":false,"messageTitle":"Add error handling. Add printed message for mark, unmark and list Actions.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":14}}},{"hash":"61523256ad807ad667ded3cc45fcf7096a27732c","isMergeCommit":false,"messageTitle":"Add support for todo deadline and event. Refactor TaskAction.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":149,"deletions":21}}}]},{"date":"2024-02-02","commitResults":[{"hash":"135582a508ba4017a9d1eedd814677a3c7d12e5f","isMergeCommit":false,"messageTitle":"Configure batch automated text UI testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-05","commitResults":[{"hash":"fddb6747875cd4bff7487f735abbc16e21d3a04e","isMergeCommit":false,"messageTitle":"Create 3 exception classes. Update test input.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":69,"deletions":48}}},{"hash":"bc9aa9dccde3d3576d2191064d93ad6a5bdd3957","isMergeCommit":false,"messageTitle":"Add delete task functionality. Update test cases accordingly.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":68,"deletions":28}}},{"hash":"5b6f5feec53df50584d7ab9bc0080bb73a02eb39","isMergeCommit":false,"messageTitle":"Use enums for commands","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":59}}}]}]},"authorFileTypeContributionMap":{"yyccbb":{"java":469,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":14}},"authorContributionVariance":{"yyccbb":19106.756},"authorDisplayNameMap":{"yyccbb":"CS2103T-T11-4 YU C..ENBO"}} +{"authorDailyContributionsMap":{"yyccbb":[{"date":"2024-02-01","commitResults":[{"hash":"57f578c9ba9b529d3aacf03f2fdc0aaf6fc96f32","isMergeCommit":false,"messageTitle":"Rename to Nihao. Create App and PrintHandler classes.","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":50,"deletions":10},"bat":{"insertions":1,"deletions":1},"md":{"insertions":2,"deletions":2}}},{"hash":"35557ddf0af25ad86bc7c3d75bf6dd94d607aa7a","isMergeCommit":false,"messageTitle":"Add echo functionality. Change personality.","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":3}}},{"hash":"99d83a55a7e90ca18268406001a0f561dec64b83","isMergeCommit":false,"messageTitle":"Add DataHandler class. Add temporary storage functionality.","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":40,"deletions":9}}},{"hash":"7c6e3e5a5243f79b5167f4aaa4481f81181fc174","isMergeCommit":false,"messageTitle":"Create action, exception and handler packages. Refactor action firing logic.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":121,"deletions":6}}},{"hash":"c9a8cd5be37be9e1fada6cb44967dbdc28fc1620","isMergeCommit":false,"messageTitle":"Add error handling. Add printed message for mark, unmark and list Actions.","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":65,"deletions":14}}},{"hash":"61523256ad807ad667ded3cc45fcf7096a27732c","isMergeCommit":false,"messageTitle":"Add support for todo deadline and event. Refactor TaskAction.","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":149,"deletions":21}}}]},{"date":"2024-02-02","commitResults":[{"hash":"135582a508ba4017a9d1eedd814677a3c7d12e5f","isMergeCommit":false,"messageTitle":"Configure batch automated text UI testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"bat":{"insertions":1,"deletions":1}}}]},{"date":"2024-02-05","commitResults":[{"hash":"fddb6747875cd4bff7487f735abbc16e21d3a04e","isMergeCommit":false,"messageTitle":"Create 3 exception classes. Update test input.","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"txt":{"insertions":2,"deletions":0},"java":{"insertions":69,"deletions":48}}},{"hash":"bc9aa9dccde3d3576d2191064d93ad6a5bdd3957","isMergeCommit":false,"messageTitle":"Add delete task functionality. Update test cases accordingly.","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"txt":{"insertions":3,"deletions":0},"java":{"insertions":68,"deletions":28}}},{"hash":"5b6f5feec53df50584d7ab9bc0080bb73a02eb39","isMergeCommit":false,"messageTitle":"Use enums for commands","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":80,"deletions":59}}}]},{"date":"2024-02-07","commitResults":[{"hash":"4a481c09d16f54e560474936dee7c3df858304a0","isMergeCommit":false,"messageTitle":"DataHandler class: support local data persistence","messageBody":"DataHandler class does not support local data persistence. The list of\ntasks created gets wiped away after one Nihao instance is closed.\n\nAdding support for local data persistence allows users to save the tasks\nso that they still can access them after closing the app.\n\nLet\u0027s use JSON serialization and deserialisation functionalities to load\nand save the list of tasks to a local JSON file.\n\nJSON is used because it is possibly easier for integration with\ndatabases.\n","fileTypesAndContributionMap":{"java":{"insertions":226,"deletions":47}}},{"hash":"c90a86edf0fdb287eb1817ee12ff436fd8e73329","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-Level-7\u0027","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yyccbb":{"java":648,"md":2,"fxml":0,"sh":0,"bat":1,"gradle":0,"txt":14}},"authorContributionVariance":{"yyccbb":19752.75},"authorDisplayNameMap":{"yyccbb":"CS2103T-T11-4 YU C..ENBO"}}